forked from Minki/linux
drm: rcar-du: lvds: Remove LVDS double-enable checks
The DRM core and DU driver guarantee that the LVDS bridge will not be double-enabled or double-disabled. Remove the corresponding unnecessary checks. Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Tested-by: Jacopo Mondi <jacopo+renesas@jmondi.org> Acked-by: Sam Ravnborg <sam@ravnborg.org> Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
This commit is contained in:
parent
f54b4df6b1
commit
968328496b
@ -63,7 +63,6 @@ struct rcar_lvds {
|
|||||||
struct clk *extal; /* External clock */
|
struct clk *extal; /* External clock */
|
||||||
struct clk *dotclkin[2]; /* External DU clocks */
|
struct clk *dotclkin[2]; /* External DU clocks */
|
||||||
} clocks;
|
} clocks;
|
||||||
bool enabled;
|
|
||||||
|
|
||||||
struct drm_display_mode display_mode;
|
struct drm_display_mode display_mode;
|
||||||
enum rcar_lvds_mode mode;
|
enum rcar_lvds_mode mode;
|
||||||
@ -368,15 +367,12 @@ int rcar_lvds_clk_enable(struct drm_bridge *bridge, unsigned long freq)
|
|||||||
|
|
||||||
dev_dbg(lvds->dev, "enabling LVDS PLL, freq=%luHz\n", freq);
|
dev_dbg(lvds->dev, "enabling LVDS PLL, freq=%luHz\n", freq);
|
||||||
|
|
||||||
WARN_ON(lvds->enabled);
|
|
||||||
|
|
||||||
ret = clk_prepare_enable(lvds->clocks.mod);
|
ret = clk_prepare_enable(lvds->clocks.mod);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
__rcar_lvds_pll_setup_d3_e3(lvds, freq, true);
|
__rcar_lvds_pll_setup_d3_e3(lvds, freq, true);
|
||||||
|
|
||||||
lvds->enabled = true;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(rcar_lvds_clk_enable);
|
EXPORT_SYMBOL_GPL(rcar_lvds_clk_enable);
|
||||||
@ -390,13 +386,9 @@ void rcar_lvds_clk_disable(struct drm_bridge *bridge)
|
|||||||
|
|
||||||
dev_dbg(lvds->dev, "disabling LVDS PLL\n");
|
dev_dbg(lvds->dev, "disabling LVDS PLL\n");
|
||||||
|
|
||||||
WARN_ON(!lvds->enabled);
|
|
||||||
|
|
||||||
rcar_lvds_write(lvds, LVDPLLCR, 0);
|
rcar_lvds_write(lvds, LVDPLLCR, 0);
|
||||||
|
|
||||||
clk_disable_unprepare(lvds->clocks.mod);
|
clk_disable_unprepare(lvds->clocks.mod);
|
||||||
|
|
||||||
lvds->enabled = false;
|
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(rcar_lvds_clk_disable);
|
EXPORT_SYMBOL_GPL(rcar_lvds_clk_disable);
|
||||||
|
|
||||||
@ -417,8 +409,6 @@ static void rcar_lvds_enable(struct drm_bridge *bridge)
|
|||||||
u32 lvdcr0;
|
u32 lvdcr0;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
WARN_ON(lvds->enabled);
|
|
||||||
|
|
||||||
ret = clk_prepare_enable(lvds->clocks.mod);
|
ret = clk_prepare_enable(lvds->clocks.mod);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return;
|
return;
|
||||||
@ -507,16 +497,12 @@ static void rcar_lvds_enable(struct drm_bridge *bridge)
|
|||||||
drm_panel_prepare(lvds->panel);
|
drm_panel_prepare(lvds->panel);
|
||||||
drm_panel_enable(lvds->panel);
|
drm_panel_enable(lvds->panel);
|
||||||
}
|
}
|
||||||
|
|
||||||
lvds->enabled = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void rcar_lvds_disable(struct drm_bridge *bridge)
|
static void rcar_lvds_disable(struct drm_bridge *bridge)
|
||||||
{
|
{
|
||||||
struct rcar_lvds *lvds = bridge_to_rcar_lvds(bridge);
|
struct rcar_lvds *lvds = bridge_to_rcar_lvds(bridge);
|
||||||
|
|
||||||
WARN_ON(!lvds->enabled);
|
|
||||||
|
|
||||||
if (lvds->panel) {
|
if (lvds->panel) {
|
||||||
drm_panel_disable(lvds->panel);
|
drm_panel_disable(lvds->panel);
|
||||||
drm_panel_unprepare(lvds->panel);
|
drm_panel_unprepare(lvds->panel);
|
||||||
@ -527,8 +513,6 @@ static void rcar_lvds_disable(struct drm_bridge *bridge)
|
|||||||
rcar_lvds_write(lvds, LVDPLLCR, 0);
|
rcar_lvds_write(lvds, LVDPLLCR, 0);
|
||||||
|
|
||||||
clk_disable_unprepare(lvds->clocks.mod);
|
clk_disable_unprepare(lvds->clocks.mod);
|
||||||
|
|
||||||
lvds->enabled = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool rcar_lvds_mode_fixup(struct drm_bridge *bridge,
|
static bool rcar_lvds_mode_fixup(struct drm_bridge *bridge,
|
||||||
@ -592,8 +576,6 @@ static void rcar_lvds_mode_set(struct drm_bridge *bridge,
|
|||||||
{
|
{
|
||||||
struct rcar_lvds *lvds = bridge_to_rcar_lvds(bridge);
|
struct rcar_lvds *lvds = bridge_to_rcar_lvds(bridge);
|
||||||
|
|
||||||
WARN_ON(lvds->enabled);
|
|
||||||
|
|
||||||
lvds->display_mode = *adjusted_mode;
|
lvds->display_mode = *adjusted_mode;
|
||||||
|
|
||||||
rcar_lvds_get_lvds_mode(lvds);
|
rcar_lvds_get_lvds_mode(lvds);
|
||||||
@ -793,7 +775,6 @@ static int rcar_lvds_probe(struct platform_device *pdev)
|
|||||||
|
|
||||||
lvds->dev = &pdev->dev;
|
lvds->dev = &pdev->dev;
|
||||||
lvds->info = of_device_get_match_data(&pdev->dev);
|
lvds->info = of_device_get_match_data(&pdev->dev);
|
||||||
lvds->enabled = false;
|
|
||||||
|
|
||||||
ret = rcar_lvds_parse_dt(lvds);
|
ret = rcar_lvds_parse_dt(lvds);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user