diff for duplicates of <4C2DA845.7070309@samsung.com> diff --git a/a/1.1.hdr b/a/1.1.hdr deleted file mode 100644 index 8121da0..0000000 --- a/a/1.1.hdr +++ /dev/null @@ -1,2 +0,0 @@ -Content-type: text/plain; charset=EUC-KR -Content-transfer-encoding: 7BIT diff --git a/a/1.2.bin b/a/1.2.bin deleted file mode 100644 index 38f43cc..0000000 --- a/a/1.2.bin +++ /dev/null @@ -1,310 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <meta content="text/html; charset=EUC-KR" http-equiv="Content-Type"> -</head> -<body bgcolor="#ffffff" text="#000000"> -this patch adds features for supportting MIPI Interface and CPU mode to -s3c-fb.c<br> -<br> -for this, I added following features.<br> -. add struct fb_cmdmode<br> - - this structure would be used for cpu interface.<br> -. add interface_mode to struct s3c_fb_platdata.<br> - - this variable would be used to distinguishe whether CPU or RGB mode.<br> -. add two functions for cpu interface.<br> - - s3c_fb_set_trigger would be used for to send trigger signal to FIMD.<br> - - s3c_fb_is_i80_frame_done would be used to check framedone status.<br> -. add a function for setting timing.<br> - - I added this function because it have to distinguishe interfaces.<br> - (CPU or RGB mode)<br> -. add register definitions for using MIPI-DSI mode.<br> -<br> -Signed-off-by: InKi Dae <<a href="mailto:p.osciak@samsung.com">inki.dae@samsung.com</a>><br> -Signed-off-by: Kyungmin Park <<a - href="mailto:kyungmin.park@samsung.com">kyungmin.park@samsung.com</a>><br> ----<br> -<br> -<pre>diff --git a/arch/arm/plat-samsung/include/plat/fb.h b/arch/arm/plat-samsung/include/plat/fb.h -index 27d3b49..b0204f8 100644 ---- a/arch/arm/plat-samsung/include/plat/fb.h -+++ b/arch/arm/plat-samsung/include/plat/fb.h -@@ -22,6 +22,23 @@ - */ - #define S3C_FB_MAX_WIN (5) - -+enum { -+ FIMD_VIDEO_MODE = 0, -+ FIMD_COMMAND_MODE -+}; -+ -+struct fb_cmdmode { -+ const char *name; /* optional */ -+ u32 refresh; /* optional */ -+ u32 xres; -+ u32 yres; -+ u32 pixclock; -+ u32 cs_setup; -+ u32 wr_setup; -+ u32 wr_act; -+ u32 wr_hold; -+}; -+ - /** - * struct s3c_fb_pd_win - per window setup data - * @win_mode: The display parameters to initialise (not for window 0) -@@ -30,6 +47,7 @@ - */ - struct s3c_fb_pd_win { - struct fb_videomode win_mode; -+ struct fb_cmdmode cmd_mode; - - unsigned short default_bpp; - unsigned short max_bpp; -@@ -42,6 +60,7 @@ struct s3c_fb_pd_win { - * @setup_gpio: Setup the external GPIO pins to the right state to transfer - * the data from the display system to the connected display - * device. -+ * @interface_mode: cpu mode or rgb mode. - * @vidcon0: The base vidcon0 values to control the panel data format. - * @vidcon1: The base vidcon1 values to control the panel data output. - * @win: The setup data for each hardware window, or NULL for unused. -@@ -57,6 +76,7 @@ struct s3c_fb_platdata { - void (*setup_gpio)(void); - - struct s3c_fb_pd_win *win[S3C_FB_MAX_WIN]; -+ u32 interface_mode; - - u32 vidcon0; - u32 vidcon1; -@@ -91,4 +111,10 @@ extern void s5pc100_fb_gpio_setup_24bpp(void); - */ - extern void s5pv210_fb_gpio_setup_24bpp(void); - -+struct fb_info; -+ -+extern void s3c_fb_set_trigger(struct fb_info *info); -+ -+extern int s3c_fb_is_i80_frame_done(struct fb_info *info); -+ - #endif /* __PLAT_S3C_FB_H */ -diff --git a/arch/arm/plat-samsung/include/plat/regs-fb-v4.h b/arch/arm/plat-samsung/include/plat/regs-fb-v4.h -index 0f43599..4d5954b 100644 ---- a/arch/arm/plat-samsung/include/plat/regs-fb-v4.h -+++ b/arch/arm/plat-samsung/include/plat/regs-fb-v4.h -@@ -135,6 +135,22 @@ - - #define WPALCON (0x1A0) - -+/* For CPU interface. */ -+#define TRIGCON (0x1a4) -+#define TRGMODE_I80_ENABLE (1 << 0) -+#define SWTRGCMD_I80_TRIGGER (1 << 1) -+#define SWFRSTATUS_I80 (1 << 2) -+ -+#define I80IFCONA0 (0x1b0) -+#define I80IFEN_ENABLE (1 << 0) -+#define RSPOL_HIGH (1 << 2) -+#define LCD_WR_HOLD(x) (((x) & 0xf) << 4) -+#define LCD_WR_ACT(x) (((x) & 0xf) << 8) -+#define LCD_WR_SETUP(x) (((x) & 0xf) << 12) -+#define LCD_CS_SETUP(x) (((x) & 0xf) << 16) -+ -+#define I80IFCONB0 (0x1b8) -+ - /* Palette control */ - /* Note for S5PC100: you can still use those macros on WPALCON (aka WPALCON_L), - * but make sure that WPALCON_H W2PAL-W4PAL entries are zeroed out */ -diff --git a/arch/arm/plat-samsung/include/plat/regs-fb.h b/arch/arm/plat-samsung/include/plat/regs-fb.h -index 0ef806e..70342aa 100644 ---- a/arch/arm/plat-samsung/include/plat/regs-fb.h -+++ b/arch/arm/plat-samsung/include/plat/regs-fb.h -@@ -38,6 +38,7 @@ - #define VIDCON0_VIDOUT_TV (0x1 << 26) - #define VIDCON0_VIDOUT_I80_LDI0 (0x2 << 26) - #define VIDCON0_VIDOUT_I80_LDI1 (0x3 << 26) -+#define VIDCON0_DSI_EN_ENABLE (1 << 30) - - #define VIDCON0_L1_DATA_MASK (0x7 << 23) - #define VIDCON0_L1_DATA_SHIFT (23) -diff --git a/drivers/video/s3c-fb.c b/drivers/video/s3c-fb.c -index 9682ecc..28d34ef 100644 ---- a/drivers/video/s3c-fb.c -+++ b/drivers/video/s3c-fb.c -@@ -255,6 +255,73 @@ static int s3c_fb_align_word(unsigned int bpp, unsigned int pix) - } - - /** -+ * s3c_fb_set_trigger - fimd trigger based on cpu interface. -+ */ -+void s3c_fb_set_trigger(struct fb_info *info) -+{ -+ struct s3c_fb_win *win = info->par; -+ struct s3c_fb *sfb = win->parent; -+ void __iomem *regs = sfb->regs; -+ u32 reg = 0; -+ -+ reg = readl(regs + TRIGCON); -+ -+ reg |= TRGMODE_I80_ENABLE | SWTRGCMD_I80_TRIGGER; -+ -+ writel(reg, regs + TRIGCON); -+} -+ -+/** -+ * s3c_fb_is_i80_frame_done - get i80 frame done status. -+ */ -+int s3c_fb_is_i80_frame_done(struct fb_info *info) -+{ -+ struct s3c_fb_win *win = info->par; -+ struct s3c_fb *sfb = win->parent; -+ void __iomem *regs = sfb->regs; -+ u32 reg = 0; -+ -+ reg = readl(regs + TRIGCON); -+ -+ return (((reg & SWFRSTATUS_I80) == SWFRSTATUS_I80) ? 1 : 0); -+} -+ -+/** -+ * s3c_fb_set_cpu_timing - set cpu timing. -+ */ -+static void s3c_fb_set_timing(struct s3c_fb *sfb, struct fb_info *info) -+{ -+ struct s3c_fb_win *win = info->par; -+ struct s3c_fb_pd_win *windata = win->windata; -+ struct fb_var_screeninfo *var = &info->var; -+ void __iomem *regs = sfb->regs; -+ u32 reg = 0; -+ -+ if (sfb->pdata->interface_mode == FIMD_VIDEO_MODE) { -+ reg = VIDTCON0_VBPD(var->upper_margin - 1) | -+ VIDTCON0_VFPD(var->lower_margin - 1) | -+ VIDTCON0_VSPW(var->vsync_len - 1); -+ -+ writel(reg, regs + VIDTCON0); -+ -+ reg = VIDTCON1_HBPD(var->left_margin - 1) | -+ VIDTCON1_HFPD(var->right_margin - 1) | -+ VIDTCON1_HSPW(var->hsync_len - 1); -+ -+ writel(reg, regs + VIDTCON1); -+ } else if (sfb->pdata->interface_mode == FIMD_COMMAND_MODE) { -+ reg = LCD_CS_SETUP(windata->cmd_mode.cs_setup) | -+ LCD_WR_SETUP(windata->cmd_mode.wr_setup) | -+ LCD_WR_ACT(windata->cmd_mode.wr_act) | -+ LCD_WR_HOLD(windata->cmd_mode.wr_hold) | -+ I80IFEN_ENABLE; -+ -+ writel(reg, regs + I80IFCONA0); -+ } else -+ dev_warn(sfb->dev, "wrong interface type.\n"); -+} -+ -+/** - * s3c_fb_set_par() - framebuffer request to set new framebuffer state. - * @info: The framebuffer to change. - * -@@ -318,17 +385,7 @@ static int s3c_fb_set_par(struct fb_info *info) - data |= VIDCON0_ENVID | VIDCON0_ENVID_F; - writel(data, regs + VIDCON0); - -- data = VIDTCON0_VBPD(var->upper_margin - 1) | -- VIDTCON0_VFPD(var->lower_margin - 1) | -- VIDTCON0_VSPW(var->vsync_len - 1); -- -- writel(data, regs + VIDTCON0); -- -- data = VIDTCON1_HBPD(var->left_margin - 1) | -- VIDTCON1_HFPD(var->right_margin - 1) | -- VIDTCON1_HSPW(var->hsync_len - 1); -- -- writel(data, regs + VIDTCON1); -+ s3c_fb_set_timing(sfb, info); - - data = VIDTCON2_LINEVAL(var->yres - 1) | - VIDTCON2_HOZVAL(var->xres - 1); -@@ -744,7 +801,8 @@ static int __devinit s3c_fb_probe_win(struct s3c_fb *sfb, unsigned int win_no, - struct s3c_fb_win **res) - { - struct fb_var_screeninfo *var; -- struct fb_videomode *initmode; -+ struct fb_videomode *videomode; -+ struct fb_cmdmode *cmdmode; - struct s3c_fb_pd_win *windata; - struct s3c_fb_win *win; - struct fb_info *fbinfo; -@@ -763,11 +821,20 @@ static int __devinit s3c_fb_probe_win(struct s3c_fb *sfb, unsigned int win_no, - } - - windata = sfb->pdata->win[win_no]; -- initmode = &windata->win_mode; - - WARN_ON(windata->max_bpp == 0); -- WARN_ON(windata->win_mode.xres == 0); -- WARN_ON(windata->win_mode.yres == 0); -+ -+ if (sfb->pdata->interface_mode == FIMD_VIDEO_MODE) { -+ WARN_ON(windata->win_mode.xres == 0); -+ WARN_ON(windata->win_mode.yres == 0); -+ -+ videomode = &windata->win_mode; -+ } else { -+ WARN_ON(windata->cmd_mode.xres == 0); -+ WARN_ON(windata->cmd_mode.yres == 0); -+ -+ cmdmode = &windata->cmd_mode; -+ } - - win = fbinfo->par; - var = &fbinfo->var; -@@ -777,18 +844,19 @@ static int __devinit s3c_fb_probe_win(struct s3c_fb *sfb, unsigned int win_no, - win->index = win_no; - win->palette_buffer = (u32 *)(win + 1); - -- ret = s3c_fb_alloc_memory(sfb, win); -- if (ret) { -- dev_err(sfb->dev, "failed to allocate display memory\n"); -- return ret; -+ /* setup the initial video or cpu mode from the window */ -+ if (sfb->pdata->interface_mode == FIMD_VIDEO_MODE) -+ fb_videomode_to_var(&fbinfo->var, videomode); -+ else { -+ var->xres = cmdmode->xres; -+ var->yres = cmdmode->yres; -+ var->xres_virtual = cmdmode->xres; -+ var->yres_virtual = cmdmode->yres; -+ var->xoffset = 0; -+ var->yoffset = 0; -+ var->pixclock = cmdmode->pixclock; - } - -- /* setup the r/b/g positions for the window's palette */ -- s3c_fb_init_palette(win_no, &win->palette); -- -- /* setup the initial video mode from the window */ -- fb_videomode_to_var(&fbinfo->var, initmode); -- - fbinfo->fix.type = FB_TYPE_PACKED_PIXELS; - fbinfo->fix.accel = FB_ACCEL_NONE; - fbinfo->var.activate = FB_ACTIVATE_NOW; -@@ -798,6 +866,15 @@ static int __devinit s3c_fb_probe_win(struct s3c_fb *sfb, unsigned int win_no, - fbinfo->flags = FBINFO_FLAG_DEFAULT; - fbinfo->pseudo_palette = &win->pseudo_palette; - -+ ret = s3c_fb_alloc_memory(sfb, win); -+ if (ret) { -+ dev_err(sfb->dev, "failed to allocate display memory\n"); -+ return ret; -+ } -+ -+ /* setup the r/b/g positions for the window's palette */ -+ s3c_fb_init_palette(win_no, &win->palette); -+ - /* prepare to actually start the framebuffer */ - - ret = s3c_fb_check_var(&fbinfo->var, fbinfo); -</pre> -<br> -</body> -</html> diff --git a/a/1.2.hdr b/a/1.2.hdr deleted file mode 100644 index 17e3fb4..0000000 --- a/a/1.2.hdr +++ /dev/null @@ -1,2 +0,0 @@ -Content-type: text/html; charset=EUC-KR -Content-transfer-encoding: 7BIT diff --git a/a/1.1.txt b/N1/1.txt similarity index 96% rename from a/1.1.txt rename to N1/1.txt index 2058137..47d5ee6 100644 --- a/a/1.1.txt +++ b/N1/1.txt @@ -14,8 +14,8 @@ for this, I added following features. (CPU or RGB mode) . add register definitions for using MIPI-DSI mode. -Signed-off-by: InKi Dae <inki.dae@samsung.com <mailto:p.osciak@samsung.com>> -Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com +Signed-off-by: InKi Dae <inki.dae at samsung.com <mailto:p.osciak@samsung.com>> +Signed-off-by: Kyungmin Park <kyungmin.park at samsung.com <mailto:kyungmin.park@samsung.com>> --- @@ -298,3 +298,8 @@ index 9682ecc..28d34ef 100644 /* prepare to actually start the framebuffer */ ret = s3c_fb_check_var(&fbinfo->var, fbinfo); + + +-------------- next part -------------- +An HTML attachment was scrubbed... +URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20100702/c3e9c266/attachment-0001.html> diff --git a/a/2.hdr b/a/2.hdr deleted file mode 100644 index 4b86001..0000000 --- a/a/2.hdr +++ /dev/null @@ -1,4 +0,0 @@ -Content-Type: text/plain; charset="us-ascii" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Content-Disposition: inline diff --git a/a/2.txt b/a/2.txt deleted file mode 100644 index 8133cf0..0000000 --- a/a/2.txt +++ /dev/null @@ -1,4 +0,0 @@ -_______________________________________________ -linux-arm-kernel mailing list -linux-arm-kernel@lists.infradead.org -http://lists.infradead.org/mailman/listinfo/linux-arm-kernel diff --git a/a/content_digest b/N1/content_digest index 2dbb5ba..2bf35ae 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,14 +1,10 @@ "ref\04C29AF72.6090200@samsung.com\0" "ref\04C29B4BA.4090903@samsung.com\0" - "From\0InKi Dae <inki.dae@samsung.com>\0" + "From\0inki.dae@samsung.com (InKi Dae)\0" "Subject\0[PATCH 1/2] S5PV210: FB: Add MIPI-DSI and CPU Interface features.\0" "Date\0Fri, 02 Jul 2010 17:50:13 +0900\0" - "To\0linux-arm-kernel@lists.infradead.org" - linux-fbdev-devel@lists.sourceforge.net - akpm@linux-foundation.org - Ben Dooks <ben-linux@fluff.org> - " kmpark@infradead.org\0" - "\02:1.1\0" + "To\0linux-arm-kernel@lists.infradead.org\0" + "\00:1\0" "b\0" "this patch adds features for supportting MIPI Interface and CPU mode to\n" "s3c-fb.c\n" @@ -26,8 +22,8 @@ "(CPU or RGB mode)\n" ". add register definitions for using MIPI-DSI mode.\n" "\n" - "Signed-off-by: InKi Dae <inki.dae@samsung.com <mailto:p.osciak@samsung.com>>\n" - "Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com\n" + "Signed-off-by: InKi Dae <inki.dae at samsung.com <mailto:p.osciak@samsung.com>>\n" + "Signed-off-by: Kyungmin Park <kyungmin.park at samsung.com\n" "<mailto:kyungmin.park@samsung.com>>\n" "---\n" "\n" @@ -309,324 +305,11 @@ "+\n" " \t/* prepare to actually start the framebuffer */\n" " \n" - " \tret = s3c_fb_check_var(&fbinfo->var, fbinfo);" - "\02:1.2\0" - "b\0" - "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n" - "<html>\n" - "<head>\n" - " <meta content=\"text/html; charset=EUC-KR\" http-equiv=\"Content-Type\">\n" - "</head>\n" - "<body bgcolor=\"#ffffff\" text=\"#000000\">\n" - "this patch adds features for supportting MIPI Interface and CPU mode to\n" - "s3c-fb.c<br>\n" - "<br>\n" - "for this, I added following features.<br>\n" - ". add struct fb_cmdmode<br>\n" - " - this structure would be used for cpu interface.<br>\n" - ". add interface_mode to struct s3c_fb_platdata.<br>\n" - " - this variable would be used to distinguishe whether CPU or RGB mode.<br>\n" - ". add two functions for cpu interface.<br>\n" - " - s3c_fb_set_trigger would be used for to send trigger signal to FIMD.<br>\n" - " - s3c_fb_is_i80_frame_done would be used to check framedone status.<br>\n" - ". add a function for setting timing.<br>\n" - " - I added this function because it have to distinguishe interfaces.<br>\n" - " (CPU or RGB mode)<br>\n" - ". add register definitions for using MIPI-DSI mode.<br>\n" - "<br>\n" - "Signed-off-by: InKi Dae <<a href=\"mailto:p.osciak@samsung.com\">inki.dae@samsung.com</a>><br>\n" - "Signed-off-by: Kyungmin Park <<a\n" - " href=\"mailto:kyungmin.park@samsung.com\">kyungmin.park@samsung.com</a>><br>\n" - "---<br>\n" - "<br>\n" - "<pre>diff --git a/arch/arm/plat-samsung/include/plat/fb.h b/arch/arm/plat-samsung/include/plat/fb.h\n" - "index 27d3b49..b0204f8 100644\n" - "--- a/arch/arm/plat-samsung/include/plat/fb.h\n" - "+++ b/arch/arm/plat-samsung/include/plat/fb.h\n" - "@@ -22,6 +22,23 @@\n" - " */\n" - " #define S3C_FB_MAX_WIN\t(5)\n" - " \n" - "+enum {\n" - "+\tFIMD_VIDEO_MODE = 0,\n" - "+\tFIMD_COMMAND_MODE\n" - "+};\n" - "+\n" - "+struct fb_cmdmode {\n" - "+\tconst char *name;\t/* optional */\n" - "+\tu32 refresh;\t\t/* optional */\n" - "+\tu32 xres;\n" - "+\tu32 yres;\n" - "+\tu32 pixclock;\n" - "+\tu32 cs_setup;\n" - "+\tu32 wr_setup;\n" - "+\tu32 wr_act;\n" - "+\tu32 wr_hold;\n" - "+};\n" - "+\n" - " /**\n" - " * struct s3c_fb_pd_win - per window setup data\n" - " * @win_mode: The display parameters to initialise (not for window 0)\n" - "@@ -30,6 +47,7 @@\n" - " */\n" - " struct s3c_fb_pd_win {\n" - " \tstruct fb_videomode\twin_mode;\n" - "+\tstruct fb_cmdmode\tcmd_mode;\n" - " \n" - " \tunsigned short\t\tdefault_bpp;\n" - " \tunsigned short\t\tmax_bpp;\n" - "@@ -42,6 +60,7 @@ struct s3c_fb_pd_win {\n" - " * @setup_gpio: Setup the external GPIO pins to the right state to transfer\n" - " *\t\tthe data from the display system to the connected display\n" - " *\t\tdevice.\n" - "+ * @interface_mode: cpu mode or rgb mode.\n" - " * @vidcon0: The base vidcon0 values to control the panel data format.\n" - " * @vidcon1: The base vidcon1 values to control the panel data output.\n" - " * @win: The setup data for each hardware window, or NULL for unused.\n" - "@@ -57,6 +76,7 @@ struct s3c_fb_platdata {\n" - " \tvoid\t(*setup_gpio)(void);\n" - " \n" - " \tstruct s3c_fb_pd_win\t*win[S3C_FB_MAX_WIN];\n" - "+\tu32\t\t\tinterface_mode;\n" - " \n" - " \tu32\t\t\t vidcon0;\n" - " \tu32\t\t\t vidcon1;\n" - "@@ -91,4 +111,10 @@ extern void s5pc100_fb_gpio_setup_24bpp(void);\n" - " */\n" - " extern void s5pv210_fb_gpio_setup_24bpp(void);\n" - " \n" - "+struct fb_info;\n" - "+\n" - "+extern void s3c_fb_set_trigger(struct fb_info *info);\n" - "+\n" - "+extern int s3c_fb_is_i80_frame_done(struct fb_info *info);\n" - "+\n" - " #endif /* __PLAT_S3C_FB_H */\n" - "diff --git a/arch/arm/plat-samsung/include/plat/regs-fb-v4.h b/arch/arm/plat-samsung/include/plat/regs-fb-v4.h\n" - "index 0f43599..4d5954b 100644\n" - "--- a/arch/arm/plat-samsung/include/plat/regs-fb-v4.h\n" - "+++ b/arch/arm/plat-samsung/include/plat/regs-fb-v4.h\n" - "@@ -135,6 +135,22 @@\n" - " \n" - " #define WPALCON\t\t\t\t\t(0x1A0)\n" - " \n" - "+/* For CPU interface. */\n" - "+#define TRIGCON\t\t\t\t\t\t(0x1a4)\n" - "+#define TRGMODE_I80_ENABLE\t\t\t\t(1 << 0)\n" - "+#define SWTRGCMD_I80_TRIGGER\t\t\t\t(1 << 1)\n" - "+#define SWFRSTATUS_I80\t\t\t\t\t(1 << 2)\n" - "+\n" - "+#define I80IFCONA0\t\t\t\t\t(0x1b0)\n" - "+#define I80IFEN_ENABLE\t\t\t\t\t(1 << 0)\n" - "+#define RSPOL_HIGH\t\t\t\t\t(1 << 2)\n" - "+#define LCD_WR_HOLD(x)\t\t\t\t\t(((x) & 0xf) << 4)\n" - "+#define LCD_WR_ACT(x)\t\t\t\t\t(((x) & 0xf) << 8)\n" - "+#define LCD_WR_SETUP(x)\t\t\t\t\t(((x) & 0xf) << 12)\n" - "+#define LCD_CS_SETUP(x)\t\t\t\t\t(((x) & 0xf) << 16)\n" - "+\n" - "+#define I80IFCONB0\t\t\t\t\t(0x1b8)\n" - "+\n" - " /* Palette control */\n" - " /* Note for S5PC100: you can still use those macros on WPALCON (aka WPALCON_L),\n" - " * but make sure that WPALCON_H W2PAL-W4PAL entries are zeroed out */\n" - "diff --git a/arch/arm/plat-samsung/include/plat/regs-fb.h b/arch/arm/plat-samsung/include/plat/regs-fb.h\n" - "index 0ef806e..70342aa 100644\n" - "--- a/arch/arm/plat-samsung/include/plat/regs-fb.h\n" - "+++ b/arch/arm/plat-samsung/include/plat/regs-fb.h\n" - "@@ -38,6 +38,7 @@\n" - " #define VIDCON0_VIDOUT_TV\t\t\t(0x1 << 26)\n" - " #define VIDCON0_VIDOUT_I80_LDI0\t\t\t(0x2 << 26)\n" - " #define VIDCON0_VIDOUT_I80_LDI1\t\t\t(0x3 << 26)\n" - "+#define VIDCON0_DSI_EN_ENABLE\t\t\t(1 << 30)\n" - " \n" - " #define VIDCON0_L1_DATA_MASK\t\t\t(0x7 << 23)\n" - " #define VIDCON0_L1_DATA_SHIFT\t\t\t(23)\n" - "diff --git a/drivers/video/s3c-fb.c b/drivers/video/s3c-fb.c\n" - "index 9682ecc..28d34ef 100644\n" - "--- a/drivers/video/s3c-fb.c\n" - "+++ b/drivers/video/s3c-fb.c\n" - "@@ -255,6 +255,73 @@ static int s3c_fb_align_word(unsigned int bpp, unsigned int pix)\n" - " }\n" - " \n" - " /**\n" - "+ * s3c_fb_set_trigger - fimd trigger based on cpu interface.\n" - "+ */\n" - "+void s3c_fb_set_trigger(struct fb_info *info)\n" - "+{\n" - "+\tstruct s3c_fb_win *win = info->par;\n" - "+\tstruct s3c_fb *sfb = win->parent;\n" - "+\tvoid __iomem *regs = sfb->regs;\n" - "+\tu32 reg = 0;\n" - "+\n" - "+\treg = readl(regs + TRIGCON);\n" - "+\n" - "+\treg |= TRGMODE_I80_ENABLE | SWTRGCMD_I80_TRIGGER;\n" - "+\n" - "+\twritel(reg, regs + TRIGCON);\n" - "+}\n" - "+\n" - "+/**\n" - "+ * s3c_fb_is_i80_frame_done - get i80 frame done status.\n" - "+ */\n" - "+int s3c_fb_is_i80_frame_done(struct fb_info *info)\n" - "+{\n" - "+\tstruct s3c_fb_win *win = info->par;\n" - "+\tstruct s3c_fb *sfb = win->parent;\n" - "+\tvoid __iomem *regs = sfb->regs;\n" - "+\tu32 reg = 0;\n" - "+\n" - "+\treg = readl(regs + TRIGCON);\n" - "+\n" - "+\treturn (((reg & SWFRSTATUS_I80) == SWFRSTATUS_I80) ? 1 : 0);\n" - "+}\n" - "+\n" - "+/**\n" - "+ * s3c_fb_set_cpu_timing - set cpu timing.\n" - "+ */\n" - "+static void s3c_fb_set_timing(struct s3c_fb *sfb, struct fb_info *info)\n" - "+{\n" - "+\tstruct s3c_fb_win *win = info->par;\n" - "+\tstruct s3c_fb_pd_win *windata = win->windata;\n" - "+\tstruct fb_var_screeninfo *var = &info->var;\n" - "+\tvoid __iomem *regs = sfb->regs;\n" - "+\tu32 reg = 0;\n" - "+\n" - "+\tif (sfb->pdata->interface_mode == FIMD_VIDEO_MODE) {\n" - "+\t\treg = VIDTCON0_VBPD(var->upper_margin - 1) |\n" - "+\t\t VIDTCON0_VFPD(var->lower_margin - 1) |\n" - "+\t\t VIDTCON0_VSPW(var->vsync_len - 1);\n" - "+\n" - "+\t\twritel(reg, regs + VIDTCON0);\n" - "+\n" - "+\t\treg = VIDTCON1_HBPD(var->left_margin - 1) |\n" - "+\t\t VIDTCON1_HFPD(var->right_margin - 1) |\n" - "+\t\t VIDTCON1_HSPW(var->hsync_len - 1);\n" - "+\n" - "+\t\twritel(reg, regs + VIDTCON1);\n" - "+\t} else if (sfb->pdata->interface_mode == FIMD_COMMAND_MODE) {\n" - "+\t\treg = LCD_CS_SETUP(windata->cmd_mode.cs_setup) |\n" - "+\t\t\tLCD_WR_SETUP(windata->cmd_mode.wr_setup) |\n" - "+\t\t\tLCD_WR_ACT(windata->cmd_mode.wr_act) |\n" - "+\t\t\tLCD_WR_HOLD(windata->cmd_mode.wr_hold) |\n" - "+\t\t\tI80IFEN_ENABLE;\n" - "+\n" - "+\t\twritel(reg, regs + I80IFCONA0);\n" - "+\t} else\n" - "+\t\tdev_warn(sfb->dev, \"wrong interface type.\\n\");\n" - "+}\n" - "+\n" - "+/**\n" - " * s3c_fb_set_par() - framebuffer request to set new framebuffer state.\n" - " * @info: The framebuffer to change.\n" - " *\n" - "@@ -318,17 +385,7 @@ static int s3c_fb_set_par(struct fb_info *info)\n" - " \t\tdata |= VIDCON0_ENVID | VIDCON0_ENVID_F;\n" - " \t\twritel(data, regs + VIDCON0);\n" - " \n" - "-\t\tdata = VIDTCON0_VBPD(var->upper_margin - 1) |\n" - "-\t\t VIDTCON0_VFPD(var->lower_margin - 1) |\n" - "-\t\t VIDTCON0_VSPW(var->vsync_len - 1);\n" - "-\n" - "-\t\twritel(data, regs + VIDTCON0);\n" - "-\n" - "-\t\tdata = VIDTCON1_HBPD(var->left_margin - 1) |\n" - "-\t\t VIDTCON1_HFPD(var->right_margin - 1) |\n" - "-\t\t VIDTCON1_HSPW(var->hsync_len - 1);\n" - "-\n" - "-\t\twritel(data, regs + VIDTCON1);\n" - "+\t\ts3c_fb_set_timing(sfb, info);\n" - " \n" - " \t\tdata = VIDTCON2_LINEVAL(var->yres - 1) |\n" - " \t\t VIDTCON2_HOZVAL(var->xres - 1);\n" - "@@ -744,7 +801,8 @@ static int __devinit s3c_fb_probe_win(struct s3c_fb *sfb, unsigned int win_no,\n" - " \t\t\t\t struct s3c_fb_win **res)\n" - " {\n" - " \tstruct fb_var_screeninfo *var;\n" - "-\tstruct fb_videomode *initmode;\n" - "+\tstruct fb_videomode *videomode;\n" - "+\tstruct fb_cmdmode *cmdmode;\n" - " \tstruct s3c_fb_pd_win *windata;\n" - " \tstruct s3c_fb_win *win;\n" - " \tstruct fb_info *fbinfo;\n" - "@@ -763,11 +821,20 @@ static int __devinit s3c_fb_probe_win(struct s3c_fb *sfb, unsigned int win_no,\n" - " \t}\n" - " \n" - " \twindata = sfb->pdata->win[win_no];\n" - "-\tinitmode = &windata->win_mode;\n" - " \n" - " \tWARN_ON(windata->max_bpp == 0);\n" - "-\tWARN_ON(windata->win_mode.xres == 0);\n" - "-\tWARN_ON(windata->win_mode.yres == 0);\n" - "+\n" - "+\tif (sfb->pdata->interface_mode == FIMD_VIDEO_MODE) {\n" - "+\t\tWARN_ON(windata->win_mode.xres == 0);\n" - "+\t\tWARN_ON(windata->win_mode.yres == 0);\n" - "+\n" - "+\t\tvideomode = &windata->win_mode;\n" - "+\t} else {\n" - "+\t\tWARN_ON(windata->cmd_mode.xres == 0);\n" - "+\t\tWARN_ON(windata->cmd_mode.yres == 0);\n" - "+\n" - "+\t\tcmdmode = &windata->cmd_mode;\n" - "+\t}\n" - " \n" - " \twin = fbinfo->par;\n" - " \tvar = &fbinfo->var;\n" - "@@ -777,18 +844,19 @@ static int __devinit s3c_fb_probe_win(struct s3c_fb *sfb, unsigned int win_no,\n" - " \twin->index = win_no;\n" - " \twin->palette_buffer = (u32 *)(win + 1);\n" - " \n" - "-\tret = s3c_fb_alloc_memory(sfb, win);\n" - "-\tif (ret) {\n" - "-\t\tdev_err(sfb->dev, \"failed to allocate display memory\\n\");\n" - "-\t\treturn ret;\n" - "+\t/* setup the initial video or cpu mode from the window */\n" - "+\tif (sfb->pdata->interface_mode == FIMD_VIDEO_MODE)\n" - "+\t\tfb_videomode_to_var(&fbinfo->var, videomode);\n" - "+\telse {\n" - "+\t\tvar->xres = cmdmode->xres;\n" - "+\t\tvar->yres = cmdmode->yres;\n" - "+\t\tvar->xres_virtual = cmdmode->xres;\n" - "+\t\tvar->yres_virtual = cmdmode->yres;\n" - "+\t\tvar->xoffset = 0;\n" - "+\t\tvar->yoffset = 0;\n" - "+\t\tvar->pixclock = cmdmode->pixclock;\n" - " \t}\n" - " \n" - "-\t/* setup the r/b/g positions for the window's palette */\n" - "-\ts3c_fb_init_palette(win_no, &win->palette);\n" - "-\n" - "-\t/* setup the initial video mode from the window */\n" - "-\tfb_videomode_to_var(&fbinfo->var, initmode);\n" - "-\n" - " \tfbinfo->fix.type\t= FB_TYPE_PACKED_PIXELS;\n" - " \tfbinfo->fix.accel\t= FB_ACCEL_NONE;\n" - " \tfbinfo->var.activate\t= FB_ACTIVATE_NOW;\n" - "@@ -798,6 +866,15 @@ static int __devinit s3c_fb_probe_win(struct s3c_fb *sfb, unsigned int win_no,\n" - " \tfbinfo->flags\t\t= FBINFO_FLAG_DEFAULT;\n" - " \tfbinfo->pseudo_palette = &win->pseudo_palette;\n" - " \n" - "+\tret = s3c_fb_alloc_memory(sfb, win);\n" - "+\tif (ret) {\n" - "+\t\tdev_err(sfb->dev, \"failed to allocate display memory\\n\");\n" - "+\t\treturn ret;\n" - "+\t}\n" - "+\n" - "+\t/* setup the r/b/g positions for the window's palette */\n" - "+\ts3c_fb_init_palette(win_no, &win->palette);\n" - "+\n" - " \t/* prepare to actually start the framebuffer */\n" - " \n" - " \tret = s3c_fb_check_var(&fbinfo->var, fbinfo);\n" - "</pre>\n" - "<br>\n" - "</body>\n" - "</html>\n" - "\01:2\0" - "b\0" - "_______________________________________________\n" - "linux-arm-kernel mailing list\n" - "linux-arm-kernel@lists.infradead.org\n" - http://lists.infradead.org/mailman/listinfo/linux-arm-kernel + " \tret = s3c_fb_check_var(&fbinfo->var, fbinfo);\n" + "\n" + "\n" + "-------------- next part --------------\n" + "An HTML attachment was scrubbed...\n" + URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20100702/c3e9c266/attachment-0001.html> -dccf5b851d9d8320658320e339c8b6ac8f0b91ca1fd0dbb9b79a71b4c1ab56b8 +47c7dbdfe0638b2da650ef4af78f4a61b0f587e8496b01f439250f28c5b17ff2
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.