diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/clk/mediatek/clk-mt8173.c | 6 | ||||
| -rw-r--r-- | drivers/clk/mediatek/clk-mtk.h | 15 |
2 files changed, 18 insertions, 3 deletions
diff --git a/drivers/clk/mediatek/clk-mt8173.c b/drivers/clk/mediatek/clk-mt8173.c index 227e356403d9..85c0bfc626ae 100644 --- a/drivers/clk/mediatek/clk-mt8173.c +++ b/drivers/clk/mediatek/clk-mt8173.c | |||
| @@ -558,7 +558,11 @@ static const struct mtk_composite top_muxes[] __initconst = { | |||
| 558 | MUX_GATE(CLK_TOP_ATB_SEL, "atb_sel", atb_parents, 0x0090, 16, 2, 23), | 558 | MUX_GATE(CLK_TOP_ATB_SEL, "atb_sel", atb_parents, 0x0090, 16, 2, 23), |
| 559 | MUX_GATE(CLK_TOP_VENC_LT_SEL, "venclt_sel", venc_lt_parents, 0x0090, 24, 4, 31), | 559 | MUX_GATE(CLK_TOP_VENC_LT_SEL, "venclt_sel", venc_lt_parents, 0x0090, 24, 4, 31), |
| 560 | /* CLK_CFG_6 */ | 560 | /* CLK_CFG_6 */ |
| 561 | MUX_GATE(CLK_TOP_DPI0_SEL, "dpi0_sel", dpi0_parents, 0x00a0, 0, 3, 7), | 561 | /* |
| 562 | * The dpi0_sel clock should not propagate rate changes to its parent | ||
| 563 | * clock so the dpi driver can have full control over PLL and divider. | ||
| 564 | */ | ||
| 565 | MUX_GATE_FLAGS(CLK_TOP_DPI0_SEL, "dpi0_sel", dpi0_parents, 0x00a0, 0, 3, 7, 0), | ||
| 562 | MUX_GATE(CLK_TOP_IRDA_SEL, "irda_sel", irda_parents, 0x00a0, 8, 2, 15), | 566 | MUX_GATE(CLK_TOP_IRDA_SEL, "irda_sel", irda_parents, 0x00a0, 8, 2, 15), |
| 563 | MUX_GATE(CLK_TOP_CCI400_SEL, "cci400_sel", cci400_parents, 0x00a0, 16, 3, 23), | 567 | MUX_GATE(CLK_TOP_CCI400_SEL, "cci400_sel", cci400_parents, 0x00a0, 16, 3, 23), |
| 564 | MUX_GATE(CLK_TOP_AUD_1_SEL, "aud_1_sel", aud_1_parents, 0x00a0, 24, 2, 31), | 568 | MUX_GATE(CLK_TOP_AUD_1_SEL, "aud_1_sel", aud_1_parents, 0x00a0, 24, 2, 31), |
diff --git a/drivers/clk/mediatek/clk-mtk.h b/drivers/clk/mediatek/clk-mtk.h index 32d2e455eb3f..9f24fcfa304f 100644 --- a/drivers/clk/mediatek/clk-mtk.h +++ b/drivers/clk/mediatek/clk-mtk.h | |||
| @@ -83,7 +83,11 @@ struct mtk_composite { | |||
| 83 | signed char num_parents; | 83 | signed char num_parents; |
| 84 | }; | 84 | }; |
| 85 | 85 | ||
| 86 | #define MUX_GATE(_id, _name, _parents, _reg, _shift, _width, _gate) { \ | 86 | /* |
| 87 | * In case the rate change propagation to parent clocks is undesirable, | ||
| 88 | * this macro allows to specify the clock flags manually. | ||
| 89 | */ | ||
| 90 | #define MUX_GATE_FLAGS(_id, _name, _parents, _reg, _shift, _width, _gate, _flags) { \ | ||
| 87 | .id = _id, \ | 91 | .id = _id, \ |
| 88 | .name = _name, \ | 92 | .name = _name, \ |
| 89 | .mux_reg = _reg, \ | 93 | .mux_reg = _reg, \ |
| @@ -94,9 +98,16 @@ struct mtk_composite { | |||
| 94 | .divider_shift = -1, \ | 98 | .divider_shift = -1, \ |
| 95 | .parent_names = _parents, \ | 99 | .parent_names = _parents, \ |
| 96 | .num_parents = ARRAY_SIZE(_parents), \ | 100 | .num_parents = ARRAY_SIZE(_parents), \ |
| 97 | .flags = CLK_SET_RATE_PARENT, \ | 101 | .flags = _flags, \ |
| 98 | } | 102 | } |
| 99 | 103 | ||
| 104 | /* | ||
| 105 | * Unless necessary, all MUX_GATE clocks propagate rate changes to their | ||
| 106 | * parent clock by default. | ||
| 107 | */ | ||
| 108 | #define MUX_GATE(_id, _name, _parents, _reg, _shift, _width, _gate) \ | ||
| 109 | MUX_GATE_FLAGS(_id, _name, _parents, _reg, _shift, _width, _gate, CLK_SET_RATE_PARENT) | ||
| 110 | |||
| 100 | #define MUX(_id, _name, _parents, _reg, _shift, _width) { \ | 111 | #define MUX(_id, _name, _parents, _reg, _shift, _width) { \ |
| 101 | .id = _id, \ | 112 | .id = _id, \ |
| 102 | .name = _name, \ | 113 | .name = _name, \ |
