60
60
#define MISC_A_EN BIT(0)
61
61
62
62
#define MESON_NUM_PWMS 2
63
- #define MESON_MAX_MUX_PARENTS 4
63
+ #define MESON_NUM_MUX_PARENTS 4
64
64
65
65
static struct meson_pwm_channel_data {
66
66
u8 reg_offset ;
@@ -97,8 +97,7 @@ struct meson_pwm_channel {
97
97
};
98
98
99
99
struct meson_pwm_data {
100
- const char * const * parent_names ;
101
- unsigned int num_parents ;
100
+ const char * const parent_names [MESON_NUM_MUX_PARENTS ];
102
101
};
103
102
104
103
struct meson_pwm {
@@ -339,62 +338,32 @@ static const struct pwm_ops meson_pwm_ops = {
339
338
.get_state = meson_pwm_get_state ,
340
339
};
341
340
342
- static const char * const pwm_meson8b_parent_names [] = {
343
- "xtal" , NULL , "fclk_div4" , "fclk_div3"
344
- };
345
-
346
341
static const struct meson_pwm_data pwm_meson8b_data = {
347
- .parent_names = pwm_meson8b_parent_names ,
348
- .num_parents = ARRAY_SIZE (pwm_meson8b_parent_names ),
342
+ .parent_names = { "xtal" , NULL , "fclk_div4" , "fclk_div3" },
349
343
};
350
344
351
345
/*
352
346
* Only the 2 first inputs of the GXBB AO PWMs are valid
353
347
* The last 2 are grounded
354
348
*/
355
- static const char * const pwm_gxbb_ao_parent_names [] = {
356
- "xtal" , "clk81"
357
- };
358
-
359
349
static const struct meson_pwm_data pwm_gxbb_ao_data = {
360
- .parent_names = pwm_gxbb_ao_parent_names ,
361
- .num_parents = ARRAY_SIZE (pwm_gxbb_ao_parent_names ),
362
- };
363
-
364
- static const char * const pwm_axg_ee_parent_names [] = {
365
- "xtal" , "fclk_div5" , "fclk_div4" , "fclk_div3"
350
+ .parent_names = { "xtal" , "clk81" , NULL , NULL },
366
351
};
367
352
368
353
static const struct meson_pwm_data pwm_axg_ee_data = {
369
- .parent_names = pwm_axg_ee_parent_names ,
370
- .num_parents = ARRAY_SIZE (pwm_axg_ee_parent_names ),
371
- };
372
-
373
- static const char * const pwm_axg_ao_parent_names [] = {
374
- "xtal" , "axg_ao_clk81" , "fclk_div4" , "fclk_div5"
354
+ .parent_names = { "xtal" , "fclk_div5" , "fclk_div4" , "fclk_div3" },
375
355
};
376
356
377
357
static const struct meson_pwm_data pwm_axg_ao_data = {
378
- .parent_names = pwm_axg_ao_parent_names ,
379
- .num_parents = ARRAY_SIZE (pwm_axg_ao_parent_names ),
380
- };
381
-
382
- static const char * const pwm_g12a_ao_ab_parent_names [] = {
383
- "xtal" , "g12a_ao_clk81" , "fclk_div4" , "fclk_div5"
358
+ .parent_names = { "xtal" , "axg_ao_clk81" , "fclk_div4" , "fclk_div5" },
384
359
};
385
360
386
361
static const struct meson_pwm_data pwm_g12a_ao_ab_data = {
387
- .parent_names = pwm_g12a_ao_ab_parent_names ,
388
- .num_parents = ARRAY_SIZE (pwm_g12a_ao_ab_parent_names ),
389
- };
390
-
391
- static const char * const pwm_g12a_ao_cd_parent_names [] = {
392
- "xtal" , "g12a_ao_clk81" ,
362
+ .parent_names = { "xtal" , "g12a_ao_clk81" , "fclk_div4" , "fclk_div5" },
393
363
};
394
364
395
365
static const struct meson_pwm_data pwm_g12a_ao_cd_data = {
396
- .parent_names = pwm_g12a_ao_cd_parent_names ,
397
- .num_parents = ARRAY_SIZE (pwm_g12a_ao_cd_parent_names ),
366
+ .parent_names = { "xtal" , "g12a_ao_clk81" , NULL , NULL },
398
367
};
399
368
400
369
static const struct of_device_id meson_pwm_matches [] = {
@@ -437,13 +406,13 @@ MODULE_DEVICE_TABLE(of, meson_pwm_matches);
437
406
static int meson_pwm_init_channels (struct pwm_chip * chip )
438
407
{
439
408
struct meson_pwm * meson = to_meson_pwm (chip );
440
- struct clk_parent_data mux_parent_data [MESON_MAX_MUX_PARENTS ] = {};
409
+ struct clk_parent_data mux_parent_data [MESON_NUM_MUX_PARENTS ] = {};
441
410
struct device * dev = pwmchip_parent (chip );
442
411
unsigned int i ;
443
412
char name [255 ];
444
413
int err ;
445
414
446
- for (i = 0 ; i < meson -> data -> num_parents ; i ++ ) {
415
+ for (i = 0 ; i < MESON_NUM_MUX_PARENTS ; i ++ ) {
447
416
mux_parent_data [i ].index = -1 ;
448
417
mux_parent_data [i ].name = meson -> data -> parent_names [i ];
449
418
}
@@ -459,7 +428,7 @@ static int meson_pwm_init_channels(struct pwm_chip *chip)
459
428
init .ops = & clk_mux_ops ;
460
429
init .flags = 0 ;
461
430
init .parent_data = mux_parent_data ;
462
- init .num_parents = meson -> data -> num_parents ;
431
+ init .num_parents = MESON_NUM_MUX_PARENTS ;
463
432
464
433
channel -> mux .reg = meson -> base + REG_MISC_AB ;
465
434
channel -> mux .shift =
0 commit comments