drm/rockchip: lvds: remove unused code

Change-Id: I88eedd97d926017a350f76085b5d4292caa6d0e4
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
This commit is contained in:
Wyon Bi 2018-01-25 08:56:40 +08:00 committed by Tao Huang
commit e9e837490f
2 changed files with 31 additions and 120 deletions

View file

@ -1,4 +1,4 @@
Rockchip RK3288 LVDS interface
Rockchip SoCs LVDS interface
================================
Required properties:
@ -29,10 +29,6 @@ For px30 rgb output:
- pinctrl-names: must contain a "m0" or "m1" entry.
- pinctrl-0: pin control group to be used for this controller.
Optional properties
- pinctrl-names: must contain a "lcdc" entry.
- pinctrl-0: pin control group to be used for this controller.
Required nodes:
The lvds has two video ports as described by
@ -95,8 +91,6 @@ For Rockchip RK3288:
reg = <0xff96c000 0x4000>;
clocks = <&cru PCLK_LVDS_PHY>;
clock-names = "pclk_lvds";
pinctrl-names = "lcdc";
pinctrl-0 = <&lcdc_ctl>;
avdd1v0-supply = <&vdd10_lcd>;
avdd1v8-supply = <&vcc18_lcd>;
avdd3v3-supply = <&vcca_33>;
@ -140,8 +134,6 @@ For Rockchip RK3368:
clock-names = "pclk_lvds", "pclk_lvds_ctl";
power-domains = <&power RK3368_PD_VIO>;
rockchip,grf = <&grf>;
pinctrl-names = "lcdc";
pinctrl-0 = <&lcdc_lcdc>;
ports {

View file

@ -16,13 +16,13 @@
#include <drm/drmP.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_crtc_helper.h>
#include <drm/drm_dp_helper.h>
#include <drm/drm_panel.h>
#include <drm/drm_of.h>
#include <linux/component.h>
#include <linux/clk.h>
#include <linux/mfd/syscon.h>
#include <linux/of_device.h>
#include <linux/of_graph.h>
#include <linux/pm_runtime.h>
#include <linux/regmap.h>
@ -60,7 +60,6 @@ struct rockchip_lvds_soc_data {
};
struct rockchip_lvds {
void *base;
struct device *dev;
void __iomem *regs;
void __iomem *regs_ctrl;
@ -73,19 +72,15 @@ struct rockchip_lvds {
int output;
int format;
struct drm_device *drm_dev;
struct drm_panel *panel;
struct drm_bridge *bridge;
struct drm_connector connector;
struct drm_encoder encoder;
struct drm_display_mode mode;
struct mutex suspend_lock;
int suspend;
struct pinctrl *pinctrl;
struct pinctrl_state *pins_lcdc;
struct pinctrl_state *pins_m0;
struct pinctrl_state *pins_m1;
struct drm_display_mode mode;
};
static inline void lvds_writel(struct rockchip_lvds *lvds, u32 offset, u32 val)
@ -431,9 +426,8 @@ static const struct drm_connector_funcs rockchip_lvds_connector_funcs = {
static int rockchip_lvds_connector_get_modes(struct drm_connector *connector)
{
struct rockchip_lvds *lvds = connector_to_lvds(connector);
struct drm_panel *panel = lvds->panel;
return panel->funcs->get_modes(panel);
return drm_panel_get_modes(lvds->panel);
}
static struct drm_encoder *
@ -444,13 +438,6 @@ rockchip_lvds_connector_best_encoder(struct drm_connector *connector)
return &lvds->encoder;
}
static enum drm_mode_status rockchip_lvds_connector_mode_valid(
struct drm_connector *connector,
struct drm_display_mode *mode)
{
return MODE_OK;
}
static
int rockchip_lvds_connector_loader_protect(struct drm_connector *connector,
bool on)
@ -466,61 +453,10 @@ int rockchip_lvds_connector_loader_protect(struct drm_connector *connector,
static const
struct drm_connector_helper_funcs rockchip_lvds_connector_helper_funcs = {
.get_modes = rockchip_lvds_connector_get_modes,
.mode_valid = rockchip_lvds_connector_mode_valid,
.best_encoder = rockchip_lvds_connector_best_encoder,
.loader_protect = rockchip_lvds_connector_loader_protect,
};
static void rockchip_lvds_encoder_dpms(struct drm_encoder *encoder, int mode)
{
struct rockchip_lvds *lvds = encoder_to_lvds(encoder);
int ret;
mutex_lock(&lvds->suspend_lock);
switch (mode) {
case DRM_MODE_DPMS_ON:
if (!lvds->suspend)
goto out;
drm_panel_prepare(lvds->panel);
ret = rockchip_lvds_poweron(lvds);
if (ret < 0) {
drm_panel_unprepare(lvds->panel);
goto out;
}
drm_panel_enable(lvds->panel);
lvds->suspend = false;
break;
case DRM_MODE_DPMS_STANDBY:
case DRM_MODE_DPMS_SUSPEND:
case DRM_MODE_DPMS_OFF:
if (lvds->suspend)
goto out;
drm_panel_disable(lvds->panel);
rockchip_lvds_poweroff(lvds);
drm_panel_unprepare(lvds->panel);
lvds->suspend = true;
break;
default:
break;
}
out:
mutex_unlock(&lvds->suspend_lock);
}
static bool
rockchip_lvds_encoder_mode_fixup(struct drm_encoder *encoder,
const struct drm_display_mode *mode,
struct drm_display_mode *adjusted_mode)
{
return true;
}
static void rockchip_lvds_encoder_mode_set(struct drm_encoder *encoder,
struct drm_display_mode *mode,
struct drm_display_mode *adjusted)
@ -540,11 +476,6 @@ static void rockchip_lvds_grf_config(struct drm_encoder *encoder,
u32 val;
int ret;
/* iomux to LCD data/sync mode */
if (lvds->output == DISPLAY_OUTPUT_RGB)
if (lvds->pins_lcdc)
pinctrl_select_state(lvds->pinctrl, lvds->pins_lcdc);
if (LVDS_CHIP(lvds) == RK3288_LVDS) {
val = lvds->format;
if (lvds->output == DISPLAY_OUTPUT_DUAL_LVDS)
@ -743,14 +674,29 @@ static void rockchip_lvds_encoder_enable(struct drm_encoder *encoder)
{
struct rockchip_lvds *lvds = encoder_to_lvds(encoder);
rockchip_lvds_encoder_dpms(encoder, DRM_MODE_DPMS_ON);
if (lvds->panel)
drm_panel_prepare(lvds->panel);
rockchip_lvds_poweron(lvds);
if (lvds->panel)
drm_panel_enable(lvds->panel);
rockchip_lvds_grf_config(encoder, &lvds->mode);
rockchip_lvds_set_vop_source(lvds, encoder);
}
static void rockchip_lvds_encoder_disable(struct drm_encoder *encoder)
{
rockchip_lvds_encoder_dpms(encoder, DRM_MODE_DPMS_OFF);
struct rockchip_lvds *lvds = encoder_to_lvds(encoder);
if (lvds->panel)
drm_panel_disable(lvds->panel);
rockchip_lvds_poweroff(lvds);
if (lvds->panel)
drm_panel_unprepare(lvds->panel);
}
static int rockchip_lvds_encoder_loader_protect(struct drm_encoder *encoder,
@ -768,7 +714,6 @@ static int rockchip_lvds_encoder_loader_protect(struct drm_encoder *encoder,
static const
struct drm_encoder_helper_funcs rockchip_lvds_encoder_helper_funcs = {
.mode_fixup = rockchip_lvds_encoder_mode_fixup,
.mode_set = rockchip_lvds_encoder_mode_set,
.enable = rockchip_lvds_encoder_enable,
.disable = rockchip_lvds_encoder_disable,
@ -854,7 +799,6 @@ static int rockchip_lvds_bind(struct device *dev, struct device *master,
struct device_node *port, *endpoint;
int ret, i;
const char *name;
lvds->drm_dev = drm_dev;
port = of_graph_get_port_by_id(dev->of_node, 1);
if (!port) {
@ -948,7 +892,6 @@ static int rockchip_lvds_bind(struct device *dev, struct device *master,
if (lvds->panel) {
connector = &lvds->connector;
connector->dpms = DRM_MODE_DPMS_OFF;
ret = drm_connector_init(drm_dev, connector,
&rockchip_lvds_connector_funcs,
DRM_MODE_CONNECTOR_LVDS);
@ -1005,8 +948,6 @@ static void rockchip_lvds_unbind(struct device *dev, struct device *master,
{
struct rockchip_lvds *lvds = dev_get_drvdata(dev);
rockchip_lvds_encoder_dpms(&lvds->encoder, DRM_MODE_DPMS_OFF);
drm_panel_detach(lvds->panel);
drm_connector_cleanup(&lvds->connector);
@ -1024,37 +965,23 @@ static int rockchip_lvds_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
struct rockchip_lvds *lvds;
const struct of_device_id *match;
struct resource *res;
int ret;
if (!dev->of_node)
return -ENODEV;
lvds = devm_kzalloc(&pdev->dev, sizeof(*lvds), GFP_KERNEL);
lvds = devm_kzalloc(dev, sizeof(*lvds), GFP_KERNEL);
if (!lvds)
return -ENOMEM;
lvds->dev = dev;
lvds->suspend = true;
match = of_match_node(rockchip_lvds_dt_ids, dev->of_node);
lvds->soc_data = match->data;
lvds->soc_data = of_device_get_match_data(dev);
platform_set_drvdata(pdev, lvds);
if (LVDS_CHIP(lvds) == RK3288_LVDS) {
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
lvds->regs = devm_ioremap_resource(&pdev->dev, res);
if (IS_ERR(lvds->regs))
return PTR_ERR(lvds->regs);
} else {
/* lvds regs on MIPIPHY_REG */
res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
"mipi_lvds_phy");
lvds->regs = devm_ioremap_resource(&pdev->dev, res);
if (IS_ERR(lvds->regs)) {
dev_err(&pdev->dev, "ioremap lvds phy reg failed\n");
return PTR_ERR(lvds->regs);
}
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
lvds->regs = devm_ioremap_resource(dev, res);
if (IS_ERR(lvds->regs))
return PTR_ERR(lvds->regs);
if (!(LVDS_CHIP(lvds) == RK3288_LVDS)) {
/* pll lock on status reg that is MIPICTRL Register */
res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
"mipi_lvds_ctl");
@ -1075,7 +1002,8 @@ static int rockchip_lvds_probe(struct platform_device *pdev)
lvds->hclk_ctrl = NULL;
}
}
lvds->pclk = devm_clk_get(&pdev->dev, "pclk_lvds");
lvds->pclk = devm_clk_get(dev, "pclk_lvds");
if (IS_ERR(lvds->pclk)) {
dev_err(dev, "could not get pclk_lvds\n");
return PTR_ERR(lvds->pclk);
@ -1086,12 +1014,6 @@ static int rockchip_lvds_probe(struct platform_device *pdev)
dev_info(dev, "no pinctrl handle\n");
lvds->pinctrl = NULL;
} else {
lvds->pins_lcdc = pinctrl_lookup_state(lvds->pinctrl, "lcdc");
if (IS_ERR(lvds->pins_lcdc)) {
dev_info(dev, "no lcdc pinctrl state\n");
lvds->pins_lcdc = NULL;
}
lvds->pins_m0 = pinctrl_lookup_state(lvds->pinctrl, "m0");
if (IS_ERR(lvds->pins_m0)) {
dev_info(dev, "no m0 pinctrl state\n");
@ -1112,9 +1034,6 @@ static int rockchip_lvds_probe(struct platform_device *pdev)
return PTR_ERR(lvds->grf);
}
dev_set_drvdata(dev, lvds);
mutex_init(&lvds->suspend_lock);
if (lvds->pclk) {
ret = clk_prepare(lvds->pclk);
if (ret < 0) {