mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-04 17:44:14 +08:00
drm/rockchip: lvds: Harmonize function names
Prepare the introduction of PX30 support by clarifying the function prefixes. We continue to prefix with 'rockchip_lvds_' generic functions that are not specific to a single hardware. Functions implying hardware modifications are now prefixed with 'rk3288_lvds_'. Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Signed-off-by: Heiko Stuebner <heiko@sntech.de> Link: https://patchwork.freedesktop.org/patch/msgid/20191224143900.23567-5-miquel.raynal@bootlin.com
This commit is contained in:
parent
eb503ee2c9
commit
04bc39adf9
@ -67,7 +67,8 @@ struct rockchip_lvds {
|
||||
struct dev_pin_info *pins;
|
||||
};
|
||||
|
||||
static inline void lvds_writel(struct rockchip_lvds *lvds, u32 offset, u32 val)
|
||||
static inline void rk3288_writel(struct rockchip_lvds *lvds, u32 offset,
|
||||
u32 val)
|
||||
{
|
||||
writel_relaxed(val, lvds->regs + offset);
|
||||
if (lvds->output == DISPLAY_OUTPUT_LVDS)
|
||||
@ -75,7 +76,7 @@ static inline void lvds_writel(struct rockchip_lvds *lvds, u32 offset, u32 val)
|
||||
writel_relaxed(val, lvds->regs + offset + lvds->soc_data->ch1_offset);
|
||||
}
|
||||
|
||||
static inline int lvds_name_to_format(const char *s)
|
||||
static inline int rockchip_lvds_name_to_format(const char *s)
|
||||
{
|
||||
if (strncmp(s, "jeida-18", 8) == 0)
|
||||
return LVDS_JEIDA_18;
|
||||
@ -87,7 +88,7 @@ static inline int lvds_name_to_format(const char *s)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int lvds_name_to_output(const char *s)
|
||||
static inline int rockchip_lvds_name_to_output(const char *s)
|
||||
{
|
||||
if (strncmp(s, "rgb", 3) == 0)
|
||||
return DISPLAY_OUTPUT_RGB;
|
||||
@ -99,7 +100,7 @@ static inline int lvds_name_to_output(const char *s)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static int rockchip_lvds_poweron(struct rockchip_lvds *lvds)
|
||||
static int rk3288_lvds_poweron(struct rockchip_lvds *lvds)
|
||||
{
|
||||
int ret;
|
||||
u32 val;
|
||||
@ -121,63 +122,70 @@ static int rockchip_lvds_poweron(struct rockchip_lvds *lvds)
|
||||
if (lvds->output == DISPLAY_OUTPUT_RGB) {
|
||||
val |= RK3288_LVDS_CH0_REG0_TTL_EN |
|
||||
RK3288_LVDS_CH0_REG0_LANECK_EN;
|
||||
lvds_writel(lvds, RK3288_LVDS_CH0_REG0, val);
|
||||
lvds_writel(lvds, RK3288_LVDS_CH0_REG2,
|
||||
RK3288_LVDS_PLL_FBDIV_REG2(0x46));
|
||||
lvds_writel(lvds, RK3288_LVDS_CH0_REG4,
|
||||
RK3288_LVDS_CH0_REG4_LANECK_TTL_MODE |
|
||||
RK3288_LVDS_CH0_REG4_LANE4_TTL_MODE |
|
||||
RK3288_LVDS_CH0_REG4_LANE3_TTL_MODE |
|
||||
RK3288_LVDS_CH0_REG4_LANE2_TTL_MODE |
|
||||
RK3288_LVDS_CH0_REG4_LANE1_TTL_MODE |
|
||||
RK3288_LVDS_CH0_REG4_LANE0_TTL_MODE);
|
||||
lvds_writel(lvds, RK3288_LVDS_CH0_REG5,
|
||||
RK3288_LVDS_CH0_REG5_LANECK_TTL_DATA |
|
||||
RK3288_LVDS_CH0_REG5_LANE4_TTL_DATA |
|
||||
RK3288_LVDS_CH0_REG5_LANE3_TTL_DATA |
|
||||
RK3288_LVDS_CH0_REG5_LANE2_TTL_DATA |
|
||||
RK3288_LVDS_CH0_REG5_LANE1_TTL_DATA |
|
||||
RK3288_LVDS_CH0_REG5_LANE0_TTL_DATA);
|
||||
rk3288_writel(lvds, RK3288_LVDS_CH0_REG0, val);
|
||||
rk3288_writel(lvds, RK3288_LVDS_CH0_REG2,
|
||||
RK3288_LVDS_PLL_FBDIV_REG2(0x46));
|
||||
rk3288_writel(lvds, RK3288_LVDS_CH0_REG4,
|
||||
RK3288_LVDS_CH0_REG4_LANECK_TTL_MODE |
|
||||
RK3288_LVDS_CH0_REG4_LANE4_TTL_MODE |
|
||||
RK3288_LVDS_CH0_REG4_LANE3_TTL_MODE |
|
||||
RK3288_LVDS_CH0_REG4_LANE2_TTL_MODE |
|
||||
RK3288_LVDS_CH0_REG4_LANE1_TTL_MODE |
|
||||
RK3288_LVDS_CH0_REG4_LANE0_TTL_MODE);
|
||||
rk3288_writel(lvds, RK3288_LVDS_CH0_REG5,
|
||||
RK3288_LVDS_CH0_REG5_LANECK_TTL_DATA |
|
||||
RK3288_LVDS_CH0_REG5_LANE4_TTL_DATA |
|
||||
RK3288_LVDS_CH0_REG5_LANE3_TTL_DATA |
|
||||
RK3288_LVDS_CH0_REG5_LANE2_TTL_DATA |
|
||||
RK3288_LVDS_CH0_REG5_LANE1_TTL_DATA |
|
||||
RK3288_LVDS_CH0_REG5_LANE0_TTL_DATA);
|
||||
} else {
|
||||
val |= RK3288_LVDS_CH0_REG0_LVDS_EN |
|
||||
RK3288_LVDS_CH0_REG0_LANECK_EN;
|
||||
lvds_writel(lvds, RK3288_LVDS_CH0_REG0, val);
|
||||
lvds_writel(lvds, RK3288_LVDS_CH0_REG1,
|
||||
RK3288_LVDS_CH0_REG1_LANECK_BIAS |
|
||||
RK3288_LVDS_CH0_REG1_LANE4_BIAS |
|
||||
RK3288_LVDS_CH0_REG1_LANE3_BIAS |
|
||||
RK3288_LVDS_CH0_REG1_LANE2_BIAS |
|
||||
RK3288_LVDS_CH0_REG1_LANE1_BIAS |
|
||||
RK3288_LVDS_CH0_REG1_LANE0_BIAS);
|
||||
lvds_writel(lvds, RK3288_LVDS_CH0_REG2,
|
||||
RK3288_LVDS_CH0_REG2_RESERVE_ON |
|
||||
RK3288_LVDS_CH0_REG2_LANECK_LVDS_MODE |
|
||||
RK3288_LVDS_CH0_REG2_LANE4_LVDS_MODE |
|
||||
RK3288_LVDS_CH0_REG2_LANE3_LVDS_MODE |
|
||||
RK3288_LVDS_CH0_REG2_LANE2_LVDS_MODE |
|
||||
RK3288_LVDS_CH0_REG2_LANE1_LVDS_MODE |
|
||||
RK3288_LVDS_CH0_REG2_LANE0_LVDS_MODE |
|
||||
RK3288_LVDS_PLL_FBDIV_REG2(0x46));
|
||||
lvds_writel(lvds, RK3288_LVDS_CH0_REG4, 0x00);
|
||||
lvds_writel(lvds, RK3288_LVDS_CH0_REG5, 0x00);
|
||||
rk3288_writel(lvds, RK3288_LVDS_CH0_REG0, val);
|
||||
rk3288_writel(lvds, RK3288_LVDS_CH0_REG1,
|
||||
RK3288_LVDS_CH0_REG1_LANECK_BIAS |
|
||||
RK3288_LVDS_CH0_REG1_LANE4_BIAS |
|
||||
RK3288_LVDS_CH0_REG1_LANE3_BIAS |
|
||||
RK3288_LVDS_CH0_REG1_LANE2_BIAS |
|
||||
RK3288_LVDS_CH0_REG1_LANE1_BIAS |
|
||||
RK3288_LVDS_CH0_REG1_LANE0_BIAS);
|
||||
rk3288_writel(lvds, RK3288_LVDS_CH0_REG2,
|
||||
RK3288_LVDS_CH0_REG2_RESERVE_ON |
|
||||
RK3288_LVDS_CH0_REG2_LANECK_LVDS_MODE |
|
||||
RK3288_LVDS_CH0_REG2_LANE4_LVDS_MODE |
|
||||
RK3288_LVDS_CH0_REG2_LANE3_LVDS_MODE |
|
||||
RK3288_LVDS_CH0_REG2_LANE2_LVDS_MODE |
|
||||
RK3288_LVDS_CH0_REG2_LANE1_LVDS_MODE |
|
||||
RK3288_LVDS_CH0_REG2_LANE0_LVDS_MODE |
|
||||
RK3288_LVDS_PLL_FBDIV_REG2(0x46));
|
||||
rk3288_writel(lvds, RK3288_LVDS_CH0_REG4, 0x00);
|
||||
rk3288_writel(lvds, RK3288_LVDS_CH0_REG5, 0x00);
|
||||
}
|
||||
lvds_writel(lvds, RK3288_LVDS_CH0_REG3, RK3288_LVDS_PLL_FBDIV_REG3(0x46));
|
||||
lvds_writel(lvds, RK3288_LVDS_CH0_REGD, RK3288_LVDS_PLL_PREDIV_REGD(0x0a));
|
||||
lvds_writel(lvds, RK3288_LVDS_CH0_REG20, RK3288_LVDS_CH0_REG20_LSB);
|
||||
rk3288_writel(lvds, RK3288_LVDS_CH0_REG3,
|
||||
RK3288_LVDS_PLL_FBDIV_REG3(0x46));
|
||||
rk3288_writel(lvds, RK3288_LVDS_CH0_REGD,
|
||||
RK3288_LVDS_PLL_PREDIV_REGD(0x0a));
|
||||
rk3288_writel(lvds, RK3288_LVDS_CH0_REG20,
|
||||
RK3288_LVDS_CH0_REG20_LSB);
|
||||
|
||||
lvds_writel(lvds, RK3288_LVDS_CFG_REGC, RK3288_LVDS_CFG_REGC_PLL_ENABLE);
|
||||
lvds_writel(lvds, RK3288_LVDS_CFG_REG21, RK3288_LVDS_CFG_REG21_TX_ENABLE);
|
||||
rk3288_writel(lvds, RK3288_LVDS_CFG_REGC,
|
||||
RK3288_LVDS_CFG_REGC_PLL_ENABLE);
|
||||
rk3288_writel(lvds, RK3288_LVDS_CFG_REG21,
|
||||
RK3288_LVDS_CFG_REG21_TX_ENABLE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void rockchip_lvds_poweroff(struct rockchip_lvds *lvds)
|
||||
static void rk3288_lvds_poweroff(struct rockchip_lvds *lvds)
|
||||
{
|
||||
int ret;
|
||||
u32 val;
|
||||
|
||||
lvds_writel(lvds, RK3288_LVDS_CFG_REG21, RK3288_LVDS_CFG_REG21_TX_ENABLE);
|
||||
lvds_writel(lvds, RK3288_LVDS_CFG_REGC, RK3288_LVDS_CFG_REGC_PLL_ENABLE);
|
||||
rk3288_writel(lvds, RK3288_LVDS_CFG_REG21,
|
||||
RK3288_LVDS_CFG_REG21_TX_ENABLE);
|
||||
rk3288_writel(lvds, RK3288_LVDS_CFG_REGC,
|
||||
RK3288_LVDS_CFG_REGC_PLL_ENABLE);
|
||||
val = LVDS_DUAL | LVDS_TTL_EN | LVDS_CH0_EN | LVDS_CH1_EN | LVDS_PWRDN;
|
||||
val |= val << 16;
|
||||
ret = regmap_write(lvds->grf, lvds->soc_data->grf_soc_con7, val);
|
||||
@ -209,8 +217,8 @@ struct drm_connector_helper_funcs rockchip_lvds_connector_helper_funcs = {
|
||||
.get_modes = rockchip_lvds_connector_get_modes,
|
||||
};
|
||||
|
||||
static void rockchip_lvds_grf_config(struct drm_encoder *encoder,
|
||||
struct drm_display_mode *mode)
|
||||
static void rk3288_lvds_grf_config(struct drm_encoder *encoder,
|
||||
struct drm_display_mode *mode)
|
||||
{
|
||||
struct rockchip_lvds *lvds = encoder_to_lvds(encoder);
|
||||
u8 pin_hsync = (mode->flags & DRM_MODE_FLAG_PHSYNC) ? 1 : 0;
|
||||
@ -241,8 +249,8 @@ static void rockchip_lvds_grf_config(struct drm_encoder *encoder,
|
||||
}
|
||||
}
|
||||
|
||||
static int rockchip_lvds_set_vop_source(struct rockchip_lvds *lvds,
|
||||
struct drm_encoder *encoder)
|
||||
static int rk3288_lvds_set_vop_source(struct rockchip_lvds *lvds,
|
||||
struct drm_encoder *encoder)
|
||||
{
|
||||
u32 val;
|
||||
int ret;
|
||||
@ -278,36 +286,36 @@ rockchip_lvds_encoder_atomic_check(struct drm_encoder *encoder,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void rockchip_lvds_encoder_enable(struct drm_encoder *encoder)
|
||||
static void rk3288_lvds_encoder_enable(struct drm_encoder *encoder)
|
||||
{
|
||||
struct rockchip_lvds *lvds = encoder_to_lvds(encoder);
|
||||
struct drm_display_mode *mode = &encoder->crtc->state->adjusted_mode;
|
||||
int ret;
|
||||
|
||||
drm_panel_prepare(lvds->panel);
|
||||
ret = rockchip_lvds_poweron(lvds);
|
||||
ret = rk3288_lvds_poweron(lvds);
|
||||
if (ret < 0) {
|
||||
DRM_DEV_ERROR(lvds->dev, "failed to power on lvds: %d\n", ret);
|
||||
drm_panel_unprepare(lvds->panel);
|
||||
}
|
||||
rockchip_lvds_grf_config(encoder, mode);
|
||||
rockchip_lvds_set_vop_source(lvds, encoder);
|
||||
rk3288_lvds_grf_config(encoder, mode);
|
||||
rk3288_lvds_set_vop_source(lvds, encoder);
|
||||
drm_panel_enable(lvds->panel);
|
||||
}
|
||||
|
||||
static void rockchip_lvds_encoder_disable(struct drm_encoder *encoder)
|
||||
static void rk3288_lvds_encoder_disable(struct drm_encoder *encoder)
|
||||
{
|
||||
struct rockchip_lvds *lvds = encoder_to_lvds(encoder);
|
||||
|
||||
drm_panel_disable(lvds->panel);
|
||||
rockchip_lvds_poweroff(lvds);
|
||||
rk3288_lvds_poweroff(lvds);
|
||||
drm_panel_unprepare(lvds->panel);
|
||||
}
|
||||
|
||||
static const
|
||||
struct drm_encoder_helper_funcs rockchip_lvds_encoder_helper_funcs = {
|
||||
.enable = rockchip_lvds_encoder_enable,
|
||||
.disable = rockchip_lvds_encoder_disable,
|
||||
struct drm_encoder_helper_funcs rk3288_lvds_encoder_helper_funcs = {
|
||||
.enable = rk3288_lvds_encoder_enable,
|
||||
.disable = rk3288_lvds_encoder_disable,
|
||||
.atomic_check = rockchip_lvds_encoder_atomic_check,
|
||||
};
|
||||
|
||||
@ -378,7 +386,7 @@ static int rockchip_lvds_bind(struct device *dev, struct device *master,
|
||||
/* default set it as output rgb */
|
||||
lvds->output = DISPLAY_OUTPUT_RGB;
|
||||
else
|
||||
lvds->output = lvds_name_to_output(name);
|
||||
lvds->output = rockchip_lvds_name_to_output(name);
|
||||
|
||||
if (lvds->output < 0) {
|
||||
DRM_DEV_ERROR(dev, "invalid output type [%s]\n", name);
|
||||
@ -390,7 +398,7 @@ static int rockchip_lvds_bind(struct device *dev, struct device *master,
|
||||
/* default set it as format vesa 18 */
|
||||
lvds->format = LVDS_VESA_18;
|
||||
else
|
||||
lvds->format = lvds_name_to_format(name);
|
||||
lvds->format = rockchip_lvds_name_to_format(name);
|
||||
|
||||
if (lvds->format < 0) {
|
||||
DRM_DEV_ERROR(dev, "invalid data-mapping format [%s]\n", name);
|
||||
@ -410,7 +418,7 @@ static int rockchip_lvds_bind(struct device *dev, struct device *master,
|
||||
goto err_put_remote;
|
||||
}
|
||||
|
||||
drm_encoder_helper_add(encoder, &rockchip_lvds_encoder_helper_funcs);
|
||||
drm_encoder_helper_add(encoder, &rk3288_lvds_encoder_helper_funcs);
|
||||
|
||||
if (lvds->panel) {
|
||||
connector = &lvds->connector;
|
||||
@ -472,7 +480,7 @@ static void rockchip_lvds_unbind(struct device *dev, struct device *master,
|
||||
{
|
||||
struct rockchip_lvds *lvds = dev_get_drvdata(dev);
|
||||
|
||||
rockchip_lvds_encoder_disable(&lvds->encoder);
|
||||
rk3288_lvds_encoder_disable(&lvds->encoder);
|
||||
if (lvds->panel)
|
||||
drm_panel_detach(lvds->panel);
|
||||
pm_runtime_disable(dev);
|
||||
|
Loading…
Reference in New Issue
Block a user