Skip to content

Commit 4cac658

Browse files
committed
soc: sensry: fix irq enable/disable
SET/CLR registers are write-only so trying to read/modify/write is inefficient & illegal Signed-off-by: Benjamin Cabé <[email protected]>
1 parent a933fb7 commit 4cac658

File tree

1 file changed

+3
-6
lines changed
  • soc/sensry/ganymed/sy1xx/common

1 file changed

+3
-6
lines changed

soc/sensry/ganymed/sy1xx/common/soc.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ LOG_MODULE_REGISTER(soc);
2525
#define SY1XX_ARCHI_ITC_ACK_SET_OFFSET 0x1c
2626
#define SY1XX_ARCHI_ITC_ACK_CLR_OFFSET 0x20
2727
#define SY1XX_ARCHI_ITC_FIFO_OFFSET 0x24
28+
#define SY1XX_ARCHI_ITC_IRQ_MASK 0x1f
2829

2930
void sys_arch_reboot(int type)
3031
{
@@ -51,17 +52,13 @@ void riscv_clic_irq_priority_set(uint32_t irq, uint32_t prio, uint32_t flags)
5152

5253
void soc_enable_irq(uint32_t idx)
5354
{
54-
uint32_t current = sys_read32(SY1XX_ARCHI_FC_ITC_ADDR + SY1XX_ARCHI_ITC_MASK_SET_OFFSET);
55-
56-
sys_write32(current | (1 << (idx & 0x1f)),
55+
sys_write32(BIT(idx & SY1XX_ARCHI_ITC_IRQ_MASK),
5756
SY1XX_ARCHI_FC_ITC_ADDR + SY1XX_ARCHI_ITC_MASK_SET_OFFSET);
5857
}
5958

6059
void soc_disable_irq(uint32_t idx)
6160
{
62-
uint32_t current = sys_read32(SY1XX_ARCHI_FC_ITC_ADDR + SY1XX_ARCHI_ITC_MASK_CLR_OFFSET);
63-
64-
sys_write32(current & (~(1 << (idx & 0x1f))),
61+
sys_write32(BIT(idx & SY1XX_ARCHI_ITC_IRQ_MASK),
6562
SY1XX_ARCHI_FC_ITC_ADDR + SY1XX_ARCHI_ITC_MASK_CLR_OFFSET);
6663
}
6764

0 commit comments

Comments
 (0)