|
25 | 25 | #include <linux/module.h>
|
26 | 26 | #include <linux/platform_device.h>
|
27 | 27 | #include <linux/io.h>
|
| 28 | +#include <linux/of.h> |
28 | 29 |
|
29 | 30 | #include <soc/tegra/ahb.h>
|
30 | 31 |
|
31 | 32 | #define DRV_NAME "tegra-ahb"
|
32 | 33 |
|
33 |
| -#define AHB_ARBITRATION_DISABLE 0x00 |
34 |
| -#define AHB_ARBITRATION_PRIORITY_CTRL 0x04 |
| 34 | +#define AHB_ARBITRATION_DISABLE 0x04 |
| 35 | +#define AHB_ARBITRATION_PRIORITY_CTRL 0x08 |
35 | 36 | #define AHB_PRIORITY_WEIGHT(x) (((x) & 0x7) << 29)
|
36 | 37 | #define PRIORITY_SELECT_USB BIT(6)
|
37 | 38 | #define PRIORITY_SELECT_USB2 BIT(18)
|
38 | 39 | #define PRIORITY_SELECT_USB3 BIT(17)
|
39 | 40 |
|
40 |
| -#define AHB_GIZMO_AHB_MEM 0x0c |
| 41 | +#define AHB_GIZMO_AHB_MEM 0x10 |
41 | 42 | #define ENB_FAST_REARBITRATE BIT(2)
|
42 | 43 | #define DONT_SPLIT_AHB_WR BIT(7)
|
43 | 44 |
|
44 |
| -#define AHB_GIZMO_APB_DMA 0x10 |
45 |
| -#define AHB_GIZMO_IDE 0x18 |
46 |
| -#define AHB_GIZMO_USB 0x1c |
47 |
| -#define AHB_GIZMO_AHB_XBAR_BRIDGE 0x20 |
48 |
| -#define AHB_GIZMO_CPU_AHB_BRIDGE 0x24 |
49 |
| -#define AHB_GIZMO_COP_AHB_BRIDGE 0x28 |
50 |
| -#define AHB_GIZMO_XBAR_APB_CTLR 0x2c |
51 |
| -#define AHB_GIZMO_VCP_AHB_BRIDGE 0x30 |
52 |
| -#define AHB_GIZMO_NAND 0x3c |
53 |
| -#define AHB_GIZMO_SDMMC4 0x44 |
54 |
| -#define AHB_GIZMO_XIO 0x48 |
55 |
| -#define AHB_GIZMO_BSEV 0x60 |
56 |
| -#define AHB_GIZMO_BSEA 0x70 |
57 |
| -#define AHB_GIZMO_NOR 0x74 |
58 |
| -#define AHB_GIZMO_USB2 0x78 |
59 |
| -#define AHB_GIZMO_USB3 0x7c |
| 45 | +#define AHB_GIZMO_APB_DMA 0x14 |
| 46 | +#define AHB_GIZMO_IDE 0x1c |
| 47 | +#define AHB_GIZMO_USB 0x20 |
| 48 | +#define AHB_GIZMO_AHB_XBAR_BRIDGE 0x24 |
| 49 | +#define AHB_GIZMO_CPU_AHB_BRIDGE 0x28 |
| 50 | +#define AHB_GIZMO_COP_AHB_BRIDGE 0x2c |
| 51 | +#define AHB_GIZMO_XBAR_APB_CTLR 0x30 |
| 52 | +#define AHB_GIZMO_VCP_AHB_BRIDGE 0x34 |
| 53 | +#define AHB_GIZMO_NAND 0x40 |
| 54 | +#define AHB_GIZMO_SDMMC4 0x48 |
| 55 | +#define AHB_GIZMO_XIO 0x4c |
| 56 | +#define AHB_GIZMO_BSEV 0x64 |
| 57 | +#define AHB_GIZMO_BSEA 0x74 |
| 58 | +#define AHB_GIZMO_NOR 0x78 |
| 59 | +#define AHB_GIZMO_USB2 0x7c |
| 60 | +#define AHB_GIZMO_USB3 0x80 |
60 | 61 | #define IMMEDIATE BIT(18)
|
61 | 62 |
|
62 |
| -#define AHB_GIZMO_SDMMC1 0x80 |
63 |
| -#define AHB_GIZMO_SDMMC2 0x84 |
64 |
| -#define AHB_GIZMO_SDMMC3 0x88 |
65 |
| -#define AHB_MEM_PREFETCH_CFG_X 0xd8 |
66 |
| -#define AHB_ARBITRATION_XBAR_CTRL 0xdc |
67 |
| -#define AHB_MEM_PREFETCH_CFG3 0xe0 |
68 |
| -#define AHB_MEM_PREFETCH_CFG4 0xe4 |
69 |
| -#define AHB_MEM_PREFETCH_CFG1 0xec |
70 |
| -#define AHB_MEM_PREFETCH_CFG2 0xf0 |
| 63 | +#define AHB_GIZMO_SDMMC1 0x84 |
| 64 | +#define AHB_GIZMO_SDMMC2 0x88 |
| 65 | +#define AHB_GIZMO_SDMMC3 0x8c |
| 66 | +#define AHB_MEM_PREFETCH_CFG_X 0xdc |
| 67 | +#define AHB_ARBITRATION_XBAR_CTRL 0xe0 |
| 68 | +#define AHB_MEM_PREFETCH_CFG3 0xe4 |
| 69 | +#define AHB_MEM_PREFETCH_CFG4 0xe8 |
| 70 | +#define AHB_MEM_PREFETCH_CFG1 0xf0 |
| 71 | +#define AHB_MEM_PREFETCH_CFG2 0xf4 |
71 | 72 | #define PREFETCH_ENB BIT(31)
|
72 | 73 | #define MST_ID(x) (((x) & 0x1f) << 26)
|
73 | 74 | #define AHBDMA_MST_ID MST_ID(5)
|
|
77 | 78 | #define ADDR_BNDRY(x) (((x) & 0xf) << 21)
|
78 | 79 | #define INACTIVITY_TIMEOUT(x) (((x) & 0xffff) << 0)
|
79 | 80 |
|
80 |
| -#define AHB_ARBITRATION_AHB_MEM_WRQUE_MST_ID 0xf8 |
| 81 | +#define AHB_ARBITRATION_AHB_MEM_WRQUE_MST_ID 0xfc |
81 | 82 |
|
82 | 83 | #define AHB_ARBITRATION_XBAR_CTRL_SMMU_INIT_DONE BIT(17)
|
83 | 84 |
|
@@ -123,12 +124,12 @@ struct tegra_ahb {
|
123 | 124 |
|
124 | 125 | static inline u32 gizmo_readl(struct tegra_ahb *ahb, u32 offset)
|
125 | 126 | {
|
126 |
| - return readl(ahb->regs + offset); |
| 127 | + return readl(ahb->regs - 4 + offset); |
127 | 128 | }
|
128 | 129 |
|
129 | 130 | static inline void gizmo_writel(struct tegra_ahb *ahb, u32 value, u32 offset)
|
130 | 131 | {
|
131 |
| - writel(value, ahb->regs + offset); |
| 132 | + writel(value, ahb->regs - 4 + offset); |
132 | 133 | }
|
133 | 134 |
|
134 | 135 | #ifdef CONFIG_TEGRA_IOMMU_SMMU
|
|
0 commit comments