summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Conley <cconley@phytec.com>2013-08-07 10:10:17 -0700
committerAnthony Felice <tony.felice@timesys.com>2013-09-17 14:22:16 -0400
commitfaeeec7b59275abfdc0296758c554c62193458ce (patch)
tree661ce660e4a96dfb848c30db263d3eb975d850f2
parentae0d63dd7e85752328b276aa5581d8d371783db4 (diff)
pcl052:hdmi encoder support path excluded, minor fixes on clock related define
Signed-off-by: Chris Conley <cconley@phytec.com> Signed-off-by: Russell Robinson <rrobinson@phytec.com>
-rw-r--r--arch/arm/mach-mvf/board-pcl052.c2
-rw-r--r--drivers/video/Kconfig7
-rw-r--r--drivers/video/Makefile1
-rw-r--r--drivers/video/mvf-tda1998x.c221
-rw-r--r--drivers/video/mvf-tda1998x.h268
-rw-r--r--drivers/video/mvf_dcu.c35
6 files changed, 19 insertions, 515 deletions
diff --git a/arch/arm/mach-mvf/board-pcl052.c b/arch/arm/mach-mvf/board-pcl052.c
index 5e715df8a876..d87cc0e8c977 100644
--- a/arch/arm/mach-mvf/board-pcl052.c
+++ b/arch/arm/mach-mvf/board-pcl052.c
@@ -397,7 +397,7 @@ static const struct pm_platform_data pcl052_pm_data __initconst = {
#endif
static struct mvf_dcu_platform_data mvf_dcu_pdata = {
- .mode_str = "640x480p_min", /* works with HDMI PC, not HDMI TV */
+ .mode_str = "640x480p_hdmipc", /* works with HDMI PC, not HDMI TV */
// .mode_str = "720x480p",
.default_bpp = 24,
};
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index fefbd85e97a0..ca65437de427 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -1961,13 +1961,6 @@ config FB_MVF_DCU
---help---
Framebuffer driver for the Faraday SoC DCU
-config MVF_TDA_998X
- depends on FB_MVF_DCU && I2C
- tristate "TDA998X HDMI Support"
- default n
- ---help---
- TDA1998x HDMI Encoder support for MVF FB
-
config MVF_DCU_BLANKING_TEST
bool "DCU framebuffer blanking support"
depends on FB && ARCH_MVF && FB_MVF_DCU
diff --git a/drivers/video/Makefile b/drivers/video/Makefile
index d420d828ee14..ed2fa59a726e 100644
--- a/drivers/video/Makefile
+++ b/drivers/video/Makefile
@@ -123,7 +123,6 @@ obj-$(CONFIG_FB_S3C) += s3c-fb.o
obj-$(CONFIG_FB_S3C2410) += s3c2410fb.o
obj-$(CONFIG_FB_FSL_DIU) += fsl-diu-fb.o
obj-$(CONFIG_FB_MVF_DCU) += mvf_dcu.o
-obj-$(CONFIG_MVF_TDA_998X) += mvf-tda1998x.o
obj-$(CONFIG_FB_COBALT) += cobalt_lcdfb.o
obj-$(CONFIG_FB_PNX4008_DUM) += pnx4008/
obj-$(CONFIG_FB_PNX4008_DUM_RGB) += pnx4008/
diff --git a/drivers/video/mvf-tda1998x.c b/drivers/video/mvf-tda1998x.c
deleted file mode 100644
index 79f92250f215..000000000000
--- a/drivers/video/mvf-tda1998x.c
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * File: dvf-tda1998x.c
- *
- * Description: This file contains condensed support for the TDA1998X HDMI codec required for display
- * from the Freescale Vybrid DCU4 output. It assumes the i2c adapter access routines are available.
- */
-// CNC TODO Header?
-
-//TODO Pare this down CNC
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/platform_device.h>
-#include <linux/sched.h>
-#include <linux/errno.h>
-#include <linux/string.h>
-#include <linux/interrupt.h>
-#include <linux/slab.h>
-#include <linux/fb.h>
-#include <linux/delay.h>
-#include <linux/init.h>
-#include <linux/ioport.h>
-#include <linux/dma-mapping.h>
-#include <linux/clk.h>
-#include <linux/console.h>
-#include <linux/io.h>
-#include <linux/uaccess.h>
-#include <linux/gpio.h>
-#include <linux/delay.h>
-#include <asm/mach-types.h>
-#include <mach/mvf.h>
-#include <mach/mvf-dcu-fb.h>
-
-//Required
-#include <linux/i2c.h>
-#include "mvf-tda1998x.h"
-
-
-/* Global Data */
-static struct i2c_adapter *g_i2c_adapter = NULL;
-static u8 g_u8_curr_page = 0;
-
-/* Static Functions */
-static void
-set_page(uint16_t reg)
-{
- if (REG2PAGE(reg) != g_u8_curr_page) {
- uint8_t buf[2] = { REG_CURPAGE, REG2PAGE(reg) };
- struct i2c_msg msg = {TDA1998X_I2C_HDMI_SA, 0, sizeof(buf), buf};
- int ret;
-
- ret = i2c_transfer(g_i2c_adapter, &msg, 1);
- if (ret < 0)
- {
- printk(KERN_ERR "Error %d writing to REG_CURPAGE\n", ret);
- }
- else
- {
- g_u8_curr_page = REG2PAGE(reg);
- }
- }
-}
-
-static void
-reg_write(uint16_t reg, uint8_t val)
-{
- uint8_t buf[2] = {REG2ADDR(reg), val};
- int ret;
- struct i2c_msg msg = {TDA1998X_I2C_HDMI_SA, 0, sizeof(buf), buf};
-
- set_page(reg);
-
- ret = i2c_transfer(g_i2c_adapter, &msg, 1);
- if (ret < 0)
- printk(KERN_ERR "Error %d writing to 0x%x\n", ret, reg);
-}
-
-static uint8_t
-reg_read(uint16_t reg)
-{
- uint8_t u8addr = REG2ADDR(reg);
- uint8_t u8ret = 0;
- int ret;
- struct i2c_msg rgMsg[] = {/* slaveaddr, flags, len, buf */
- {TDA1998X_I2C_HDMI_SA, 0, sizeof(u8addr), &u8addr},
- {TDA1998X_I2C_HDMI_SA, I2C_M_RD, sizeof(u8ret), &u8ret}};
-
- /* Change the register page to the one we want */
- set_page(reg);
-
- ret = i2c_transfer(g_i2c_adapter, rgMsg, 2);
- if (ret < 0)
- {
- printk(KERN_ERR "<%s> Error %d reading from 0x%x\n", __func__, ret, reg);
- return 0;
- }
- else
- {
- return u8ret;
- }
-}
-
-static void
-reg_set(uint16_t reg, uint8_t val)
-{
- reg_write(reg, reg_read(reg) | val);
-}
-
-static void
-reg_clear(uint16_t reg, uint8_t val)
-{
- reg_write(reg, reg_read(reg) & ~val);
-}
-
-static bool
-tda1998x_init_encoder(void)
-{
- int ret;
- uint8_t rgBuf[][2] = { /* Register Address, Register Value */
- {REG_CEC_ENAMODS, (CEC_ENAMODS_EN_RXSENS
- | CEC_ENAMODS_EN_HDMI)},
- {REG_CEC_FRO_IM_CLK_CTRL, (CEC_FRO_IM_CLK_CTRL_GHOST_DIS
- | CEC_FRO_IM_CLK_CTRL_IMCLK_SEL)},
- {REG_CEC_ENAMODS, (CEC_ENAMODS_EN_CEC_CLK
- | CEC_ENAMODS_EN_RXSENS
- | CEC_ENAMODS_EN_HDMI
- | CEC_ENAMODS_EN_CEC)}
- };
- struct i2c_msg rgMsg[] =
- {
- /* slaveaddr,flags,len,buf */
- {TDA1998X_I2C_CEC_SA, 0, sizeof(rgBuf[0]), rgBuf[0]},
- {TDA1998X_I2C_CEC_SA, 0, sizeof(rgBuf[1]), rgBuf[1]},
- {TDA1998X_I2C_CEC_SA, 0, sizeof(rgBuf[2]), rgBuf[2]},
- };
-
- /* Initialize the HDMI interface, otherwise the HDMI I2C I/F is off */
- ret = i2c_transfer(g_i2c_adapter, &rgMsg[0], 1);
- if (ret < 0)
- goto ret_error;
-
- /*
- * Begin Reset Sequence
- */
- /* reset audio and i2c master: */
- reg_set(REG_SOFTRESET, SOFTRESET_AUDIO | SOFTRESET_I2C_MASTER);
- msleep(50);
- reg_clear(REG_SOFTRESET, SOFTRESET_AUDIO | SOFTRESET_I2C_MASTER);
- msleep(50);
-
- /* reset transmitter */
- reg_set(REG_MAIN_CNTRL0, MAIN_CNTRL0_SR);
- reg_clear(REG_MAIN_CNTRL0, MAIN_CNTRL0_SR);
-
- /* PLL registers common configuration */
- reg_write(REG_PLL_SERIAL_1, 0x00);
- reg_write(REG_PLL_SERIAL_2, PLL_SERIAL_2_SRL_NOSC(1));
- reg_write(REG_PLL_SERIAL_3, 0x00);
- reg_write(REG_SERIALIZER, 0x00);
- reg_write(REG_BUFFER_OUT, 0x00);
- reg_write(REG_PLL_SCG1, 0x00);
- reg_write(REG_AUDIO_DIV, 0x03);
- reg_write(REG_SEL_CLK, SEL_CLK_SEL_CLK1 | SEL_CLK_ENA_SC_CLK);
- reg_write(REG_PLL_SCGN1, 0xfa);
- reg_write(REG_PLL_SCGN2, 0x00);
- reg_write(REG_PLL_SCGR1, 0x5b);
- reg_write(REG_PLL_SCGR2, 0x00);
- reg_write(REG_PLL_SCG2, 0x10);
- /*
- * End Reset Sequence
- */
-
- /* Enable DDC */
- reg_write(REG_DDC_DISABLE, 0x00);
-
- /* Set clock on DDC channel */
- reg_write(REG_TX3, 39);
-
- /* Initialize CEC Interface */
- ret = i2c_transfer(g_i2c_adapter, &rgMsg[1], 1);
- if (ret < 0)
- goto ret_error;
-
- /* Enable DPMS */
- /* enable video ports */
- reg_write(REG_ENA_VP_0, 0xff);
- reg_write(REG_ENA_VP_1, 0xff);
- reg_write(REG_ENA_VP_2, 0xff);
- /* set muxing after enabling ports: */
- /* Set to RGB 3x 8-bit per 7.2.3 mappings */
- reg_write(REG_VIP_CNTRL_0, 0x23);
- reg_write(REG_VIP_CNTRL_1, 0x01);
- reg_write(REG_VIP_CNTRL_2, 0x45);
-
- /* Enable HDMI Encoding */
- ret = i2c_transfer(g_i2c_adapter, &rgMsg[2], 1);
- if (ret < 0)
- goto ret_error;
-
- reg_write(REG_TX33, TX33_HDMI);
- reg_write(REG_TBG_CNTRL_1, 0x7c);
-
- return true;
-
-ret_error:
- printk(KERN_ERR "<%s> HDMI I2C I/F failed (%d)\n", __func__, ret);
- return false;
-} /* tda1998x_init_encoder */
-
-/* Public Functions */
-bool init_tda19988(void)
-{
- /* Get the handle to the i2c channel */
- g_i2c_adapter = i2c_get_adapter(TDA1998X_I2C_BUS);
- if (g_i2c_adapter == NULL)
- {
- printk(KERN_ERR "<%s> CEC I2C Adapter not found\n", __func__);
- return false;
- }
- return tda1998x_init_encoder();
-}
-
diff --git a/drivers/video/mvf-tda1998x.h b/drivers/video/mvf-tda1998x.h
deleted file mode 100644
index 5a1ebf397c39..000000000000
--- a/drivers/video/mvf-tda1998x.h
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * File: dvf-tda1998x.h
- *
- * Description: This file contains condensed TDA register defines required to support the
- * TDA1998X HDMI codec required for display from the Freescale Vybrid DCU4 output.
- *
- */
-//CNC TODO: Which header for this?
-#ifndef _MVF_TDA1998X_H_
-#define _MVF_TDA1998X_H_
-
-/* Public Functions */
-bool init_tda19988(void);
-
-/* Platform Settings */
-#define EDID_LENGTH 0x80
-#define TDA1998X_I2C_BUS 2
-#define TDA1998X_I2C_CEC_SA 0x34
-#define TDA1998X_I2C_HDMI_SA 0x70
-
-/* Device versions: */
-#define TDA9989N2 0x0101
-#define TDA19989 0x0201
-#define TDA19989N2 0x0202
-#define TDA19988 0x0301
-
-/* The TDA9988 series of devices use a paged register scheme.. to simplify
- * things we encode the page # in upper bits of the register #. To read/
- * write a given register, we need to make sure CURPAGE register is set
- * appropriately. Which implies reads/writes are not atomic. Fun!
- */
-
-#define REG(page, addr) (((page) << 8) | (addr))
-#define REG2ADDR(reg) ((reg) & 0xff)
-#define REG2PAGE(reg) (((reg) >> 8) & 0xff)
-
-#define REG_CURPAGE 0xff /* write */
-
-/* Page 00h: General Control */
-#define REG_VERSION_LSB REG(0x00, 0x00) /* read */
-#define REG_MAIN_CNTRL0 REG(0x00, 0x01) /* read/write */
-# define MAIN_CNTRL0_SR (1 << 0)
-# define MAIN_CNTRL0_DECS (1 << 1)
-# define MAIN_CNTRL0_DEHS (1 << 2)
-# define MAIN_CNTRL0_CECS (1 << 3)
-# define MAIN_CNTRL0_CEHS (1 << 4)
-# define MAIN_CNTRL0_SCALER (1 << 7)
-#define REG_VERSION_MSB REG(0x00, 0x02) /* read */
-#define REG_SOFTRESET REG(0x00, 0x0a) /* write */
-# define SOFTRESET_AUDIO (1 << 0)
-# define SOFTRESET_I2C_MASTER (1 << 1)
-#define REG_DDC_DISABLE REG(0x00, 0x0b) /* read/write */
-#define REG_CCLK_ON REG(0x00, 0x0c) /* read/write */
-#define REG_I2C_MASTER REG(0x00, 0x0d) /* read/write */
-# define I2C_MASTER_DIS_MM (1 << 0)
-# define I2C_MASTER_DIS_FILT (1 << 1)
-# define I2C_MASTER_APP_STRT_LAT (1 << 2)
-#define REG_INT_FLAGS_0 REG(0x00, 0x0f) /* read/write */
-#define REG_INT_FLAGS_1 REG(0x00, 0x10) /* read/write */
-#define REG_INT_FLAGS_2 REG(0x00, 0x11) /* read/write */
-# define INT_FLAGS_2_EDID_BLK_RD (1 << 1)
-#define REG_ENA_VP_0 REG(0x00, 0x18) /* read/write */
-#define REG_ENA_VP_1 REG(0x00, 0x19) /* read/write */
-#define REG_ENA_VP_2 REG(0x00, 0x1a) /* read/write */
-#define REG_ENA_AP REG(0x00, 0x1e) /* read/write */
-#define REG_VIP_CNTRL_0 REG(0x00, 0x20) /* write */
-# define VIP_CNTRL_0_MIRR_A (1 << 7)
-# define VIP_CNTRL_0_SWAP_A(x) (((x) & 7) << 4)
-# define VIP_CNTRL_0_MIRR_B (1 << 3)
-# define VIP_CNTRL_0_SWAP_B(x) (((x) & 7) << 0)
-#define REG_VIP_CNTRL_1 REG(0x00, 0x21) /* write */
-# define VIP_CNTRL_1_MIRR_C (1 << 7)
-# define VIP_CNTRL_1_SWAP_C(x) (((x) & 7) << 4)
-# define VIP_CNTRL_1_MIRR_D (1 << 3)
-# define VIP_CNTRL_1_SWAP_D(x) (((x) & 7) << 0)
-#define REG_VIP_CNTRL_2 REG(0x00, 0x22) /* write */
-# define VIP_CNTRL_2_MIRR_E (1 << 7)
-# define VIP_CNTRL_2_SWAP_E(x) (((x) & 7) << 4)
-# define VIP_CNTRL_2_MIRR_F (1 << 3)
-# define VIP_CNTRL_2_SWAP_F(x) (((x) & 7) << 0)
-#define REG_VIP_CNTRL_3 REG(0x00, 0x23) /* write */
-# define VIP_CNTRL_3_X_TGL (1 << 0)
-# define VIP_CNTRL_3_H_TGL (1 << 1)
-# define VIP_CNTRL_3_V_TGL (1 << 2)
-# define VIP_CNTRL_3_EMB (1 << 3)
-# define VIP_CNTRL_3_SYNC_DE (1 << 4)
-# define VIP_CNTRL_3_SYNC_HS (1 << 5)
-# define VIP_CNTRL_3_DE_INT (1 << 6)
-# define VIP_CNTRL_3_EDGE (1 << 7)
-#define REG_VIP_CNTRL_4 REG(0x00, 0x24) /* write */
-# define VIP_CNTRL_4_BLC(x) (((x) & 3) << 0)
-# define VIP_CNTRL_4_BLANKIT(x) (((x) & 3) << 2)
-# define VIP_CNTRL_4_CCIR656 (1 << 4)
-# define VIP_CNTRL_4_656_ALT (1 << 5)
-# define VIP_CNTRL_4_TST_656 (1 << 6)
-# define VIP_CNTRL_4_TST_PAT (1 << 7)
-#define REG_VIP_CNTRL_5 REG(0x00, 0x25) /* write */
-# define VIP_CNTRL_5_CKCASE (1 << 0)
-# define VIP_CNTRL_5_SP_CNT(x) (((x) & 3) << 1)
-
-#define REG_MUX_AP REG(0x00, 0x26)
-# define MUX_AP_SELECT_I2S (0x64)
-#define REG_MAT_CONTRL REG(0x00, 0x80) /* write */
-# define MAT_CONTRL_MAT_SC(x) (((x) & 3) << 0)
-# define MAT_CONTRL_MAT_BP (1 << 2)
-#define REG_VIDFORMAT REG(0x00, 0xa0) /* write */
-#define REG_REFPIX_MSB REG(0x00, 0xa1) /* write */
-#define REG_REFPIX_LSB REG(0x00, 0xa2) /* write */
-#define REG_REFLINE_MSB REG(0x00, 0xa3) /* write */
-#define REG_REFLINE_LSB REG(0x00, 0xa4) /* write */
-#define REG_NPIX_MSB REG(0x00, 0xa5) /* write */
-#define REG_NPIX_LSB REG(0x00, 0xa6) /* write */
-#define REG_NLINE_MSB REG(0x00, 0xa7) /* write */
-#define REG_NLINE_LSB REG(0x00, 0xa8) /* write */
-#define REG_VS_LINE_STRT_1_MSB REG(0x00, 0xa9) /* write */
-#define REG_VS_LINE_STRT_1_LSB REG(0x00, 0xaa) /* write */
-#define REG_VS_PIX_STRT_1_MSB REG(0x00, 0xab) /* write */
-#define REG_VS_PIX_STRT_1_LSB REG(0x00, 0xac) /* write */
-#define REG_VS_LINE_END_1_MSB REG(0x00, 0xad) /* write */
-#define REG_VS_LINE_END_1_LSB REG(0x00, 0xae) /* write */
-#define REG_VS_PIX_END_1_MSB REG(0x00, 0xaf) /* write */
-#define REG_VS_PIX_END_1_LSB REG(0x00, 0xb0) /* write */
-#define REG_VS_PIX_STRT_2_MSB REG(0x00, 0xb3) /* write */
-#define REG_VS_PIX_STRT_2_LSB REG(0x00, 0xb4) /* write */
-#define REG_VS_PIX_END_2_MSB REG(0x00, 0xb7) /* write */
-#define REG_VS_PIX_END_2_LSB REG(0x00, 0xb8) /* write */
-#define REG_HS_PIX_START_MSB REG(0x00, 0xb9) /* write */
-#define REG_HS_PIX_START_LSB REG(0x00, 0xba) /* write */
-#define REG_HS_PIX_STOP_MSB REG(0x00, 0xbb) /* write */
-#define REG_HS_PIX_STOP_LSB REG(0x00, 0xbc) /* write */
-#define REG_VWIN_START_1_MSB REG(0x00, 0xbd) /* write */
-#define REG_VWIN_START_1_LSB REG(0x00, 0xbe) /* write */
-#define REG_VWIN_END_1_MSB REG(0x00, 0xbf) /* write */
-#define REG_VWIN_END_1_LSB REG(0x00, 0xc0) /* write */
-#define REG_DE_START_MSB REG(0x00, 0xc5) /* write */
-#define REG_DE_START_LSB REG(0x00, 0xc6) /* write */
-#define REG_DE_STOP_MSB REG(0x00, 0xc7) /* write */
-#define REG_DE_STOP_LSB REG(0x00, 0xc8) /* write */
-#define REG_TBG_CNTRL_0 REG(0x00, 0xca) /* write */
-# define TBG_CNTRL_0_FRAME_DIS (1 << 5)
-# define TBG_CNTRL_0_SYNC_MTHD (1 << 6)
-# define TBG_CNTRL_0_SYNC_ONCE (1 << 7)
-#define REG_TBG_CNTRL_1 REG(0x00, 0xcb) /* write */
-# define TBG_CNTRL_1_VH_TGL_0 (1 << 0)
-# define TBG_CNTRL_1_VH_TGL_1 (1 << 1)
-# define TBG_CNTRL_1_VH_TGL_2 (1 << 2)
-# define TBG_CNTRL_1_VHX_EXT_DE (1 << 3)
-# define TBG_CNTRL_1_VHX_EXT_HS (1 << 4)
-# define TBG_CNTRL_1_VHX_EXT_VS (1 << 5)
-# define TBG_CNTRL_1_DWIN_DIS (1 << 6)
-#define REG_ENABLE_SPACE REG(0x00, 0xd6) /* write */
-#define REG_HVF_CNTRL_0 REG(0x00, 0xe4) /* write */
-# define HVF_CNTRL_0_SM (1 << 7)
-# define HVF_CNTRL_0_RWB (1 << 6)
-# define HVF_CNTRL_0_PREFIL(x) (((x) & 3) << 2)
-# define HVF_CNTRL_0_INTPOL(x) (((x) & 3) << 0)
-#define REG_HVF_CNTRL_1 REG(0x00, 0xe5) /* write */
-# define HVF_CNTRL_1_FOR (1 << 0)
-# define HVF_CNTRL_1_YUVBLK (1 << 1)
-# define HVF_CNTRL_1_VQR(x) (((x) & 3) << 2)
-# define HVF_CNTRL_1_PAD(x) (((x) & 3) << 4)
-# define HVF_CNTRL_1_SEMI_PLANAR (1 << 6)
-#define REG_RPT_CNTRL REG(0x00, 0xf0) /* write */
-#define REG_I2S_FORMAT REG(0x00, 0xfc)
-#define REG_AIP_CLKSEL REG(0x00, 0xfd)
-# define SEL_AIP_I2S (1 << 3) /* I2S Clk */
-
-/* Page 02h: PLL settings */
-#define REG_PLL_SERIAL_1 REG(0x02, 0x00) /* read/write */
-# define PLL_SERIAL_1_SRL_FDN (1 << 0)
-# define PLL_SERIAL_1_SRL_IZ(x) (((x) & 3) << 1)
-# define PLL_SERIAL_1_SRL_MAN_IZ (1 << 6)
-#define REG_PLL_SERIAL_2 REG(0x02, 0x01) /* read/write */
-# define PLL_SERIAL_2_SRL_NOSC(x) (((x) & 3) << 0)
-# define PLL_SERIAL_2_SRL_PR(x) (((x) & 0xf) << 4)
-#define REG_PLL_SERIAL_3 REG(0x02, 0x02) /* read/write */
-# define PLL_SERIAL_3_SRL_CCIR (1 << 0)
-# define PLL_SERIAL_3_SRL_DE (1 << 2)
-# define PLL_SERIAL_3_SRL_PXIN_SEL (1 << 4)
-#define REG_SERIALIZER REG(0x02, 0x03) /* read/write */
-#define REG_BUFFER_OUT REG(0x02, 0x04) /* read/write */
-#define REG_PLL_SCG1 REG(0x02, 0x05) /* read/write */
-#define REG_PLL_SCG2 REG(0x02, 0x06) /* read/write */
-#define REG_PLL_SCGN1 REG(0x02, 0x07) /* read/write */
-#define REG_PLL_SCGN2 REG(0x02, 0x08) /* read/write */
-#define REG_PLL_SCGR1 REG(0x02, 0x09) /* read/write */
-#define REG_PLL_SCGR2 REG(0x02, 0x0a) /* read/write */
-#define REG_AUDIO_DIV REG(0x02, 0x0e) /* read/write */
-#define REG_SEL_CLK REG(0x02, 0x11) /* read/write */
-# define SEL_CLK_SEL_CLK1 (1 << 0)
-# define SEL_CLK_SEL_VRF_CLK(x) (((x) & 3) << 1)
-# define SEL_CLK_ENA_SC_CLK (1 << 3)
-#define REG_ANA_GENERAL REG(0x02, 0x12) /* read/write */
-
-
-/* Page 09h: EDID Control */
-#define REG_EDID_DATA_0 REG(0x09, 0x00) /* read */
-/* next 127 successive registers are the EDID block */
-#define REG_EDID_CTRL REG(0x09, 0xfa) /* read/write */
-#define REG_DDC_ADDR REG(0x09, 0xfb) /* read/write */
-#define REG_DDC_OFFS REG(0x09, 0xfc) /* read/write */
-#define REG_DDC_SEGM_ADDR REG(0x09, 0xfd) /* read/write */
-#define REG_DDC_SEGM REG(0x09, 0xfe) /* read/write */
-
-/* Page 10h: information frames and packets */
-#define REG_AVI_IF REG(0x10, 0x40) /* AVI Infoframe packet */
-#define REG_AUDIO_IF REG(0x10, 0x80) /* AVI Infoframe packet */
-
-/* Page 11h: audio settings and content info packets */
-#define REG_AIP_CNTRL_0 REG(0x11, 0x00) /* read/write */
-# define AIP_CNTRL_0_RST_FIFO (1 << 0)
-# define AIP_CNTRL_0_SWAP (1 << 1)
-# define AIP_CNTRL_0_LAYOUT (1 << 2)
-# define AIP_CNTRL_0_ACR_MAN (1 << 5)
-# define AIP_CNTRL_0_RST_CTS (1 << 6)
-#define REG_ACR_CTS_0 REG(0x11, 0x05)
-#define REG_ACR_CTS_1 REG(0x11, 0x06)
-#define REG_ACR_CTS_2 REG(0x11, 0x07)
-#define REG_ACR_N_0 REG(0x11, 0x08)
-#define REG_ACR_N_1 REG(0x11, 0x09)
-#define REG_ACR_N_2 REG(0x11, 0x0a)
-#define REG_GC_AVMUTE REG(0x11, 0x0b)
-# define GC_AVMUTE_CLRMUTE (1 << 0)
-# define GC_AVMUTE_SETMUTE (1 << 1)
-#define REG_CTS_N REG(0x11, 0x0c)
-#define REG_ENC_CNTRL REG(0x11, 0x0d) /* read/write */
-# define ENC_CNTRL_RST_ENC (1 << 0)
-# define ENC_CNTRL_RST_SEL (1 << 1)
-# define ENC_CNTRL_CTL_CODE(x) (((x) & 3) << 2)
-#define REG_DIP_FLAGS REG(0x11, 0x0e)
-# define DIP_FLAGS_ACR (1 << 0)
-#define REG_DIP_IF_FLAGS REG(0x11, 0x0f) /* read/write */
-#define DIP_IF_FLAGS_IF1 (1 << 1)
-#define DIP_IF_FLAGS_IF2 (1 << 2)
-#define DIP_IF_FLAGS_IF3 (1 << 3)
-#define DIP_IF_FLAGS_IF4 (1 << 4)
-#define DIP_IF_FLAGS_IF5 (1 << 5)
-
-/* Page 12h: HDCP and OTP */
-#define REG_TX3 REG(0x12, 0x9a) /* read/write */
-#define REG_TX33 REG(0x12, 0xb8) /* read/write */
-# define TX33_HDMI (1 << 1)
-
-
-/* Page 13h: Gamut related metadata packets */
-
-/* CEC registers: (not paged)
- */
-#define REG_CEC_FRO_IM_CLK_CTRL 0xfb /* read/write */
-# define CEC_FRO_IM_CLK_CTRL_GHOST_DIS (1 << 7)
-# define CEC_FRO_IM_CLK_CTRL_ENA_OTP (1 << 6)
-# define CEC_FRO_IM_CLK_CTRL_IMCLK_SEL (1 << 1)
-# define CEC_FRO_IM_CLK_CTRL_FRO_DIV (1 << 0)
-#define REG_CEC_RXSHPDLEV 0xfe /* read */
-# define CEC_RXSHPDLEV_RXSENS (1 << 0)
-# define CEC_RXSHPDLEV_HPD (1 << 1)
-
-#define REG_CEC_ENAMODS 0xff /* read/write */
-# define CEC_ENAMODS_EN_CEC_CLK (1 << 7)
-# define CEC_ENAMODS_DIS_FRO (1 << 6)
-# define CEC_ENAMODS_DIS_CCLK (1 << 5)
-# define CEC_ENAMODS_EN_WD (1 << 4)
-# define CEC_ENAMODS_CEC_INV (1 << 3)
-# define CEC_ENAMODS_EN_RXSENS (1 << 2)
-# define CEC_ENAMODS_EN_HDMI (1 << 1)
-# define CEC_ENAMODS_EN_CEC (1 << 0)
-
-#endif /*_MVF_TDA1998X_H_*/
diff --git a/drivers/video/mvf_dcu.c b/drivers/video/mvf_dcu.c
index 34661beb5b8a..c88a9fcf841e 100644
--- a/drivers/video/mvf_dcu.c
+++ b/drivers/video/mvf_dcu.c
@@ -32,9 +32,13 @@
#include <asm/mach-types.h>
#include <mach/mvf.h>
#include <mach/mvf-dcu-fb.h>
-#include "mvf-tda1998x.h"
+#if (defined CONFIG_MACH_PCL052)
#define DCU_MASTER_CLOCK_FREQ 226000000
+#else
+#define DCU_MASTER_CLOCK_FREQ 252000000
+#endif /* CONFIG_MACH_PCL052 */
+
#define DRIVER_NAME "mvf-dcu"
@@ -54,18 +58,19 @@ static struct fb_videomode __devinitdata mvf_dcu_default_mode = {
static struct fb_videomode __devinitdata mvf_dcu_mode_db[] = {
{
- .name = "pm070wl4",
- .xres = 800,
- .yres = 480,
- .left_margin = 42,
- .right_margin = 86,
- .upper_margin = 10,
- .lower_margin = 33,
- .hsync_len = 128,
- .vsync_len = 2,
- .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT |
- FB_SYNC_HOR_HIGH_ACT,
- .vmode = FB_VMODE_NONINTERLACED,
+ .name = "pm070wl4",
+ .pixclock = 31250,
+ .xres = 800,
+ .yres = 480,
+ .left_margin = 42,
+ .right_margin = 86,
+ .upper_margin = 10,
+ .lower_margin = 33,
+ .hsync_len = 128,
+ .vsync_len = 2,
+ .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT |
+ FB_SYNC_HOR_HIGH_ACT,
+ .vmode = FB_VMODE_NONINTERLACED,
#if (defined CONFIG_MACH_PCL052)
},{
/* HDMI */
@@ -102,7 +107,6 @@ static struct fb_videomode __devinitdata mvf_dcu_mode_db[] = {
.vmode = FB_VMODE_NONINTERLACED,
#endif /* CONFIG_MACH_PCL052 */
},
-
};
static DEFINE_SPINLOCK(dcu_lock);
@@ -1090,9 +1094,6 @@ static int __devinit mvf_dcu_probe(struct platform_device *pdev)
goto failed_install_fb;
}
}
-#if (defined CONFIG_MVF_TDA_998X)
- init_tda19988();
-#endif /* CONFIG_MVF_TDA_998X */
dev_set_drvdata(&pdev->dev, dcu);
return 0;