@@ -171,10 +171,9 @@ static int gpio_dw_pin_interrupt_configure(const struct device *port,
171
171
enum gpio_int_mode mode ,
172
172
enum gpio_int_trig trig )
173
173
{
174
- struct gpio_dw_runtime * context = port -> data ;
175
174
const struct gpio_dw_config * config = port -> config ;
176
- uint32_t base_addr = dw_base_to_block_base (context -> base_addr );
177
- uint32_t port_base_addr = context -> base_addr ;
175
+ uint32_t base_addr = dw_base_to_block_base (config -> base_addr );
176
+ uint32_t port_base_addr = config -> base_addr ;
178
177
uint32_t dir_port = dw_get_dir_port (port_base_addr );
179
178
uint32_t data_port = dw_get_data_port (port_base_addr );
180
179
uint32_t dir_reg ;
@@ -235,10 +234,9 @@ static int gpio_dw_pin_interrupt_configure(const struct device *port,
235
234
static inline void dw_pin_config (const struct device * port ,
236
235
uint32_t pin , int flags )
237
236
{
238
- struct gpio_dw_runtime * context = port -> data ;
239
237
const struct gpio_dw_config * config = port -> config ;
240
- uint32_t base_addr = dw_base_to_block_base (context -> base_addr );
241
- uint32_t port_base_addr = context -> base_addr ;
238
+ uint32_t base_addr = dw_base_to_block_base (config -> base_addr );
239
+ uint32_t port_base_addr = config -> base_addr ;
242
240
uint32_t dir_port = dw_get_dir_port (port_base_addr );
243
241
bool pin_is_output , need_debounce ;
244
242
@@ -267,11 +265,9 @@ static inline void dw_pin_config(const struct device *port,
267
265
268
266
static void gpio_dw_set_hw_mode (const struct device * port , gpio_pin_t pin , bool hw_mode )
269
267
{
270
- struct gpio_dw_runtime * context = port -> data ;
271
- __unused const struct gpio_driver_config * const cfg =
272
- (const struct gpio_driver_config * )port -> config ;
273
- uint32_t base_addr = dw_base_to_block_base (context -> base_addr );
274
- uint32_t port_id = dw_derive_port_from_base (context -> base_addr );
268
+ const struct gpio_dw_config * config = port -> config ;
269
+ uint32_t base_addr = dw_base_to_block_base (config -> base_addr );
270
+ uint32_t port_id = dw_derive_port_from_base (config -> base_addr );
275
271
uint32_t ctl_port ;
276
272
277
273
/* 4-port GPIO implementation translates from base address to port */
@@ -339,9 +335,9 @@ static inline int gpio_dw_config(const struct device *port,
339
335
340
336
static int gpio_dw_port_get_raw (const struct device * port , uint32_t * value )
341
337
{
342
- struct gpio_dw_runtime * context = port -> data ;
343
- uint32_t base_addr = dw_base_to_block_base (context -> base_addr );
344
- uint32_t port_base_addr = context -> base_addr ;
338
+ const struct gpio_dw_config * config = port -> config ;
339
+ uint32_t base_addr = dw_base_to_block_base (config -> base_addr );
340
+ uint32_t port_base_addr = config -> base_addr ;
345
341
uint32_t ext_port = dw_get_ext_port (port_base_addr );
346
342
347
343
* value = dw_read (base_addr , ext_port );
@@ -352,9 +348,9 @@ static int gpio_dw_port_get_raw(const struct device *port, uint32_t *value)
352
348
static int gpio_dw_port_set_masked_raw (const struct device * port ,
353
349
uint32_t mask , uint32_t value )
354
350
{
355
- struct gpio_dw_runtime * context = port -> data ;
356
- uint32_t base_addr = dw_base_to_block_base (context -> base_addr );
357
- uint32_t port_base_addr = context -> base_addr ;
351
+ const struct gpio_dw_config * config = port -> config ;
352
+ uint32_t base_addr = dw_base_to_block_base (config -> base_addr );
353
+ uint32_t port_base_addr = config -> base_addr ;
358
354
uint32_t data_port = dw_get_data_port (port_base_addr );
359
355
uint32_t pins ;
360
356
@@ -367,9 +363,9 @@ static int gpio_dw_port_set_masked_raw(const struct device *port,
367
363
368
364
static int gpio_dw_port_set_bits_raw (const struct device * port , uint32_t mask )
369
365
{
370
- struct gpio_dw_runtime * context = port -> data ;
371
- uint32_t base_addr = dw_base_to_block_base (context -> base_addr );
372
- uint32_t port_base_addr = context -> base_addr ;
366
+ const struct gpio_dw_config * config = port -> config ;
367
+ uint32_t base_addr = dw_base_to_block_base (config -> base_addr );
368
+ uint32_t port_base_addr = config -> base_addr ;
373
369
uint32_t data_port = dw_get_data_port (port_base_addr );
374
370
uint32_t pins ;
375
371
@@ -383,9 +379,9 @@ static int gpio_dw_port_set_bits_raw(const struct device *port, uint32_t mask)
383
379
static int gpio_dw_port_clear_bits_raw (const struct device * port ,
384
380
uint32_t mask )
385
381
{
386
- struct gpio_dw_runtime * context = port -> data ;
387
- uint32_t base_addr = dw_base_to_block_base (context -> base_addr );
388
- uint32_t port_base_addr = context -> base_addr ;
382
+ const struct gpio_dw_config * config = port -> config ;
383
+ uint32_t base_addr = dw_base_to_block_base (config -> base_addr );
384
+ uint32_t port_base_addr = config -> base_addr ;
389
385
uint32_t data_port = dw_get_data_port (port_base_addr );
390
386
uint32_t pins ;
391
387
@@ -398,9 +394,9 @@ static int gpio_dw_port_clear_bits_raw(const struct device *port,
398
394
399
395
static int gpio_dw_port_toggle_bits (const struct device * port , uint32_t mask )
400
396
{
401
- struct gpio_dw_runtime * context = port -> data ;
402
- uint32_t base_addr = dw_base_to_block_base (context -> base_addr );
403
- uint32_t port_base_addr = context -> base_addr ;
397
+ const struct gpio_dw_config * config = port -> config ;
398
+ uint32_t base_addr = dw_base_to_block_base (config -> base_addr );
399
+ uint32_t port_base_addr = config -> base_addr ;
404
400
uint32_t data_port = dw_get_data_port (port_base_addr );
405
401
uint32_t pins ;
406
402
@@ -424,7 +420,8 @@ static inline int gpio_dw_manage_callback(const struct device *port,
424
420
static void gpio_dw_isr (const struct device * port )
425
421
{
426
422
struct gpio_dw_runtime * context = port -> data ;
427
- uint32_t base_addr = dw_base_to_block_base (context -> base_addr );
423
+ const struct gpio_dw_config * config = port -> config ;
424
+ uint32_t base_addr = dw_base_to_block_base (config -> base_addr );
428
425
uint32_t int_status ;
429
426
430
427
int_status = dw_read (base_addr , INTSTATUS );
@@ -448,13 +445,12 @@ static DEVICE_API(gpio, api_funcs) = {
448
445
449
446
static int gpio_dw_initialize (const struct device * port )
450
447
{
451
- struct gpio_dw_runtime * context = port -> data ;
452
448
const struct gpio_dw_config * config = port -> config ;
453
449
uint32_t base_addr ;
454
450
455
451
if (dw_interrupt_support (config )) {
456
452
457
- base_addr = dw_base_to_block_base (context -> base_addr );
453
+ base_addr = dw_base_to_block_base (config -> base_addr );
458
454
459
455
/* interrupts in sync with system clock */
460
456
dw_set_bit (base_addr , INT_CLOCK_SYNC , LS_SYNC_POS , 1 );
@@ -491,14 +487,13 @@ static int gpio_dw_initialize(const struct device *port)
491
487
.common = { \
492
488
.port_pin_mask = GPIO_PORT_PIN_MASK_FROM_DT_INST(n), \
493
489
}, \
490
+ .base_addr = DT_INST_REG_ADDR(n), \
494
491
.irq_num = COND_CODE_1(DT_INST_IRQ_HAS_IDX(n, 0), (DT_INST_IRQN(n)), (0)), \
495
492
.ngpios = DT_INST_PROP(n, ngpios), \
496
493
.config_func = gpio_config_##n##_irq, \
497
494
}; \
498
495
\
499
- static struct gpio_dw_runtime gpio_##n##_runtime = { \
500
- .base_addr = DT_INST_REG_ADDR(n), \
501
- }; \
496
+ static struct gpio_dw_runtime gpio_##n##_runtime; \
502
497
\
503
498
DEVICE_DT_INST_DEFINE(n, gpio_dw_initialize, NULL, &gpio_##n##_runtime, \
504
499
&gpio_dw_config_##n, PRE_KERNEL_1, \
0 commit comments