提交 b38040f0 编写于 作者: A Alexandre Torgue 提交者: Marc Zyngier

irqchip/stm32-exti: Tag emr register as undefined for stm32mp15

The reference manual RM0436 of stm32mp15 till version v4.0 was
erroneously reporting the Event Mask Registers (EMR) for the
Cortex-A CPUs.
These registers have been removed from v5.0 of the manual and the
corresponding offsets have been marked as 'Reserved'.

Prevent accessing these reserved addresses by tagging the EMR
offsets as UNDEF_REG and modifying the code to handle this case.
Signed-off-by: NAlexandre Torgue <alexandre.torgue@foss.st.com>
Signed-off-by: NAntonio Borneo <antonio.borneo@foss.st.com>
Signed-off-by: NMarc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20220606162757.415354-5-antonio.borneo@foss.st.com
上级 c16ae609
...@@ -132,7 +132,7 @@ static const struct stm32_exti_drv_data stm32h7xx_drv_data = { ...@@ -132,7 +132,7 @@ static const struct stm32_exti_drv_data stm32h7xx_drv_data = {
static const struct stm32_exti_bank stm32mp1_exti_b1 = { static const struct stm32_exti_bank stm32mp1_exti_b1 = {
.imr_ofst = 0x80, .imr_ofst = 0x80,
.emr_ofst = 0x84, .emr_ofst = UNDEF_REG,
.rtsr_ofst = 0x00, .rtsr_ofst = 0x00,
.ftsr_ofst = 0x04, .ftsr_ofst = 0x04,
.swier_ofst = 0x08, .swier_ofst = 0x08,
...@@ -142,7 +142,7 @@ static const struct stm32_exti_bank stm32mp1_exti_b1 = { ...@@ -142,7 +142,7 @@ static const struct stm32_exti_bank stm32mp1_exti_b1 = {
static const struct stm32_exti_bank stm32mp1_exti_b2 = { static const struct stm32_exti_bank stm32mp1_exti_b2 = {
.imr_ofst = 0x90, .imr_ofst = 0x90,
.emr_ofst = 0x94, .emr_ofst = UNDEF_REG,
.rtsr_ofst = 0x20, .rtsr_ofst = 0x20,
.ftsr_ofst = 0x24, .ftsr_ofst = 0x24,
.swier_ofst = 0x28, .swier_ofst = 0x28,
...@@ -152,7 +152,7 @@ static const struct stm32_exti_bank stm32mp1_exti_b2 = { ...@@ -152,7 +152,7 @@ static const struct stm32_exti_bank stm32mp1_exti_b2 = {
static const struct stm32_exti_bank stm32mp1_exti_b3 = { static const struct stm32_exti_bank stm32mp1_exti_b3 = {
.imr_ofst = 0xA0, .imr_ofst = 0xA0,
.emr_ofst = 0xA4, .emr_ofst = UNDEF_REG,
.rtsr_ofst = 0x40, .rtsr_ofst = 0x40,
.ftsr_ofst = 0x44, .ftsr_ofst = 0x44,
.swier_ofst = 0x48, .swier_ofst = 0x48,
...@@ -795,7 +795,8 @@ stm32_exti_chip_data *stm32_exti_chip_init(struct stm32_exti_host_data *h_data, ...@@ -795,7 +795,8 @@ stm32_exti_chip_data *stm32_exti_chip_init(struct stm32_exti_host_data *h_data,
* clear registers to avoid residue * clear registers to avoid residue
*/ */
writel_relaxed(0, base + stm32_bank->imr_ofst); writel_relaxed(0, base + stm32_bank->imr_ofst);
writel_relaxed(0, base + stm32_bank->emr_ofst); if (stm32_bank->emr_ofst != UNDEF_REG)
writel_relaxed(0, base + stm32_bank->emr_ofst);
pr_info("%pOF: bank%d\n", node, bank_idx); pr_info("%pOF: bank%d\n", node, bank_idx);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册