Skip to content

Commit 0ca0dc8

Browse files
Friday Yangbebarino
authored andcommitted
clk: mediatek: Add SMI LARBs reset for MT8188
SMI LARBs require reset functions when MTCMOS powers on or off. Add reset platform data for SMI LARBs in the image, camera and IPE subsystems. Signed-off-by: Friday Yang <friday.yang@mediatek.com> Link: https://lore.kernel.org/r/20250221075058.14180-3-friday.yang@mediatek.com Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Signed-off-by: Stephen Boyd <sboyd@kernel.org>
1 parent 9a5cd59 commit 0ca0dc8

File tree

3 files changed

+49
-0
lines changed

3 files changed

+49
-0
lines changed

drivers/clk/mediatek/clk-mt8188-cam.c

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ static const struct mtk_gate_regs cam_cg_regs = {
2020
#define GATE_CAM(_id, _name, _parent, _shift) \
2121
GATE_MTK(_id, _name, _parent, &cam_cg_regs, _shift, &mtk_clk_gate_ops_setclr)
2222

23+
#define CAM_SYS_SMI_LARB_RST_OFF (0xA0)
24+
2325
static const struct mtk_gate cam_main_clks[] = {
2426
GATE_CAM(CLK_CAM_MAIN_LARB13, "cam_main_larb13", "top_cam", 0),
2527
GATE_CAM(CLK_CAM_MAIN_LARB14, "cam_main_larb14", "top_cam", 1),
@@ -72,6 +74,17 @@ static const struct mtk_gate cam_yuvb_clks[] = {
7274
GATE_CAM(CLK_CAM_YUVB_CAMTG, "cam_yuvb_camtg", "top_cam", 2),
7375
};
7476

77+
/* Reset for SMI larb 16a/16b/17a/17b */
78+
static u16 cam_sys_rst_ofs[] = {
79+
CAM_SYS_SMI_LARB_RST_OFF,
80+
};
81+
82+
static const struct mtk_clk_rst_desc cam_sys_rst_desc = {
83+
.version = MTK_RST_SIMPLE,
84+
.rst_bank_ofs = cam_sys_rst_ofs,
85+
.rst_bank_nr = ARRAY_SIZE(cam_sys_rst_ofs),
86+
};
87+
7588
static const struct mtk_clk_desc cam_main_desc = {
7689
.clks = cam_main_clks,
7790
.num_clks = ARRAY_SIZE(cam_main_clks),
@@ -80,21 +93,25 @@ static const struct mtk_clk_desc cam_main_desc = {
8093
static const struct mtk_clk_desc cam_rawa_desc = {
8194
.clks = cam_rawa_clks,
8295
.num_clks = ARRAY_SIZE(cam_rawa_clks),
96+
.rst_desc = &cam_sys_rst_desc,
8397
};
8498

8599
static const struct mtk_clk_desc cam_rawb_desc = {
86100
.clks = cam_rawb_clks,
87101
.num_clks = ARRAY_SIZE(cam_rawb_clks),
102+
.rst_desc = &cam_sys_rst_desc,
88103
};
89104

90105
static const struct mtk_clk_desc cam_yuva_desc = {
91106
.clks = cam_yuva_clks,
92107
.num_clks = ARRAY_SIZE(cam_yuva_clks),
108+
.rst_desc = &cam_sys_rst_desc,
93109
};
94110

95111
static const struct mtk_clk_desc cam_yuvb_desc = {
96112
.clks = cam_yuvb_clks,
97113
.num_clks = ARRAY_SIZE(cam_yuvb_clks),
114+
.rst_desc = &cam_sys_rst_desc,
98115
};
99116

100117
static const struct of_device_id of_match_clk_mt8188_cam[] = {

drivers/clk/mediatek/clk-mt8188-img.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ static const struct mtk_gate_regs imgsys_cg_regs = {
2020
#define GATE_IMGSYS(_id, _name, _parent, _shift) \
2121
GATE_MTK(_id, _name, _parent, &imgsys_cg_regs, _shift, &mtk_clk_gate_ops_setclr)
2222

23+
#define IMG_SYS_SMI_LARB_RST_OFF (0xC)
24+
2325
static const struct mtk_gate imgsys_main_clks[] = {
2426
GATE_IMGSYS(CLK_IMGSYS_MAIN_LARB9, "imgsys_main_larb9", "top_img", 0),
2527
GATE_IMGSYS(CLK_IMGSYS_MAIN_TRAW0, "imgsys_main_traw0", "top_img", 1),
@@ -58,6 +60,17 @@ static const struct mtk_gate imgsys1_dip_nr_clks[] = {
5860
GATE_IMGSYS(CLK_IMGSYS1_DIP_NR_DIP_NR, "imgsys1_dip_nr_dip_nr", "top_img", 1),
5961
};
6062

63+
/* Reset for SMI larb 10/11a/11b/11c/15 */
64+
static u16 img_sys_rst_ofs[] = {
65+
IMG_SYS_SMI_LARB_RST_OFF,
66+
};
67+
68+
static const struct mtk_clk_rst_desc img_sys_rst_desc = {
69+
.version = MTK_RST_SIMPLE,
70+
.rst_bank_ofs = img_sys_rst_ofs,
71+
.rst_bank_nr = ARRAY_SIZE(img_sys_rst_ofs),
72+
};
73+
6174
static const struct mtk_clk_desc imgsys_main_desc = {
6275
.clks = imgsys_main_clks,
6376
.num_clks = ARRAY_SIZE(imgsys_main_clks),
@@ -66,26 +79,31 @@ static const struct mtk_clk_desc imgsys_main_desc = {
6679
static const struct mtk_clk_desc imgsys_wpe1_desc = {
6780
.clks = imgsys_wpe1_clks,
6881
.num_clks = ARRAY_SIZE(imgsys_wpe1_clks),
82+
.rst_desc = &img_sys_rst_desc,
6983
};
7084

7185
static const struct mtk_clk_desc imgsys_wpe2_desc = {
7286
.clks = imgsys_wpe2_clks,
7387
.num_clks = ARRAY_SIZE(imgsys_wpe2_clks),
88+
.rst_desc = &img_sys_rst_desc,
7489
};
7590

7691
static const struct mtk_clk_desc imgsys_wpe3_desc = {
7792
.clks = imgsys_wpe3_clks,
7893
.num_clks = ARRAY_SIZE(imgsys_wpe3_clks),
94+
.rst_desc = &img_sys_rst_desc,
7995
};
8096

8197
static const struct mtk_clk_desc imgsys1_dip_top_desc = {
8298
.clks = imgsys1_dip_top_clks,
8399
.num_clks = ARRAY_SIZE(imgsys1_dip_top_clks),
100+
.rst_desc = &img_sys_rst_desc,
84101
};
85102

86103
static const struct mtk_clk_desc imgsys1_dip_nr_desc = {
87104
.clks = imgsys1_dip_nr_clks,
88105
.num_clks = ARRAY_SIZE(imgsys1_dip_nr_clks),
106+
.rst_desc = &img_sys_rst_desc,
89107
};
90108

91109
static const struct of_device_id of_match_clk_mt8188_imgsys_main[] = {

drivers/clk/mediatek/clk-mt8188-ipe.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ static const struct mtk_gate_regs ipe_cg_regs = {
2020
#define GATE_IPE(_id, _name, _parent, _shift) \
2121
GATE_MTK(_id, _name, _parent, &ipe_cg_regs, _shift, &mtk_clk_gate_ops_setclr)
2222

23+
#define IPE_SYS_SMI_LARB_RST_OFF (0xC)
24+
2325
static const struct mtk_gate ipe_clks[] = {
2426
GATE_IPE(CLK_IPE_DPE, "ipe_dpe", "top_ipe", 0),
2527
GATE_IPE(CLK_IPE_FDVT, "ipe_fdvt", "top_ipe", 1),
@@ -28,9 +30,21 @@ static const struct mtk_gate ipe_clks[] = {
2830
GATE_IPE(CLK_IPE_SMI_LARB12, "ipe_smi_larb12", "top_ipe", 4),
2931
};
3032

33+
/* Reset for SMI larb 12 */
34+
static u16 ipe_sys_rst_ofs[] = {
35+
IPE_SYS_SMI_LARB_RST_OFF,
36+
};
37+
38+
static const struct mtk_clk_rst_desc ipe_sys_rst_desc = {
39+
.version = MTK_RST_SIMPLE,
40+
.rst_bank_ofs = ipe_sys_rst_ofs,
41+
.rst_bank_nr = ARRAY_SIZE(ipe_sys_rst_ofs),
42+
};
43+
3144
static const struct mtk_clk_desc ipe_desc = {
3245
.clks = ipe_clks,
3346
.num_clks = ARRAY_SIZE(ipe_clks),
47+
.rst_desc = &ipe_sys_rst_desc,
3448
};
3549

3650
static const struct of_device_id of_match_clk_mt8188_ipe[] = {

0 commit comments

Comments
 (0)