Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 271374
b: refs/heads/master
c: 5bc416c
h: refs/heads/master
v: v3
  • Loading branch information
Tomi Valkeinen committed Sep 30, 2011
1 parent 2f3a15d commit d225218
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 13 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 4e6a0ab0f9d4c8062bd84f3fc95b175001d46ebf
refs/heads/master: 5bc416cba15f43c799fc02727c6d6887f3e35a4e
14 changes: 14 additions & 0 deletions trunk/arch/arm/mach-omap2/display.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,15 @@ static const struct omap_dss_hwmod_data omap4_dss_hwmod_data[] __initdata = {
{ "dss_hdmi", "omapdss_hdmi", -1 },
};

static int omap_dsi_enable_pads(int dsi_id, unsigned lane_mask)
{
return 0;
}

static void omap_dsi_disable_pads(int dsi_id, unsigned lane_mask)
{
}

int __init omap_display_init(struct omap_dss_board_info *board_data)
{
int r = 0;
Expand All @@ -96,6 +105,11 @@ int __init omap_display_init(struct omap_dss_board_info *board_data)
oh_count = ARRAY_SIZE(omap4_dss_hwmod_data);
}

if (board_data->dsi_enable_pads == NULL)
board_data->dsi_enable_pads = omap_dsi_enable_pads;
if (board_data->dsi_disable_pads == NULL)
board_data->dsi_disable_pads = omap_dsi_disable_pads;

pdata.board_data = board_data;
pdata.board_data->get_context_loss_count =
omap_pm_get_dev_context_loss_count;
Expand Down
42 changes: 31 additions & 11 deletions trunk/drivers/video/omap2/dss/dsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,8 @@ struct dsi_data {
struct clk *dss_clk;
struct clk *sys_clk;

void (*dsi_mux_pads)(bool enable);
int (*enable_pads)(int dsi_id, unsigned lane_mask);
void (*disable_pads)(int dsi_id, unsigned lane_mask);

struct dsi_clock_info current_cinfo;

Expand Down Expand Up @@ -2355,6 +2356,24 @@ static int dsi_cio_wait_tx_clk_esc_reset(struct omap_dss_device *dssdev)
return 0;
}

static unsigned dsi_get_lane_mask(struct omap_dss_device *dssdev)
{
unsigned lanes = 0;

if (dssdev->phy.dsi.clk_lane != 0)
lanes |= 1 << (dssdev->phy.dsi.clk_lane - 1);
if (dssdev->phy.dsi.data1_lane != 0)
lanes |= 1 << (dssdev->phy.dsi.data1_lane - 1);
if (dssdev->phy.dsi.data2_lane != 0)
lanes |= 1 << (dssdev->phy.dsi.data2_lane - 1);
if (dssdev->phy.dsi.data3_lane != 0)
lanes |= 1 << (dssdev->phy.dsi.data3_lane - 1);
if (dssdev->phy.dsi.data4_lane != 0)
lanes |= 1 << (dssdev->phy.dsi.data4_lane - 1);

return lanes;
}

static int dsi_cio_init(struct omap_dss_device *dssdev)
{
struct platform_device *dsidev = dsi_get_dsidev_from_dssdev(dssdev);
Expand All @@ -2365,8 +2384,9 @@ static int dsi_cio_init(struct omap_dss_device *dssdev)

DSSDBGF();

if (dsi->dsi_mux_pads)
dsi->dsi_mux_pads(true);
r = dsi->enable_pads(dsidev->id, dsi_get_lane_mask(dssdev));
if (r)
return r;

dsi_enable_scp_clk(dsidev);

Expand Down Expand Up @@ -2462,19 +2482,18 @@ static int dsi_cio_init(struct omap_dss_device *dssdev)
dsi_cio_disable_lane_override(dsidev);
err_scp_clk_dom:
dsi_disable_scp_clk(dsidev);
if (dsi->dsi_mux_pads)
dsi->dsi_mux_pads(false);
dsi->disable_pads(dsidev->id, dsi_get_lane_mask(dssdev));
return r;
}

static void dsi_cio_uninit(struct platform_device *dsidev)
static void dsi_cio_uninit(struct omap_dss_device *dssdev)
{
struct platform_device *dsidev = dsi_get_dsidev_from_dssdev(dssdev);
struct dsi_data *dsi = dsi_get_dsidrv_data(dsidev);

dsi_cio_power(dsidev, DSI_COMPLEXIO_POWER_OFF);
dsi_disable_scp_clk(dsidev);
if (dsi->dsi_mux_pads)
dsi->dsi_mux_pads(false);
dsi->disable_pads(dsidev->id, dsi_get_lane_mask(dssdev));
}

static void dsi_config_tx_fifo(struct platform_device *dsidev,
Expand Down Expand Up @@ -4161,7 +4180,7 @@ static int dsi_display_init_dsi(struct omap_dss_device *dssdev)

return 0;
err3:
dsi_cio_uninit(dsidev);
dsi_cio_uninit(dssdev);
err2:
dss_select_dispc_clk_source(OMAP_DSS_CLK_SRC_FCK);
dss_select_dsi_clk_source(dsi_module, OMAP_DSS_CLK_SRC_FCK);
Expand Down Expand Up @@ -4190,7 +4209,7 @@ static void dsi_display_uninit_dsi(struct omap_dss_device *dssdev,

dss_select_dispc_clk_source(OMAP_DSS_CLK_SRC_FCK);
dss_select_dsi_clk_source(dsi_module, OMAP_DSS_CLK_SRC_FCK);
dsi_cio_uninit(dsidev);
dsi_cio_uninit(dssdev);
dsi_pll_uninit(dsidev, disconnect_lanes);
}

Expand Down Expand Up @@ -4481,7 +4500,8 @@ static int omap_dsihw_probe(struct platform_device *dsidev)

dss_plat_data = dsidev->dev.platform_data;
board_info = dss_plat_data->board_data;
dsi->dsi_mux_pads = board_info->dsi_mux_pads;
dsi->enable_pads = board_info->dsi_enable_pads;
dsi->disable_pads = board_info->dsi_disable_pads;

spin_lock_init(&dsi->irq_lock);
spin_lock_init(&dsi->errors_lock);
Expand Down
3 changes: 2 additions & 1 deletion trunk/include/video/omapdss.h
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,8 @@ struct omap_dss_board_info {
int num_devices;
struct omap_dss_device **devices;
struct omap_dss_device *default_device;
void (*dsi_mux_pads)(bool enable);
int (*dsi_enable_pads)(int dsi_id, unsigned lane_mask);
void (*dsi_disable_pads)(int dsi_id, unsigned lane_mask);
};

#if defined(CONFIG_OMAP2_DSS_MODULE) || defined(CONFIG_OMAP2_DSS)
Expand Down

0 comments on commit d225218

Please sign in to comment.