@@ -89,17 +89,19 @@ static void stm32l4_dma_track(uint32_t channel, uint32_t address)
89
89
{
90
90
if (address < 0x40000000 )
91
91
{
92
+ uint32_t mask = (1ul << (channel & 15 ));
93
+
92
94
if (address >= 0x20000000 )
93
95
{
94
- stm32l4_system_periph_cond_wake (SYSTEM_PERIPH_SRAM1 , & stm32l4_dma_driver .sram1 , ( 1ul << channel ) );
96
+ stm32l4_system_periph_cond_wake (SYSTEM_PERIPH_SRAM1 , & stm32l4_dma_driver .sram1 , mask );
95
97
}
96
98
else if (address >= 0x10000000 )
97
99
{
98
- stm32l4_system_periph_cond_wake (SYSTEM_PERIPH_SRAM2 , & stm32l4_dma_driver .sram2 , ( 1ul << channel ) );
100
+ stm32l4_system_periph_cond_wake (SYSTEM_PERIPH_SRAM2 , & stm32l4_dma_driver .sram2 , mask );
99
101
}
100
102
else
101
103
{
102
- stm32l4_system_periph_cond_wake (SYSTEM_PERIPH_FLASH , & stm32l4_dma_driver .flash , ( 1ul << channel ) );
104
+ stm32l4_system_periph_cond_wake (SYSTEM_PERIPH_FLASH , & stm32l4_dma_driver .flash , mask );
103
105
}
104
106
}
105
107
}
@@ -108,17 +110,19 @@ static void stm32l4_dma_untrack(uint32_t channel, uint32_t address)
108
110
{
109
111
if (address < 0x40000000 )
110
112
{
113
+ uint32_t mask = (1ul << (channel & 15 ));
114
+
111
115
if (address >= 0x20000000 )
112
116
{
113
- stm32l4_system_periph_cond_sleep (SYSTEM_PERIPH_SRAM1 , & stm32l4_dma_driver .sram1 , ( 1ul << channel ) );
117
+ stm32l4_system_periph_cond_sleep (SYSTEM_PERIPH_SRAM1 , & stm32l4_dma_driver .sram1 , mask );
114
118
}
115
119
else if (address >= 0x10000000 )
116
120
{
117
- stm32l4_system_periph_cond_sleep (SYSTEM_PERIPH_SRAM2 , & stm32l4_dma_driver .sram2 , ( 1ul << channel ) );
121
+ stm32l4_system_periph_cond_sleep (SYSTEM_PERIPH_SRAM2 , & stm32l4_dma_driver .sram2 , mask );
118
122
}
119
123
else
120
124
{
121
- stm32l4_system_periph_cond_sleep (SYSTEM_PERIPH_FLASH , & stm32l4_dma_driver .flash , ( 1ul << channel ) );
125
+ stm32l4_system_periph_cond_sleep (SYSTEM_PERIPH_FLASH , & stm32l4_dma_driver .flash , mask );
122
126
}
123
127
}
124
128
}
0 commit comments