summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJimmy Rubin <jimmy.rubin@stericsson.com>2011-10-03 14:16:33 +0200
committerPhilippe Langlais <philippe.langlais@stericsson.com>2012-05-22 11:04:15 +0200
commitcacd0da9d5031fbd5334b3554822415548406576 (patch)
tree0174d80691a654e343c370bf3639a0ddcd851e0a
parent2685cb2d636cf1d75a23ea824b70d9b6826703df (diff)
video: mcde: Remove MCDE_1_0_4 version support
This MCDE version is used in db5500 v1 ST-Ericsson ID: 362765 ST-Ericsson Linux next: NA ST-Ericsson FOSS-OUT ID: Trivial Signed-off-by: Jimmy Rubin <jimmy.rubin@stericsson.com> Change-Id: Ib5a4ca054661f06bd3541021b1404f2c000010bc Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/33322 Tested-by: Jimmy RUBIN <jimmy.rubin@stericsson.com> Reviewed-by: QATOOLS Reviewed-by: Per PERSSON <per.xb.persson@stericsson.com> Reviewed-by: Marcus LORENTZON <marcus.xm.lorentzon@stericsson.com>
-rw-r--r--drivers/video/mcde/mcde_hw.c255
-rw-r--r--drivers/video/mcde/mcde_regs.h16
-rw-r--r--include/video/mcde.h1
3 files changed, 86 insertions, 186 deletions
diff --git a/drivers/video/mcde/mcde_hw.c b/drivers/video/mcde/mcde_hw.c
index aab9c30966c..f82365e6586 100644
--- a/drivers/video/mcde/mcde_hw.c
+++ b/drivers/video/mcde/mcde_hw.c
@@ -108,6 +108,7 @@ static struct clk *clock_dsi_lp;
static u8 mcde_is_enabled;
static struct delayed_work hw_timeout_work;
static u8 dsi_pll_is_enabled;
+static u8 dsi_ifc_is_supported;
static struct mutex mcde_hw_lock;
static inline void mcde_lock(const char *func, int line)
@@ -414,41 +415,27 @@ static void update_mcde_registers(void)
{
struct mcde_platform_data *pdata = mcde_dev->dev.platform_data;
- if (hardware_version == MCDE_CHIP_VERSION_1_0_4) {
- /* Setup output muxing */
- mcde_wreg(MCDE_CONF0,
- MCDE_CONF0_IFIFOCTRLWTRMRKLVL(7));
-
- mcde_wfld(MCDE_RISPP, VCMPARIS, 1);
- mcde_wfld(MCDE_RISPP, VCMPBRIS, 1);
-
- /* Enable channel VCMP interrupts */
- mcde_wreg(MCDE_IMSCPP,
- MCDE_IMSCPP_VCMPAIM(true) |
- MCDE_IMSCPP_VCMPBIM(true));
- } else {
- /* Setup output muxing */
- mcde_wreg(MCDE_CONF0,
- MCDE_CONF0_IFIFOCTRLWTRMRKLVL(7) |
- MCDE_CONF0_OUTMUX0(pdata->outmux[0]) |
- MCDE_CONF0_OUTMUX1(pdata->outmux[1]) |
- MCDE_CONF0_OUTMUX2(pdata->outmux[2]) |
- MCDE_CONF0_OUTMUX3(pdata->outmux[3]) |
- MCDE_CONF0_OUTMUX4(pdata->outmux[4]) |
- pdata->syncmux);
-
- mcde_wfld(MCDE_RISPP, VCMPARIS, 1);
- mcde_wfld(MCDE_RISPP, VCMPBRIS, 1);
- mcde_wfld(MCDE_RISPP, VCMPC0RIS, 1);
- mcde_wfld(MCDE_RISPP, VCMPC1RIS, 1);
-
- /* Enable channel VCMP interrupts */
- mcde_wreg(MCDE_IMSCPP,
- MCDE_IMSCPP_VCMPAIM(true) |
- MCDE_IMSCPP_VCMPBIM(true) |
- MCDE_IMSCPP_VCMPC0IM(true) |
- MCDE_IMSCPP_VCMPC1IM(true));
- }
+ /* Setup output muxing */
+ mcde_wreg(MCDE_CONF0,
+ MCDE_CONF0_IFIFOCTRLWTRMRKLVL(7) |
+ MCDE_CONF0_OUTMUX0(pdata->outmux[0]) |
+ MCDE_CONF0_OUTMUX1(pdata->outmux[1]) |
+ MCDE_CONF0_OUTMUX2(pdata->outmux[2]) |
+ MCDE_CONF0_OUTMUX3(pdata->outmux[3]) |
+ MCDE_CONF0_OUTMUX4(pdata->outmux[4]) |
+ pdata->syncmux);
+
+ mcde_wfld(MCDE_RISPP, VCMPARIS, 1);
+ mcde_wfld(MCDE_RISPP, VCMPBRIS, 1);
+ mcde_wfld(MCDE_RISPP, VCMPC0RIS, 1);
+ mcde_wfld(MCDE_RISPP, VCMPC1RIS, 1);
+
+ /* Enable channel VCMP interrupts */
+ mcde_wreg(MCDE_IMSCPP,
+ MCDE_IMSCPP_VCMPAIM(true) |
+ MCDE_IMSCPP_VCMPBIM(true) |
+ MCDE_IMSCPP_VCMPC0IM(true) |
+ MCDE_IMSCPP_VCMPC1IM(true));
mcde_wreg(MCDE_IMSCCHNL, MCDE_IMSCCHNL_CHNLAIM(0xf));
mcde_wreg(MCDE_IMSCERR, 0xFFFF01FF);
@@ -720,8 +707,7 @@ static u8 portfmt2cdwin(enum mcde_port_pix_fmt pix_fmt)
static u32 get_input_fifo_size(void)
{
- if (hardware_version == MCDE_CHIP_VERSION_1_0_4 ||
- hardware_version == MCDE_CHIP_VERSION_4_0_4)
+ if (hardware_version == MCDE_CHIP_VERSION_4_0_4)
return MCDE_INPUT_FIFO_SIZE_4_0_4;
else
return MCDE_INPUT_FIFO_SIZE_3_0_8;
@@ -747,28 +733,12 @@ static u32 get_output_fifo_size(enum mcde_fifo fifo)
return ret;
}
-static u8 get_dsi_formid(const struct mcde_port *port)
+static inline u8 get_dsi_formatter_id(const struct mcde_port *port)
{
- 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;
+ if (dsi_ifc_is_supported)
+ return 2 * port->link + port->ifc;
+ else
+ return port->link;
}
static struct mcde_chnl_state *find_channel_by_dsilink(int link)
@@ -957,96 +927,60 @@ static int update_channel_static_registers(struct mcde_chnl_state *chnl)
{
const struct mcde_port *port = &chnl->port;
- if (hardware_version != MCDE_CHIP_VERSION_1_0_4) {
- switch (chnl->fifo) {
- case MCDE_FIFO_A:
- mcde_wreg(MCDE_CHNL0MUXING + chnl->id *
- MCDE_CHNL0MUXING_GROUPOFFSET,
- MCDE_CHNL0MUXING_FIFO_ID_ENUM(FIFO_A));
- if (port->type == MCDE_PORTTYPE_DPI) {
- mcde_wfld(MCDE_CTRLA, FORMTYPE,
- MCDE_CTRLA_FORMTYPE_DPITV);
- mcde_wfld(MCDE_CTRLA, FORMID, port->link);
- } else if (port->type == MCDE_PORTTYPE_DSI) {
- mcde_wfld(MCDE_CTRLA, FORMTYPE,
- MCDE_CTRLA_FORMTYPE_DSI);
- mcde_wfld(MCDE_CTRLA, FORMID,
- get_dsi_formid(port));
- }
- break;
- case MCDE_FIFO_B:
- mcde_wreg(MCDE_CHNL0MUXING + chnl->id *
- MCDE_CHNL0MUXING_GROUPOFFSET,
- MCDE_CHNL0MUXING_FIFO_ID_ENUM(FIFO_B));
- if (port->type == MCDE_PORTTYPE_DPI) {
- mcde_wfld(MCDE_CTRLB, FORMTYPE,
- MCDE_CTRLB_FORMTYPE_DPITV);
- mcde_wfld(MCDE_CTRLB, FORMID, port->link);
- } else if (port->type == MCDE_PORTTYPE_DSI) {
- mcde_wfld(MCDE_CTRLB, FORMTYPE,
- MCDE_CTRLB_FORMTYPE_DSI);
- mcde_wfld(MCDE_CTRLB, FORMID,
- get_dsi_formid(port));
- }
+ switch (chnl->fifo) {
+ case MCDE_FIFO_A:
+ mcde_wreg(MCDE_CHNL0MUXING + chnl->id *
+ MCDE_CHNL0MUXING_GROUPOFFSET,
+ MCDE_CHNL0MUXING_FIFO_ID_ENUM(FIFO_A));
+ if (port->type == MCDE_PORTTYPE_DPI) {
+ mcde_wfld(MCDE_CTRLA, FORMTYPE,
+ MCDE_CTRLA_FORMTYPE_DPITV);
+ mcde_wfld(MCDE_CTRLA, FORMID, port->link);
+ } else if (port->type == MCDE_PORTTYPE_DSI) {
+ mcde_wfld(MCDE_CTRLA, FORMTYPE,
+ MCDE_CTRLA_FORMTYPE_DSI);
+ mcde_wfld(MCDE_CTRLA, FORMID,
+ get_dsi_formatter_id(port));
+ }
+ break;
+ case MCDE_FIFO_B:
+ mcde_wreg(MCDE_CHNL0MUXING + chnl->id *
+ MCDE_CHNL0MUXING_GROUPOFFSET,
+ MCDE_CHNL0MUXING_FIFO_ID_ENUM(FIFO_B));
+ if (port->type == MCDE_PORTTYPE_DPI) {
+ mcde_wfld(MCDE_CTRLB, FORMTYPE,
+ MCDE_CTRLB_FORMTYPE_DPITV);
+ mcde_wfld(MCDE_CTRLB, FORMID, port->link);
+ } else if (port->type == MCDE_PORTTYPE_DSI) {
+ mcde_wfld(MCDE_CTRLB, FORMTYPE,
+ MCDE_CTRLB_FORMTYPE_DSI);
+ mcde_wfld(MCDE_CTRLB, FORMID,
+ get_dsi_formatter_id(port));
+ }
- break;
- case MCDE_FIFO_C0:
- mcde_wreg(MCDE_CHNL0MUXING + chnl->id *
- MCDE_CHNL0MUXING_GROUPOFFSET,
- MCDE_CHNL0MUXING_FIFO_ID_ENUM(FIFO_C0));
- if (port->type == MCDE_PORTTYPE_DPI)
- return -EINVAL;
- mcde_wfld(MCDE_CTRLC0, FORMTYPE,
- MCDE_CTRLC0_FORMTYPE_DSI);
- mcde_wfld(MCDE_CTRLC0, FORMID, get_dsi_formid(port));
- break;
- case MCDE_FIFO_C1:
- mcde_wreg(MCDE_CHNL0MUXING + chnl->id *
- MCDE_CHNL0MUXING_GROUPOFFSET,
- MCDE_CHNL0MUXING_FIFO_ID_ENUM(FIFO_C1));
- if (port->type == MCDE_PORTTYPE_DPI)
- return -EINVAL;
- mcde_wfld(MCDE_CTRLC1, FORMTYPE,
- MCDE_CTRLC1_FORMTYPE_DSI);
- mcde_wfld(MCDE_CTRLC1, FORMID, get_dsi_formid(port));
- break;
- default:
+ break;
+ case MCDE_FIFO_C0:
+ mcde_wreg(MCDE_CHNL0MUXING + chnl->id *
+ MCDE_CHNL0MUXING_GROUPOFFSET,
+ MCDE_CHNL0MUXING_FIFO_ID_ENUM(FIFO_C0));
+ if (port->type == MCDE_PORTTYPE_DPI)
return -EINVAL;
- }
- } else {
- switch (chnl->fifo) {
- case MCDE_FIFO_A:
- /* only channel A is supported */
- if (chnl->id != 0)
- return -EINVAL;
-
- if (port->type == MCDE_PORTTYPE_DSI) {
- if ((port->link == 1 &&
- port->ifc == DSI_VIDEO_MODE) ||
- (port->link == 0 && port->ifc == DSI_CMD_MODE))
- return -EINVAL;
- mcde_wfld(MCDE_CR, DSI0_EN_V3, true);
-
- } else if (port->type == MCDE_PORTTYPE_DPI) {
- mcde_wfld(MCDE_CR, DPI_EN_V3, true);
- }
- break;
- case MCDE_FIFO_B:
- if (port->type != MCDE_PORTTYPE_DSI)
- return -EINVAL;
- /* only channel B is supported */
- if (chnl->id != 1)
- return -EINVAL;
-
- if ((port->link == 0 && port->ifc == DSI_VIDEO_MODE) ||
- (port->link == 1 && port->ifc == DSI_CMD_MODE))
- return -EINVAL;
-
- mcde_wfld(MCDE_CR, DSI1_EN_V3, true);
- break;
- default:
+ mcde_wfld(MCDE_CTRLC0, FORMTYPE,
+ MCDE_CTRLC0_FORMTYPE_DSI);
+ mcde_wfld(MCDE_CTRLC0, FORMID, get_dsi_formatter_id(port));
+ break;
+ case MCDE_FIFO_C1:
+ mcde_wreg(MCDE_CHNL0MUXING + chnl->id *
+ MCDE_CHNL0MUXING_GROUPOFFSET,
+ MCDE_CHNL0MUXING_FIFO_ID_ENUM(FIFO_C1));
+ if (port->type == MCDE_PORTTYPE_DPI)
return -EINVAL;
- }
+ mcde_wfld(MCDE_CTRLC1, FORMTYPE,
+ MCDE_CTRLC1_FORMTYPE_DSI);
+ mcde_wfld(MCDE_CTRLC1, FORMID, get_dsi_formatter_id(port));
+ break;
+ default:
+ return -EINVAL;
}
/* Formatter */
@@ -1074,11 +1008,7 @@ static int update_channel_static_registers(struct mcde_chnl_state *chnl)
}
dsi_pll_is_enabled++;
- 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;
+ idx = get_dsi_formatter_id(port);
dsi_wfld(lnk, DSI_MCTL_MAIN_DATA_CTL, LINK_EN, true);
dev_dbg(&mcde_dev->dev, "DSI%d LINK_EN\n", lnk);
@@ -1733,11 +1663,7 @@ 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 ||
- hardware_version == MCDE_CHIP_VERSION_4_0_4)
- fidx = port->link;
- else
- fidx = 2 * port->link + port->ifc;
+ fidx = get_dsi_formatter_id(port);
screen_ppl = video_mode->xres;
screen_lpf = video_mode->yres;
@@ -2377,14 +2303,8 @@ static void chnl_update_continous(struct mcde_chnl_state *chnl,
if (chnl->port.sync_src == MCDE_SYNCSRC_TE0) {
mcde_wfld(MCDE_CRC, SYCEN0, true);
} else if (chnl->port.sync_src == MCDE_SYNCSRC_TE1) {
- if (hardware_version == MCDE_CHIP_VERSION_3_0_8 ||
- hardware_version == MCDE_CHIP_VERSION_4_0_4) {
- mcde_wfld(MCDE_VSCRC1, VSSEL, 1);
- mcde_wfld(MCDE_CRC, SYCEN1, true);
- } else {
- mcde_wfld(MCDE_VSCRC1, VSSEL, 0);
- mcde_wfld(MCDE_CRC, SYCEN0, true);
- }
+ mcde_wfld(MCDE_VSCRC1, VSSEL, 1);
+ mcde_wfld(MCDE_CRC, SYCEN1, true);
}
enable_flow(chnl);
@@ -3069,6 +2989,7 @@ static int probe_hw(void)
if (major_version == 3 && minor_version == 0 &&
development_version >= 8) {
hardware_version = MCDE_CHIP_VERSION_3_0_8;
+ dsi_ifc_is_supported = true;
dev_info(&mcde_dev->dev, "V2 HW\n");
} else if (major_version == 3 && minor_version == 0 &&
development_version >= 5) {
@@ -3076,11 +2997,8 @@ static int probe_hw(void)
return -ENOTSUPP;
} else if (major_version == 1 && minor_version == 0 &&
development_version >= 4) {
- hardware_version = MCDE_CHIP_VERSION_1_0_4;
- mcde_dynamic_power_management = false;
- num_channels = 2;
- num_overlays = 3;
dev_info(&mcde_dev->dev, "V1_U5500 HW\n");
+ return -ENOTSUPP;
} else if (major_version == 4 && minor_version == 0 &&
development_version >= 4) {
hardware_version = MCDE_CHIP_VERSION_4_0_4;
@@ -3094,8 +3012,7 @@ static int probe_hw(void)
for (i = 0; i < num_overlays; i++)
overlays[i].idx = i;
- if (hardware_version == MCDE_CHIP_VERSION_1_0_4 ||
- hardware_version == MCDE_CHIP_VERSION_4_0_4) {
+ if (hardware_version == MCDE_CHIP_VERSION_4_0_4) {
channels[0].ovly0 = &overlays[0];
channels[0].ovly1 = &overlays[1];
channels[1].ovly0 = &overlays[2];
diff --git a/drivers/video/mcde/mcde_regs.h b/drivers/video/mcde/mcde_regs.h
index 06e96e45952..034044d7401 100644
--- a/drivers/video/mcde/mcde_regs.h
+++ b/drivers/video/mcde/mcde_regs.h
@@ -5,22 +5,6 @@
(((__val) & __reg##_##__fld##_MASK) >> __reg##_##__fld##_SHIFT)
#define MCDE_CR 0x00000000
-#define MCDE_CR_DSI0_EN_V3_SHIFT 0
-#define MCDE_CR_DSI0_EN_V3_MASK 0x00000001
-#define MCDE_CR_DSI0_EN_V3(__x) \
- MCDE_VAL2REG(MCDE_CR, DSI0_EN_V3, __x)
-#define MCDE_CR_DSI1_EN_V3_SHIFT 1
-#define MCDE_CR_DSI1_EN_V3_MASK 0x00000002
-#define MCDE_CR_DSI1_EN_V3(__x) \
- MCDE_VAL2REG(MCDE_CR, DSI1_EN_V3, __x)
-#define MCDE_CR_DBI_EN_V3_SHIFT 7
-#define MCDE_CR_DBI_EN_V3_MASK 0x00000080
-#define MCDE_CR_DBI_EN_V3(__x) \
- MCDE_VAL2REG(MCDE_CR, DBI_EN_V3, __x)
-#define MCDE_CR_DPI_EN_V3_SHIFT 9
-#define MCDE_CR_DPI_EN_V3_MASK 0x00000200
-#define MCDE_CR_DPI_EN_V3(__x) \
- MCDE_VAL2REG(MCDE_CR, DPI_EN_V3, __x)
#define MCDE_CR_IFIFOCTRLEN_SHIFT 15
#define MCDE_CR_IFIFOCTRLEN_MASK 0x00008000
#define MCDE_CR_IFIFOCTRLEN(__x) \
diff --git a/include/video/mcde.h b/include/video/mcde.h
index 8e4a86a205a..d0f8862172f 100644
--- a/include/video/mcde.h
+++ b/include/video/mcde.h
@@ -181,7 +181,6 @@ enum mcde_display_rotation {
/* Hardware versions */
#define MCDE_CHIP_VERSION_4_0_4 4 /* U5500 V2 */
-#define MCDE_CHIP_VERSION_1_0_4 3 /* U5500 V1 */
#define MCDE_CHIP_VERSION_3_0_8 2 /* U8500 V2 */
#define MCDE_CHIP_VERSION_3 0