@@ -144,8 +144,9 @@ static void stm32_create_timer_dev(
144
144
DeviceState * afio_dev ,
145
145
hwaddr addr ,
146
146
qemu_irq * irq ,
147
- int num_irqs )
147
+ int num_irqs )
148
148
{
149
+ int i ;
149
150
char child_name [9 ];
150
151
DeviceState * timer_dev = qdev_create (NULL , "stm32-timer" );
151
152
QDEV_PROP_SET_PERIPH_T (timer_dev , "periph" , periph );
@@ -154,7 +155,12 @@ static void stm32_create_timer_dev(
154
155
qdev_prop_set_ptr (timer_dev , "stm32_afio" , afio_dev );
155
156
snprintf (child_name , sizeof (child_name ), "timer[%i]" , timer_num );
156
157
object_property_add_child (stm32_container , child_name , OBJECT (timer_dev ), NULL );
157
- stm32_init_periph (timer_dev , periph , addr , irq , num_irqs );
158
+ stm32_init_periph (timer_dev , periph , addr , NULL );
159
+ for (i = 0 ; i < num_irqs ; i ++ ) {
160
+ if (irq [i ]) {
161
+ sysbus_connect_irq (SYS_BUS_DEVICE (timer_dev ), 0 , irq [i ]);
162
+ }
163
+ }
158
164
}
159
165
160
166
@@ -203,7 +209,7 @@ void stm32_init(
203
209
qdev_prop_set_uint32 (rcc_dev , "osc_freq" , osc_freq );
204
210
qdev_prop_set_uint32 (rcc_dev , "osc32_freq" , osc32_freq );
205
211
object_property_add_child (stm32_container , "rcc" , OBJECT (rcc_dev ), NULL );
206
- stm32_init_periph (rcc_dev , STM32_RCC , 0x40021000 , pic [STM32_RCC_IRQ ]);
212
+ stm32_init_periph (rcc_dev , STM32_RCC_PERIPH , 0x40021000 , pic [STM32_RCC_IRQ ]);
207
213
208
214
DeviceState * * gpio_dev = (DeviceState * * )g_malloc0 (sizeof (DeviceState * ) * STM32_GPIO_COUNT );
209
215
for (i = 0 ; i < STM32_GPIO_COUNT ; i ++ ) {
@@ -219,7 +225,7 @@ void stm32_init(
219
225
220
226
DeviceState * exti_dev = qdev_create (NULL , TYPE_STM32_EXTI );
221
227
object_property_add_child (stm32_container , "exti" , OBJECT (exti_dev ), NULL );
222
- stm32_init_periph (exti_dev , STM32_EXTI , 0x40010400 , NULL );
228
+ stm32_init_periph (exti_dev , STM32_EXTI_PERIPH , 0x40010400 , NULL );
223
229
SysBusDevice * exti_busdev = SYS_BUS_DEVICE (exti_dev );
224
230
sysbus_connect_irq (exti_busdev , 0 , pic [STM32_EXTI0_IRQ ]);
225
231
sysbus_connect_irq (exti_busdev , 1 , pic [STM32_EXTI1_IRQ ]);
@@ -250,15 +256,13 @@ void stm32_init(
250
256
stm32_create_uart_dev (stm32_container , STM32_UART3 , 3 , rcc_dev , gpio_dev , afio_dev , 0x40004800 , pic [STM32_UART3_IRQ ]);
251
257
stm32_create_uart_dev (stm32_container , STM32_UART4 , 4 , rcc_dev , gpio_dev , afio_dev , 0x40004c00 , pic [STM32_UART4_IRQ ]);
252
258
stm32_create_uart_dev (stm32_container , STM32_UART5 , 5 , rcc_dev , gpio_dev , afio_dev , 0x40005000 , pic [STM32_UART5_IRQ ]);
253
-
254
- qemu_irq tim1_irqs [] = { pic [TIM1_BRK_IRQn ], pic [TIM1_UP_IRQn ], pic [TIM1_TRG_COM_IRQn ],
255
- pic [TIM1_CC_IRQn ]};
256
- stm32_create_timer_dev (stm32_container , STM32_TIM1 , 1 , rcc_dev , gpio_dev , afio_dev , 0x40012C00 , tim1_irqs , 5 );
257
-
258
- stm32_create_timer_dev (stm32_container , STM32_TIM2 , 1 , rcc_dev , gpio_dev , afio_dev , 0x40000000 , pic [TIM2_IRQn ], 1 );
259
- stm32_create_timer_dev (stm32_container , STM32_TIM3 , 1 , rcc_dev , gpio_dev , afio_dev , 0x40000400 , pic [TIM3_IRQn ], 1 );
260
- stm32_create_timer_dev (stm32_container , STM32_TIM4 , 1 , rcc_dev , gpio_dev , afio_dev , 0x40000800 , pic [TIM4_IRQn ], 1 );
261
- stm32_create_timer_dev (stm32_container , STM32_TIM5 , 1 , rcc_dev , gpio_dev , afio_dev , 0x40000C00 , pic [TIM5_IRQn ], 1 );
262
259
260
+ qemu_irq tim1_irqs [] = { pic [TIM1_BRK_IRQn ], pic [TIM1_UP_IRQn ], pic [TIM1_TRG_COM_IRQn ],
261
+ pic [TIM1_CC_IRQn ]};
262
+ stm32_create_timer_dev (stm32_container , STM32_TIM1 , 1 , rcc_dev , gpio_dev , afio_dev , 0x40012C00 , tim1_irqs , 5 );
263
263
264
+ stm32_create_timer_dev (stm32_container , STM32_TIM2 , 1 , rcc_dev , gpio_dev , afio_dev , 0x40000000 , & pic [TIM2_IRQn ], 1 );
265
+ stm32_create_timer_dev (stm32_container , STM32_TIM3 , 1 , rcc_dev , gpio_dev , afio_dev , 0x40000400 , & pic [TIM3_IRQn ], 1 );
266
+ stm32_create_timer_dev (stm32_container , STM32_TIM4 , 1 , rcc_dev , gpio_dev , afio_dev , 0x40000800 , & pic [TIM4_IRQn ], 1 );
267
+ stm32_create_timer_dev (stm32_container , STM32_TIM5 , 1 , rcc_dev , gpio_dev , afio_dev , 0x40000C00 , & pic [TIM5_IRQn ], 1 );
264
268
}
0 commit comments