diff options
-rw-r--r-- | drivers/reset/sti/reset-stih415.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/drivers/reset/sti/reset-stih415.c b/drivers/reset/sti/reset-stih415.c index 56c214644dd9..e6f6c41abe12 100644 --- a/drivers/reset/sti/reset-stih415.c +++ b/drivers/reset/sti/reset-stih415.c | |||
@@ -31,12 +31,29 @@ static const char stih415_lpm[] = "st,stih415-lpm-syscfg"; | |||
31 | #define STIH415_PDN_REAR(_cntl, _stat) \ | 31 | #define STIH415_PDN_REAR(_cntl, _stat) \ |
32 | _SYSCFG_RST_CH(stih415_rear, SYSCFG_336, _cntl, SYSSTAT_384, _stat) | 32 | _SYSCFG_RST_CH(stih415_rear, SYSCFG_336, _cntl, SYSSTAT_384, _stat) |
33 | 33 | ||
34 | #define STIH415_SRST_REAR(_reg, _bit) \ | ||
35 | _SYSCFG_RST_CH_NO_ACK(stih415_rear, _reg, _bit) | ||
36 | |||
37 | #define STIH415_SRST_SBC(_reg, _bit) \ | ||
38 | _SYSCFG_RST_CH_NO_ACK(stih415_sbc, _reg, _bit) | ||
39 | |||
40 | #define STIH415_SRST_FRONT(_reg, _bit) \ | ||
41 | _SYSCFG_RST_CH_NO_ACK(stih415_front, _reg, _bit) | ||
42 | |||
43 | #define STIH415_SRST_LPM(_reg, _bit) \ | ||
44 | _SYSCFG_RST_CH_NO_ACK(stih415_lpm, _reg, _bit) | ||
45 | |||
34 | #define SYSCFG_114 0x38 /* Powerdown request EMI/NAND/Keyscan */ | 46 | #define SYSCFG_114 0x38 /* Powerdown request EMI/NAND/Keyscan */ |
35 | #define SYSSTAT_187 0x15c /* Powerdown status EMI/NAND/Keyscan */ | 47 | #define SYSSTAT_187 0x15c /* Powerdown status EMI/NAND/Keyscan */ |
36 | 48 | ||
37 | #define SYSCFG_336 0x90 /* Powerdown request USB/SATA/PCIe */ | 49 | #define SYSCFG_336 0x90 /* Powerdown request USB/SATA/PCIe */ |
38 | #define SYSSTAT_384 0x150 /* Powerdown status USB/SATA/PCIe */ | 50 | #define SYSSTAT_384 0x150 /* Powerdown status USB/SATA/PCIe */ |
39 | 51 | ||
52 | #define SYSCFG_376 0x130 /* Reset generator 0 control 0 */ | ||
53 | #define SYSCFG_166 0x108 /* Softreset Ethernet 0 */ | ||
54 | #define SYSCFG_31 0x7c /* Softreset Ethernet 1 */ | ||
55 | #define LPM_SYSCFG_1 0x4 /* Softreset IRB */ | ||
56 | |||
40 | static const struct syscfg_reset_channel_data stih415_powerdowns[] = { | 57 | static const struct syscfg_reset_channel_data stih415_powerdowns[] = { |
41 | [STIH415_EMISS_POWERDOWN] = STIH415_PDN_FRONT(0), | 58 | [STIH415_EMISS_POWERDOWN] = STIH415_PDN_FRONT(0), |
42 | [STIH415_NAND_POWERDOWN] = STIH415_PDN_FRONT(1), | 59 | [STIH415_NAND_POWERDOWN] = STIH415_PDN_FRONT(1), |
@@ -49,15 +66,33 @@ static const struct syscfg_reset_channel_data stih415_powerdowns[] = { | |||
49 | [STIH415_PCIE_POWERDOWN] = STIH415_PDN_REAR(5, 8), | 66 | [STIH415_PCIE_POWERDOWN] = STIH415_PDN_REAR(5, 8), |
50 | }; | 67 | }; |
51 | 68 | ||
69 | static const struct syscfg_reset_channel_data stih415_softresets[] = { | ||
70 | [STIH415_ETH0_SOFTRESET] = STIH415_SRST_FRONT(SYSCFG_166, 0), | ||
71 | [STIH415_ETH1_SOFTRESET] = STIH415_SRST_SBC(SYSCFG_31, 0), | ||
72 | [STIH415_IRB_SOFTRESET] = STIH415_SRST_LPM(LPM_SYSCFG_1, 6), | ||
73 | [STIH415_USB0_SOFTRESET] = STIH415_SRST_REAR(SYSCFG_376, 9), | ||
74 | [STIH415_USB1_SOFTRESET] = STIH415_SRST_REAR(SYSCFG_376, 10), | ||
75 | [STIH415_USB2_SOFTRESET] = STIH415_SRST_REAR(SYSCFG_376, 11), | ||
76 | }; | ||
77 | |||
52 | static struct syscfg_reset_controller_data stih415_powerdown_controller = { | 78 | static struct syscfg_reset_controller_data stih415_powerdown_controller = { |
53 | .wait_for_ack = true, | 79 | .wait_for_ack = true, |
54 | .nr_channels = ARRAY_SIZE(stih415_powerdowns), | 80 | .nr_channels = ARRAY_SIZE(stih415_powerdowns), |
55 | .channels = stih415_powerdowns, | 81 | .channels = stih415_powerdowns, |
56 | }; | 82 | }; |
57 | 83 | ||
84 | static struct syscfg_reset_controller_data stih415_softreset_controller = { | ||
85 | .wait_for_ack = false, | ||
86 | .active_low = true, | ||
87 | .nr_channels = ARRAY_SIZE(stih415_softresets), | ||
88 | .channels = stih415_softresets, | ||
89 | }; | ||
90 | |||
58 | static struct of_device_id stih415_reset_match[] = { | 91 | static struct of_device_id stih415_reset_match[] = { |
59 | { .compatible = "st,stih415-powerdown", | 92 | { .compatible = "st,stih415-powerdown", |
60 | .data = &stih415_powerdown_controller, }, | 93 | .data = &stih415_powerdown_controller, }, |
94 | { .compatible = "st,stih415-softreset", | ||
95 | .data = &stih415_softreset_controller, }, | ||
61 | {}, | 96 | {}, |
62 | }; | 97 | }; |
63 | 98 | ||