2 * Copyright (c) 2015, The Linux Foundation. All rights reserved.
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 and
6 * only version 2 as published by the Free Software Foundation.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
16 static const char * const dsi_v2_bus_clk_names
[] = {
17 "core_mmss_clk", "iface_clk", "bus_clk",
20 static const struct msm_dsi_config apq8064_dsi_cfg
= {
25 {"vdda", 1200000, 1200000, 100000, 100},
26 {"avdd", 3000000, 3000000, 110000, 100},
27 {"vddio", 1800000, 1800000, 100000, 100},
30 .bus_clk_names
= dsi_v2_bus_clk_names
,
31 .num_bus_clks
= ARRAY_SIZE(dsi_v2_bus_clk_names
),
34 static const char * const dsi_6g_bus_clk_names
[] = {
35 "mdp_core_clk", "iface_clk", "bus_clk", "core_mmss_clk",
38 static const struct msm_dsi_config msm8974_apq8084_dsi_cfg
= {
39 .io_offset
= DSI_6G_REG_SHIFT
,
43 {"gdsc", -1, -1, -1, -1},
44 {"vdd", 3000000, 3000000, 150000, 100},
45 {"vdda", 1200000, 1200000, 100000, 100},
46 {"vddio", 1800000, 1800000, 100000, 100},
49 .bus_clk_names
= dsi_6g_bus_clk_names
,
50 .num_bus_clks
= ARRAY_SIZE(dsi_6g_bus_clk_names
),
53 static const char * const dsi_8916_bus_clk_names
[] = {
54 "mdp_core_clk", "iface_clk", "bus_clk",
57 static const struct msm_dsi_config msm8916_dsi_cfg
= {
58 .io_offset
= DSI_6G_REG_SHIFT
,
62 {"gdsc", -1, -1, -1, -1},
63 {"vdda", 1200000, 1200000, 100000, 100},
64 {"vddio", 1800000, 1800000, 100000, 100},
67 .bus_clk_names
= dsi_8916_bus_clk_names
,
68 .num_bus_clks
= ARRAY_SIZE(dsi_8916_bus_clk_names
),
71 static const struct msm_dsi_config msm8994_dsi_cfg
= {
72 .io_offset
= DSI_6G_REG_SHIFT
,
76 {"gdsc", -1, -1, -1, -1},
77 {"vdda", 1250000, 1250000, 100000, 100},
78 {"vddio", 1800000, 1800000, 100000, 100},
79 {"vcca", 1000000, 1000000, 10000, 100},
80 {"vdd", 1800000, 1800000, 100000, 100},
81 {"lab_reg", -1, -1, -1, -1},
82 {"ibb_reg", -1, -1, -1, -1},
85 .bus_clk_names
= dsi_6g_bus_clk_names
,
86 .num_bus_clks
= ARRAY_SIZE(dsi_6g_bus_clk_names
),
89 static const struct msm_dsi_cfg_handler dsi_cfg_handlers
[] = {
90 {MSM_DSI_VER_MAJOR_V2
, MSM_DSI_V2_VER_MINOR_8064
, &apq8064_dsi_cfg
},
91 {MSM_DSI_VER_MAJOR_6G
, MSM_DSI_6G_VER_MINOR_V1_0
,
92 &msm8974_apq8084_dsi_cfg
},
93 {MSM_DSI_VER_MAJOR_6G
, MSM_DSI_6G_VER_MINOR_V1_1
,
94 &msm8974_apq8084_dsi_cfg
},
95 {MSM_DSI_VER_MAJOR_6G
, MSM_DSI_6G_VER_MINOR_V1_1_1
,
96 &msm8974_apq8084_dsi_cfg
},
97 {MSM_DSI_VER_MAJOR_6G
, MSM_DSI_6G_VER_MINOR_V1_2
,
98 &msm8974_apq8084_dsi_cfg
},
99 {MSM_DSI_VER_MAJOR_6G
, MSM_DSI_6G_VER_MINOR_V1_3
, &msm8994_dsi_cfg
},
100 {MSM_DSI_VER_MAJOR_6G
, MSM_DSI_6G_VER_MINOR_V1_3_1
, &msm8916_dsi_cfg
},
103 const struct msm_dsi_cfg_handler
*msm_dsi_cfg_get(u32 major
, u32 minor
)
105 const struct msm_dsi_cfg_handler
*cfg_hnd
= NULL
;
108 for (i
= ARRAY_SIZE(dsi_cfg_handlers
) - 1; i
>= 0; i
--) {
109 if ((dsi_cfg_handlers
[i
].major
== major
) &&
110 (dsi_cfg_handlers
[i
].minor
== minor
)) {
111 cfg_hnd
= &dsi_cfg_handlers
[i
];