summaryrefslogtreecommitdiff
path: root/drivers/video
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/mcde/mcde_hw.c44
1 files changed, 27 insertions, 17 deletions
diff --git a/drivers/video/mcde/mcde_hw.c b/drivers/video/mcde/mcde_hw.c
index 4653f148b7f..8cf48ecad4b 100644
--- a/drivers/video/mcde/mcde_hw.c
+++ b/drivers/video/mcde/mcde_hw.c
@@ -866,18 +866,25 @@ static u32 get_output_fifo_size(enum mcde_fifo fifo)
static u8 get_dsi_formid(const struct mcde_port *port)
{
- if (port->ifc == DSI_VIDEO_MODE && port->link == 0)
- return MCDE_CTRLA_FORMID_DSI0VID;
- else if (port->ifc == DSI_VIDEO_MODE && port->link == 1)
- return MCDE_CTRLA_FORMID_DSI1VID;
- else if (port->ifc == DSI_VIDEO_MODE && port->link == 2)
- return MCDE_CTRLA_FORMID_DSI2VID;
- else if (port->ifc == DSI_CMD_MODE && port->link == 0)
- return MCDE_CTRLA_FORMID_DSI0CMD;
- else if (port->ifc == DSI_CMD_MODE && port->link == 1)
- return MCDE_CTRLA_FORMID_DSI1CMD;
- else if (port->ifc == DSI_CMD_MODE && port->link == 2)
- return MCDE_CTRLA_FORMID_DSI2CMD;
+ if (hardware_version == MCDE_CHIP_VERSION_4_0_4) {
+ if (port->link == 0)
+ return MCDE_CTRLA_FORMID_DSI0VID;
+ if (port->link == 1)
+ return MCDE_CTRLA_FORMID_DSI0CMD;
+ } else {
+ if (port->ifc == DSI_VIDEO_MODE && port->link == 0)
+ return MCDE_CTRLA_FORMID_DSI0VID;
+ else if (port->ifc == DSI_VIDEO_MODE && port->link == 1)
+ return MCDE_CTRLA_FORMID_DSI1VID;
+ else if (port->ifc == DSI_VIDEO_MODE && port->link == 2)
+ return MCDE_CTRLA_FORMID_DSI2VID;
+ else if (port->ifc == DSI_CMD_MODE && port->link == 0)
+ return MCDE_CTRLA_FORMID_DSI0CMD;
+ else if (port->ifc == DSI_CMD_MODE && port->link == 1)
+ return MCDE_CTRLA_FORMID_DSI1CMD;
+ else if (port->ifc == DSI_CMD_MODE && port->link == 2)
+ return MCDE_CTRLA_FORMID_DSI2CMD;
+ }
return 0;
}
@@ -1283,8 +1290,9 @@ static int update_channel_static_registers(struct mcde_chnl_state *chnl)
}
}
- if (hardware_version == MCDE_CHIP_VERSION_1_0_4)
- idx = chnl->id;
+ if (hardware_version == MCDE_CHIP_VERSION_1_0_4 ||
+ hardware_version == MCDE_CHIP_VERSION_4_0_4)
+ idx = port->link;
else
idx = 2 * port->link + port->ifc;
@@ -1994,8 +2002,9 @@ void update_channel_registers(enum mcde_chnl chnl_id, struct chnl_regs *regs,
u32 dsi_delay0 = 0;
u32 screen_ppl, screen_lpf;
- if (hardware_version == MCDE_CHIP_VERSION_1_0_4)
- fidx = chnl_id;
+ if (hardware_version == MCDE_CHIP_VERSION_1_0_4 ||
+ hardware_version == MCDE_CHIP_VERSION_4_0_4)
+ fidx = port->link;
else
fidx = 2 * port->link + port->ifc;
@@ -3542,7 +3551,8 @@ static int __devinit mcde_probe(struct platform_device *pdev)
for (i = 0; i < num_overlays; i++)
overlays[i].idx = i;
- if (hardware_version == MCDE_CHIP_VERSION_1_0_4) {
+ if (hardware_version == MCDE_CHIP_VERSION_1_0_4 ||
+ hardware_version == MCDE_CHIP_VERSION_4_0_4) {
channels[0].ovly0 = &overlays[0];
channels[0].ovly1 = &overlays[1];
channels[1].ovly0 = &overlays[2];