mediatek: filogic: mt7988: mark RTC clock as critical
authorDaniel Golle <daniel@makrotopia.org>
Fri, 4 Aug 2023 13:07:43 +0000 (14:07 +0100)
committerDaniel Golle <daniel@makrotopia.org>
Sun, 13 Aug 2023 14:01:36 +0000 (15:01 +0100)
A dependency of the MT7988 MMC host controller on the SoC's RTC clock
being running has been discovered. Mark RTC clock as critical to fix
MMC host on MT7988.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
target/linux/mediatek/files-5.15/drivers/clk/mediatek/clk-mt7988-infracfg.c
target/linux/mediatek/files-6.1/drivers/clk/mediatek/clk-mt7988-infracfg.c

index 77e25383b6e3c1c32f6dc3f7c6c2accf2e56ed07..bce8d563756794a5e1d33eb46c5ea10eaf136666 100644 (file)
@@ -190,6 +190,13 @@ static const struct mtk_gate_regs infra3_cg_regs = {
 #define GATE_INFRA3(_id, _name, _parent, _shift)                              \
        GATE_INFRA3_FLAGS(_id, _name, _parent, _shift, 0)
 
+#define GATE_CRITICAL(_id, _name, _parent, _regs, _shift) {                   \
+               .id = _id, .name = _name, .parent_name = _parent,             \
+               .regs = _regs, .shift = _shift,                               \
+               .flags = CLK_IS_CRITICAL,                                     \
+               .ops = &mtk_clk_gate_ops_setclr,                              \
+       }
+
 static const struct mtk_gate infra_clks[] = {
        /* INFRA0 */
        GATE_INFRA0(CLK_INFRA_PCIE_PERI_26M_CK_P0,
@@ -271,7 +278,7 @@ static const struct mtk_gate infra_clks[] = {
                    "sysaxi_sel", 17),
        GATE_INFRA2(CLK_INFRA_66M_FLASHIF_AXI, "infra_hf_66m_flashif_axi",
                    "sysaxi_sel", 18),
-       GATE_INFRA2(CLK_INFRA_RTC, "infra_f_frtc", "top_rtc_32k", 19),
+       GATE_CRITICAL(CLK_INFRA_RTC, "infra_f_frtc", "top_rtc_32k", &infra2_cg_regs, 19),
        GATE_INFRA2(CLK_INFRA_26M_ADC_BCK, "infra_f_26m_adc_bck",
                    "csw_infra_f26m_sel", 20),
        GATE_INFRA2(CLK_INFRA_RC_ADC, "infra_f_frc_adc", "infra_f_26m_adc_bck",
index 111b516ae56d496c05b55d916de8528cd3a8c146..a5d21d756d5188768370b154274ddae9a7a540fc 100644 (file)
@@ -190,6 +190,13 @@ static const struct mtk_gate_regs infra3_cg_regs = {
 #define GATE_INFRA3(_id, _name, _parent, _shift)                              \
        GATE_INFRA3_FLAGS(_id, _name, _parent, _shift, 0)
 
+#define GATE_CRITICAL(_id, _name, _parent, _regs, _shift) {                   \
+               .id = _id, .name = _name, .parent_name = _parent,             \
+               .regs = _regs, .shift = _shift,                               \
+               .flags = CLK_IS_CRITICAL,                                     \
+               .ops = &mtk_clk_gate_ops_setclr,                              \
+       }
+
 static const struct mtk_gate infra_clks[] = {
        /* INFRA0 */
        GATE_INFRA0(CLK_INFRA_PCIE_PERI_26M_CK_P0,
@@ -271,7 +278,7 @@ static const struct mtk_gate infra_clks[] = {
                    "sysaxi_sel", 17),
        GATE_INFRA2(CLK_INFRA_66M_FLASHIF_AXI, "infra_hf_66m_flashif_axi",
                    "sysaxi_sel", 18),
-       GATE_INFRA2(CLK_INFRA_RTC, "infra_f_frtc", "top_rtc_32k", 19),
+       GATE_CRITICAL(CLK_INFRA_RTC, "infra_f_frtc", "top_rtc_32k", &infra2_cg_regs, 19),
        GATE_INFRA2(CLK_INFRA_26M_ADC_BCK, "infra_f_26m_adc_bck",
                    "csw_infra_f26m_sel", 20),
        GATE_INFRA2(CLK_INFRA_RC_ADC, "infra_f_frc_adc", "infra_f_26m_adc_bck",