|
48 | 48 | #define SPIFC_CLK_CTRL 0x1a0 |
49 | 49 | #define NNA_CLK_CTRL 0x220 |
50 | 50 |
|
| 51 | +#define C3_COMP_SEL(_name, _reg, _shift, _mask, _pdata) \ |
| 52 | + MESON_COMP_SEL(c3_, _name, _reg, _shift, _mask, _pdata, NULL, 0, 0) |
| 53 | + |
| 54 | +#define C3_COMP_DIV(_name, _reg, _shift, _width) \ |
| 55 | + MESON_COMP_DIV(c3_, _name, _reg, _shift, _width, 0, CLK_SET_RATE_PARENT) |
| 56 | + |
| 57 | +#define C3_COMP_GATE(_name, _reg, _bit) \ |
| 58 | + MESON_COMP_GATE(c3_, _name, _reg, _bit, CLK_SET_RATE_PARENT) |
| 59 | + |
51 | 60 | static struct clk_regmap c3_rtc_xtal_clkin = { |
52 | 61 | .data = &(struct clk_regmap_gate_data) { |
53 | 62 | .offset = RTC_BY_OSCIN_CTRL0, |
@@ -512,146 +521,61 @@ static const struct clk_parent_data c3_pwm_parents[] = { |
512 | 521 | { .fw_name = "fdiv3" } |
513 | 522 | }; |
514 | 523 |
|
515 | | -#define C3_PWM_CLK_MUX(_name, _reg, _shift) { \ |
516 | | - .data = &(struct clk_regmap_mux_data) { \ |
517 | | - .offset = _reg, \ |
518 | | - .mask = 0x3, \ |
519 | | - .shift = _shift, \ |
520 | | - }, \ |
521 | | - .hw.init = &(struct clk_init_data) { \ |
522 | | - .name = #_name "_sel", \ |
523 | | - .ops = &clk_regmap_mux_ops, \ |
524 | | - .parent_data = c3_pwm_parents, \ |
525 | | - .num_parents = ARRAY_SIZE(c3_pwm_parents), \ |
526 | | - }, \ |
527 | | -} |
528 | | - |
529 | | -#define C3_PWM_CLK_DIV(_name, _reg, _shift) { \ |
530 | | - .data = &(struct clk_regmap_div_data) { \ |
531 | | - .offset = _reg, \ |
532 | | - .shift = _shift, \ |
533 | | - .width = 8, \ |
534 | | - }, \ |
535 | | - .hw.init = &(struct clk_init_data) { \ |
536 | | - .name = #_name "_div", \ |
537 | | - .ops = &clk_regmap_divider_ops, \ |
538 | | - .parent_names = (const char *[]) { #_name "_sel" },\ |
539 | | - .num_parents = 1, \ |
540 | | - .flags = CLK_SET_RATE_PARENT, \ |
541 | | - }, \ |
542 | | -} |
543 | | - |
544 | | -#define C3_PWM_CLK_GATE(_name, _reg, _bit) { \ |
545 | | - .data = &(struct clk_regmap_gate_data) { \ |
546 | | - .offset = _reg, \ |
547 | | - .bit_idx = _bit, \ |
548 | | - }, \ |
549 | | - .hw.init = &(struct clk_init_data) { \ |
550 | | - .name = #_name, \ |
551 | | - .ops = &clk_regmap_gate_ops, \ |
552 | | - .parent_names = (const char *[]) { #_name "_div" },\ |
553 | | - .num_parents = 1, \ |
554 | | - .flags = CLK_SET_RATE_PARENT, \ |
555 | | - }, \ |
556 | | -} |
557 | | - |
558 | | -static struct clk_regmap c3_pwm_a_sel = |
559 | | - C3_PWM_CLK_MUX(pwm_a, PWM_CLK_AB_CTRL, 9); |
560 | | -static struct clk_regmap c3_pwm_a_div = |
561 | | - C3_PWM_CLK_DIV(pwm_a, PWM_CLK_AB_CTRL, 0); |
562 | | -static struct clk_regmap c3_pwm_a = |
563 | | - C3_PWM_CLK_GATE(pwm_a, PWM_CLK_AB_CTRL, 8); |
564 | | - |
565 | | -static struct clk_regmap c3_pwm_b_sel = |
566 | | - C3_PWM_CLK_MUX(pwm_b, PWM_CLK_AB_CTRL, 25); |
567 | | -static struct clk_regmap c3_pwm_b_div = |
568 | | - C3_PWM_CLK_DIV(pwm_b, PWM_CLK_AB_CTRL, 16); |
569 | | -static struct clk_regmap c3_pwm_b = |
570 | | - C3_PWM_CLK_GATE(pwm_b, PWM_CLK_AB_CTRL, 24); |
571 | | - |
572 | | -static struct clk_regmap c3_pwm_c_sel = |
573 | | - C3_PWM_CLK_MUX(pwm_c, PWM_CLK_CD_CTRL, 9); |
574 | | -static struct clk_regmap c3_pwm_c_div = |
575 | | - C3_PWM_CLK_DIV(pwm_c, PWM_CLK_CD_CTRL, 0); |
576 | | -static struct clk_regmap c3_pwm_c = |
577 | | - C3_PWM_CLK_GATE(pwm_c, PWM_CLK_CD_CTRL, 8); |
578 | | - |
579 | | -static struct clk_regmap c3_pwm_d_sel = |
580 | | - C3_PWM_CLK_MUX(pwm_d, PWM_CLK_CD_CTRL, 25); |
581 | | -static struct clk_regmap c3_pwm_d_div = |
582 | | - C3_PWM_CLK_DIV(pwm_d, PWM_CLK_CD_CTRL, 16); |
583 | | -static struct clk_regmap c3_pwm_d = |
584 | | - C3_PWM_CLK_GATE(pwm_d, PWM_CLK_CD_CTRL, 24); |
585 | | - |
586 | | -static struct clk_regmap c3_pwm_e_sel = |
587 | | - C3_PWM_CLK_MUX(pwm_e, PWM_CLK_EF_CTRL, 9); |
588 | | -static struct clk_regmap c3_pwm_e_div = |
589 | | - C3_PWM_CLK_DIV(pwm_e, PWM_CLK_EF_CTRL, 0); |
590 | | -static struct clk_regmap c3_pwm_e = |
591 | | - C3_PWM_CLK_GATE(pwm_e, PWM_CLK_EF_CTRL, 8); |
592 | | - |
593 | | -static struct clk_regmap c3_pwm_f_sel = |
594 | | - C3_PWM_CLK_MUX(pwm_f, PWM_CLK_EF_CTRL, 25); |
595 | | -static struct clk_regmap c3_pwm_f_div = |
596 | | - C3_PWM_CLK_DIV(pwm_f, PWM_CLK_EF_CTRL, 16); |
597 | | -static struct clk_regmap c3_pwm_f = |
598 | | - C3_PWM_CLK_GATE(pwm_f, PWM_CLK_EF_CTRL, 24); |
599 | | - |
600 | | -static struct clk_regmap c3_pwm_g_sel = |
601 | | - C3_PWM_CLK_MUX(pwm_g, PWM_CLK_GH_CTRL, 9); |
602 | | -static struct clk_regmap c3_pwm_g_div = |
603 | | - C3_PWM_CLK_DIV(pwm_g, PWM_CLK_GH_CTRL, 0); |
604 | | -static struct clk_regmap c3_pwm_g = |
605 | | - C3_PWM_CLK_GATE(pwm_g, PWM_CLK_GH_CTRL, 8); |
606 | | - |
607 | | -static struct clk_regmap c3_pwm_h_sel = |
608 | | - C3_PWM_CLK_MUX(pwm_h, PWM_CLK_GH_CTRL, 25); |
609 | | -static struct clk_regmap c3_pwm_h_div = |
610 | | - C3_PWM_CLK_DIV(pwm_h, PWM_CLK_GH_CTRL, 16); |
611 | | -static struct clk_regmap c3_pwm_h = |
612 | | - C3_PWM_CLK_GATE(pwm_h, PWM_CLK_GH_CTRL, 24); |
613 | | - |
614 | | -static struct clk_regmap c3_pwm_i_sel = |
615 | | - C3_PWM_CLK_MUX(pwm_i, PWM_CLK_IJ_CTRL, 9); |
616 | | -static struct clk_regmap c3_pwm_i_div = |
617 | | - C3_PWM_CLK_DIV(pwm_i, PWM_CLK_IJ_CTRL, 0); |
618 | | -static struct clk_regmap c3_pwm_i = |
619 | | - C3_PWM_CLK_GATE(pwm_i, PWM_CLK_IJ_CTRL, 8); |
620 | | - |
621 | | -static struct clk_regmap c3_pwm_j_sel = |
622 | | - C3_PWM_CLK_MUX(pwm_j, PWM_CLK_IJ_CTRL, 25); |
623 | | -static struct clk_regmap c3_pwm_j_div = |
624 | | - C3_PWM_CLK_DIV(pwm_j, PWM_CLK_IJ_CTRL, 16); |
625 | | -static struct clk_regmap c3_pwm_j = |
626 | | - C3_PWM_CLK_GATE(pwm_j, PWM_CLK_IJ_CTRL, 24); |
627 | | - |
628 | | -static struct clk_regmap c3_pwm_k_sel = |
629 | | - C3_PWM_CLK_MUX(pwm_k, PWM_CLK_KL_CTRL, 9); |
630 | | -static struct clk_regmap c3_pwm_k_div = |
631 | | - C3_PWM_CLK_DIV(pwm_k, PWM_CLK_KL_CTRL, 0); |
632 | | -static struct clk_regmap c3_pwm_k = |
633 | | - C3_PWM_CLK_GATE(pwm_k, PWM_CLK_KL_CTRL, 8); |
634 | | - |
635 | | -static struct clk_regmap c3_pwm_l_sel = |
636 | | - C3_PWM_CLK_MUX(pwm_l, PWM_CLK_KL_CTRL, 25); |
637 | | -static struct clk_regmap c3_pwm_l_div = |
638 | | - C3_PWM_CLK_DIV(pwm_l, PWM_CLK_KL_CTRL, 16); |
639 | | -static struct clk_regmap c3_pwm_l = |
640 | | - C3_PWM_CLK_GATE(pwm_l, PWM_CLK_KL_CTRL, 24); |
641 | | - |
642 | | -static struct clk_regmap c3_pwm_m_sel = |
643 | | - C3_PWM_CLK_MUX(pwm_m, PWM_CLK_MN_CTRL, 9); |
644 | | -static struct clk_regmap c3_pwm_m_div = |
645 | | - C3_PWM_CLK_DIV(pwm_m, PWM_CLK_MN_CTRL, 0); |
646 | | -static struct clk_regmap c3_pwm_m = |
647 | | - C3_PWM_CLK_GATE(pwm_m, PWM_CLK_MN_CTRL, 8); |
648 | | - |
649 | | -static struct clk_regmap c3_pwm_n_sel = |
650 | | - C3_PWM_CLK_MUX(pwm_n, PWM_CLK_MN_CTRL, 25); |
651 | | -static struct clk_regmap c3_pwm_n_div = |
652 | | - C3_PWM_CLK_DIV(pwm_n, PWM_CLK_MN_CTRL, 16); |
653 | | -static struct clk_regmap c3_pwm_n = |
654 | | - C3_PWM_CLK_GATE(pwm_n, PWM_CLK_MN_CTRL, 24); |
| 524 | +static C3_COMP_SEL(pwm_a, PWM_CLK_AB_CTRL, 9, 0x3, c3_pwm_parents); |
| 525 | +static C3_COMP_DIV(pwm_a, PWM_CLK_AB_CTRL, 0, 8); |
| 526 | +static C3_COMP_GATE(pwm_a, PWM_CLK_AB_CTRL, 8); |
| 527 | + |
| 528 | +static C3_COMP_SEL(pwm_b, PWM_CLK_AB_CTRL, 25, 0x3, c3_pwm_parents); |
| 529 | +static C3_COMP_DIV(pwm_b, PWM_CLK_AB_CTRL, 16, 8); |
| 530 | +static C3_COMP_GATE(pwm_b, PWM_CLK_AB_CTRL, 24); |
| 531 | + |
| 532 | +static C3_COMP_SEL(pwm_c, PWM_CLK_CD_CTRL, 9, 0x3, c3_pwm_parents); |
| 533 | +static C3_COMP_DIV(pwm_c, PWM_CLK_CD_CTRL, 0, 8); |
| 534 | +static C3_COMP_GATE(pwm_c, PWM_CLK_CD_CTRL, 8); |
| 535 | + |
| 536 | +static C3_COMP_SEL(pwm_d, PWM_CLK_CD_CTRL, 25, 0x3, c3_pwm_parents); |
| 537 | +static C3_COMP_DIV(pwm_d, PWM_CLK_CD_CTRL, 16, 8); |
| 538 | +static C3_COMP_GATE(pwm_d, PWM_CLK_CD_CTRL, 24); |
| 539 | + |
| 540 | +static C3_COMP_SEL(pwm_e, PWM_CLK_EF_CTRL, 9, 0x3, c3_pwm_parents); |
| 541 | +static C3_COMP_DIV(pwm_e, PWM_CLK_EF_CTRL, 0, 8); |
| 542 | +static C3_COMP_GATE(pwm_e, PWM_CLK_EF_CTRL, 8); |
| 543 | + |
| 544 | +static C3_COMP_SEL(pwm_f, PWM_CLK_EF_CTRL, 25, 0x3, c3_pwm_parents); |
| 545 | +static C3_COMP_DIV(pwm_f, PWM_CLK_EF_CTRL, 16, 8); |
| 546 | +static C3_COMP_GATE(pwm_f, PWM_CLK_EF_CTRL, 24); |
| 547 | + |
| 548 | +static C3_COMP_SEL(pwm_g, PWM_CLK_GH_CTRL, 9, 0x3, c3_pwm_parents); |
| 549 | +static C3_COMP_DIV(pwm_g, PWM_CLK_GH_CTRL, 0, 8); |
| 550 | +static C3_COMP_GATE(pwm_g, PWM_CLK_GH_CTRL, 8); |
| 551 | + |
| 552 | +static C3_COMP_SEL(pwm_h, PWM_CLK_GH_CTRL, 25, 0x3, c3_pwm_parents); |
| 553 | +static C3_COMP_DIV(pwm_h, PWM_CLK_GH_CTRL, 16, 8); |
| 554 | +static C3_COMP_GATE(pwm_h, PWM_CLK_GH_CTRL, 24); |
| 555 | + |
| 556 | +static C3_COMP_SEL(pwm_i, PWM_CLK_IJ_CTRL, 9, 0x3, c3_pwm_parents); |
| 557 | +static C3_COMP_DIV(pwm_i, PWM_CLK_IJ_CTRL, 0, 8); |
| 558 | +static C3_COMP_GATE(pwm_i, PWM_CLK_IJ_CTRL, 8); |
| 559 | + |
| 560 | +static C3_COMP_SEL(pwm_j, PWM_CLK_IJ_CTRL, 25, 0x3, c3_pwm_parents); |
| 561 | +static C3_COMP_DIV(pwm_j, PWM_CLK_IJ_CTRL, 16, 8); |
| 562 | +static C3_COMP_GATE(pwm_j, PWM_CLK_IJ_CTRL, 24); |
| 563 | + |
| 564 | +static C3_COMP_SEL(pwm_k, PWM_CLK_KL_CTRL, 9, 0x3, c3_pwm_parents); |
| 565 | +static C3_COMP_DIV(pwm_k, PWM_CLK_KL_CTRL, 0, 8); |
| 566 | +static C3_COMP_GATE(pwm_k, PWM_CLK_KL_CTRL, 8); |
| 567 | + |
| 568 | +static C3_COMP_SEL(pwm_l, PWM_CLK_KL_CTRL, 25, 0x3, c3_pwm_parents); |
| 569 | +static C3_COMP_DIV(pwm_l, PWM_CLK_KL_CTRL, 16, 8); |
| 570 | +static C3_COMP_GATE(pwm_l, PWM_CLK_KL_CTRL, 24); |
| 571 | + |
| 572 | +static C3_COMP_SEL(pwm_m, PWM_CLK_MN_CTRL, 9, 0x3, c3_pwm_parents); |
| 573 | +static C3_COMP_DIV(pwm_m, PWM_CLK_MN_CTRL, 0, 8); |
| 574 | +static C3_COMP_GATE(pwm_m, PWM_CLK_MN_CTRL, 8); |
| 575 | + |
| 576 | +static C3_COMP_SEL(pwm_n, PWM_CLK_MN_CTRL, 25, 0x3, c3_pwm_parents); |
| 577 | +static C3_COMP_DIV(pwm_n, PWM_CLK_MN_CTRL, 16, 8); |
| 578 | +static C3_COMP_GATE(pwm_n, PWM_CLK_MN_CTRL, 24); |
655 | 579 |
|
656 | 580 | static const struct clk_parent_data c3_spicc_parents[] = { |
657 | 581 | { .fw_name = "oscin" }, |
|
0 commit comments