we are working on the Kevin Hilman 2.6.34 kernel version.
This is the driver we found over there and we had to drive a parallel RGB LCD which was not supported.
We understood we had to work on this branch (see for instance: http://linux.davincidsp.com/pipermail/davinci-linux-open-source/2010-June/019137.html).
For what concerns Arago overlay development, we are on master branch on
commit 87c7685f95309bf5d381ff6b9d3f182601815c99
and kernel is 2.6.31.
Can you please give us informations about the development of TI India about Arago fb and v4l2 drivers.
Where can we find a git repository?
When it will be integrated in opensource (Kevin Hilman) git tree?
Do you also know something about video codec support (DVSDK) stable availability for kernel 2.6.34?
Thank you
Davide Bonfanti & Raffaele Recalcati
Tel.: +39 031-653357
Indirizzo: via Manara, 4 22036 - Erba (CO)
E-mail: davide.bonfa...@bticino.it
Web: www.bticino.it
Bticino
Legrand
Zucchini
Cablofil
Ortronics
Consider the environment
Please don't print this e-mail unless you really need to.
-----davinci-linux-open-source-bounces+davide.bonfanti=bticino...@linux.davincidsp.com ha scritto: -----
Ce message, ainsi que tous les fichiers joints à ce message,
peuvent contenir des informations sensibles et/ ou confidentielles
ne devant pas être divulguées. Si vous n'êtes pas le destinataire
de ce message (ou que vous recevez ce message par erreur), nous
vous remercions de le notifier immédiatement à son expéditeur, et
de détruire ce message. Toute copie, divulgation, modification,
utilisation ou diffusion, non autorisée, directe ou indirecte, de
tout ou partie de ce message, est strictement interdite.
This e-mail, and any document attached hereby, may contain
confidential and/or privileged information. If you are not the
intended recipient (or have received this e-mail in error) please
notify the sender immediately and destroy this e-mail. Any
unauthorized, direct or indirect, copying, disclosure, distribution
or other use of the material or parts thereof is strictly
forbidden.
Tel.: +39 031-653357
Indirizzo: via Manara, 4 22036 - Erba (CO)
E-mail: davide.bonfa...@bticino.it
Web: www.bticino.it
Bticino
Legrand
Zucchini
Cablofil
Ortronics
Consider the environment
Please don't print this e-mail unless you really need to.
Per: Raffaele Recalcati <lamiapost...@gmail.com>, "davinci-linux-open-source@linux.davincidsp.com" <davinci-linux-open-source@linux.davincidsp.com>
Da: "Karicheri, Muralidharan" <m-kariche...@ti.com>
Inviato da: davinci-linux-open-source-bounces+davide.bonfanti=bticino...@linux.davincidsp.com
Data: 14/06/2010 18.38
Oggetto: RE: [PATCH 14/14] davinci: video: davincifb Parallel RBG LCD management
Hi,
Why are you trying to fix this old fb driver when TI India is already
working on to up port the latest Arago fb and v4l2 drivers?
davincifb driver is not part of the kernel.org tree and is available
only in davinci tree and is an obsolete driver.
Murali Karicheri
Software Design Engineer
Texas Instruments Inc.
Germantown, MD 20874
phone: 301-407-9583
email: m-kariche...@ti.com
>-----Original Message-----
>From: davinci-linux-open-source-boun...@linux.davincidsp.com
>[mailto:davinci-linux-open-source-boun...@linux.davincidsp.com] On Behalf
>Of Raffaele Recalcati
>Sent: Friday, June 11, 2010 6:20 AM
>To: davinci-linux-open-source@linux.davincidsp.com
>Subject: [PATCH 14/14] davinci: video: davincifb Parallel RBG LCD
>management
>
>From: Davide Bonfanti <davide.bonfa...@bticino.it>
>
>Signed-off-by: Davide Bonfanti <davide.bonfa...@bticino.it>
>---
> drivers/video/davincifb.c | 167
>+++++++++++++++++++++++++++++++++++++++++----
> include/video/davincifb.h | 17 ++++-
> 2 files changed, 165 insertions(+), 19 deletions(-)
>
>diff --git a/drivers/video/davincifb.c b/drivers/video/davincifb.c
>index 2a7b2c9..24d1424 100644
>--- a/drivers/video/davincifb.c
>+++ b/drivers/video/davincifb.c
>@@ -29,12 +29,15 @@
> #include <linux/interrupt.h>
> #include <linux/platform_device.h>
>
>+#include <media/davinci/vpss.h>
> #include <asm/irq.h>
> #include <asm/uaccess.h>
>
> #include <video/davincifb.h>
> #include <asm/system.h>
>
>+#include <mach/dm365.h>
>+#include <mach/cputype.h>
> #define MODULE_NAME "davincifb"
>
> /* Output Format Selection */
>@@ -286,6 +289,10 @@ static irqreturn_t davincifb_isr(int irq, void *arg)
> dm->vid1->info.fix.line_length);
> dm->vid1->sdram_address = 0;
> }
>+ if (dm->osd0->info.var.vmode == FB_VMODE_NONINTERLACED) {
>+ ++dm->vsync_cnt;
>+ wake_up_interruptible(&dm->vsync_wait);
>+ }
> return IRQ_HANDLED;
> } else {
> ++dm->vsync_cnt;
>@@ -631,21 +638,29 @@ static void set_sdram_params(char *id, u32 addr, u32
>line_length)
> /* The parameters to be written to the registers should be in
> * multiple of 32 bytes
> */
>- addr = addr; /* div by 32 */
>- line_length = line_length / 32;
>+ addr = (addr - DAVINCI_DDR_BASE) >> 5; /* div by 32 */
>+ line_length = line_length >> 5;
>
> if (is_win(id, VID0)) {
>- dispc_reg_out(OSD_VIDWIN0ADR, addr);
>- dispc_reg_out(OSD_VIDWIN0OFST, line_length);
>+ dispc_reg_out(OSD_VIDWIN0ADR, addr & 0xFFFF);
>+ dispc_reg_merge(OSD_VIDWINADH, (addr & 0x7F0000) >> 16, 0x7F);
>+ dispc_reg_out(OSD_VIDWIN0OFST, line_length | 0x1000);
>+ /* From docs it's not clear why bit12 is needed */
> } else if (is_win(id, VID1)) {
>- dispc_reg_out(OSD_VIDWIN1ADR, addr);
>- dispc_reg_out(OSD_VIDWIN1OFST, line_length);
>+ dispc_reg_out(OSD_VIDWIN1ADR, addr & 0xFFFF);
>+ dispc_reg_merge(OSD_VIDWINADH, (addr & 0x7F0000) >> 8, 0x7F00);
>+ dispc_reg_out(OSD_VIDWIN1OFST, line_length | 0x1000);
>+ /* From docs it's not clear why bit12 is needed */
> } else if (is_win(id, OSD0)) {
>- dispc_reg_out(OSD_OSDWIN0ADR, addr);
>- dispc_reg_out(OSD_OSDWIN0OFST, line_length);
>+ dispc_reg_out(OSD_OSDWIN0ADR, addr & 0xFFFF);
>+ dispc_reg_out(OSD_OSDWIN0OFST, line_length | 0x1000);
>+ dispc_reg_merge(OSD_OSDWINADH, (addr & 0x7F0000) >> 16, 0x7F);
>+ /* From docs it's not clear why bit12 is needed */
> } else if (is_win(id, OSD1)) {
>- dispc_reg_out(OSD_OSDWIN1ADR, addr);
>- dispc_reg_out(OSD_OSDWIN1OFST, line_length);
>+ dispc_reg_out(OSD_OSDWIN1ADR, addr & 0xFFFF);
>+ dispc_reg_merge(OSD_OSDWINADH, (addr & 0x7F0000) >> 8, 0x7F00);
>+ dispc_reg_out(OSD_OSDWIN1OFST, line_length | 0x1000);
>+ /* From docs it's not clear why bit12 is needed */
> }
> }
>
>@@ -980,14 +995,12 @@ int __init davincifb_setup(char *options)
> if (!strncmp(this_opt, "output=", 7)) {
> if (!strncmp(this_opt + 7, "lcd", 3)) {
> dmparams.output = LCD;
>- dmparams.format = 0;
>+ dmparams.format = RGB;
> } else if (!strncmp(this_opt + 7, "ntsc", 4))
> dmparams.output = NTSC;
> else if (!strncmp(this_opt + 7, "pal", 3))
> dmparams.output = PAL;
> } else if (!strncmp(this_opt, "format=", 7)) {
>- if (dmparams.output == LCD)
>- continue;
> if (!strncmp(this_opt + 7, "composite", 9))
> dmparams.format = COMPOSITE;
> else if (!strncmp(this_opt + 7, "s-video", 7))
>@@ -1060,7 +1073,9 @@ int __init davincifb_setup(char *options)
> format_yres = 480;
> } else if (dmparams.output == PAL) {
> format_yres = 576;
>- } else {
>+ } else if (dmparams.output == LCD)
>+ format_yres = dmparams.osd0_yres;
>+ else {
> printk(KERN_INFO
> "DaVinci:invalid format..defaulting width to 480\n");
> }
>@@ -1180,7 +1195,10 @@ static struct fb_info *init_fb_info(struct
>dm_win_info *w,
> struct dm_info *dm = w->dm;
>
> /* initialize the fb_info structure */
>- info->flags = FBINFO_DEFAULT;
>+ info->flags = FBINFO_DEFAULT |
>+ FBINFO_HWACCEL_COPYAREA | FBINFO_HWACCEL_FILLRECT |
>+ FBINFO_HWACCEL_IMAGEBLIT | FBINFO_HWACCEL_XPAN |
>+ FBINFO_HWACCEL_YPAN;
> info->fbops = &davincifb_ops;
> info->screen_base = (char *)(w->fb_base);
> info->pseudo_palette = w->pseudo_palette;
>@@ -1388,6 +1406,123 @@ static void davincifb_pal_component_config(int on)
> }
> }
>
>+int dm365_set_pixelclock(int pixclock)
>+{
>+ u32 pllfreq;
>+ int ret;
>+ struct clk *clk6;
>+
>+ pixclock /= 1000;
>+ pllfreq = 1000000000 / pixclock;
>+
>+ clk6 = clk_get(dm->dev, "pll1_sysclk6");
>+ if (clk_set_rate(clk6, pllfreq)) {
>+ dispc_reg_out(VENC_DCLKCTL, 0x03);
>+ dispc_reg_out(VENC_DCLKPTN0, 0x03);
>+ dispc_reg_out(VENC_DCLKPTN1, 0x0);
>+ dispc_reg_out(VENC_DCLKPTN2, 0x0);
>+ dispc_reg_out(VENC_DCLKPTN3, 0x0);
>+ ret = 4;
>+ clk_set_rate(clk6, pllfreq * 4);
>+ } else {
>+ dispc_reg_out(VENC_DCLKCTL, 0x801);
>+ dispc_reg_out(VENC_DCLKPTN0, 0x03);
>+ dispc_reg_out(VENC_DCLKPTN1, 0x0);
>+ dispc_reg_out(VENC_DCLKPTN2, 0x0);
>+ dispc_reg_out(VENC_DCLKPTN3, 0x0);
>+ ret = 1;
>+ }
>+ pllfreq = clk_get_rate(clk6);
>+ return ret;
>+}
>+
>+static void davincifb_lcd_rgb_config(int on)
>+{
>+ u32 divisor = 1;
>+
>+ if (on) {
>+ /* Reset video encoder module */
>+ dispc_reg_out(VENC_VMOD, 0x0);
>+ dispc_reg_out(VENC_VIDCTL, 0x0);
>+
>+ if (cpu_is_davinci_dm365()) {
>+ divisor = \
>+ dm365_set_pixelclock(dm->osd0->info.var.pixclock);
>+ }
>+
>+ /* set hsync pulse width */
>+ dispc_reg_out(VENC_HSPLS, (dm->osd0->info.var.hsync_len) * \
>+ divisor);
>+ /* set vsync pulse width */
>+ dispc_reg_out(VENC_VSPLS, dm->osd0->info.var.vsync_len);
>+ /* set horizontal interval */
>+ dispc_reg_out(VENC_HINT, ((dm->osd0->info.var.left_margin + \
>+ dm->osd0->info.var.right_margin + dm->osd0->info.var.width) * \
>+ divisor) - 1);
>+ /* set horizontal data valid start position */
>+ dispc_reg_out(VENC_HSTART, (dm->osd0->info.var.left_margin) * \
>+ divisor);
>+ /* set Horizontal data valid range */
>+ dispc_reg_out(VENC_HVALID, (dm->osd0->info.var.width) * \
>+ divisor);
>+ /* set Vertical interval */
>+ dispc_reg_out(VENC_VINT, dm->osd0->info.var.upper_margin + \
>+ dm->osd0->info.var.lower_margin + \
>+ dm->osd0->info.var.height - 1);
>+ /* set Vertical data valid start position */
>+ dispc_reg_out(VENC_VSTART, dm->osd0->info.var.upper_margin);
>+ /* set Horizontal data valid range */
>+ dispc_reg_out(VENC_VVALID, dm->osd0->info.var.height);
>+ /* Enable VCLK */
>+ dispc_reg_out(VENC_OSDCLK1, 3);
>+ dispc_reg_out(VENC_LCDOUT, 0x81);
>+ dispc_reg_out(VENC_OSDCLK0, 0x0);
>+ dispc_reg_out(VENC_OSDCLK1, 0xFFFF);
>+ dispc_reg_out(VENC_CLKCTL, 0x10);
>+ dispc_reg_out(VENC_SYNCCTL, 0x0F);
>+ dispc_reg_merge(VENC_VIDCTL, \
>+ ((dm->osd0->info.var.sync & FB_SYNC_PIXCLOCK_HIGH_ACT) \
>+ == FB_SYNC_PIXCLOCK_HIGH_ACT) << 14, VENC_VIDCTL_VCLKP);
>+ dispc_reg_merge(VENC_SYNCCTL, \
>+ ((dm->osd0->info.var.sync & FB_SYNC_VERT_HIGH_ACT) \
>+ != FB_SYNC_VERT_HIGH_ACT) << 3, VENC_SYNCCTL_VPL);
>+ dispc_reg_merge(VENC_SYNCCTL, \
>+ ((dm->osd0->info.var.sync & FB_SYNC_HOR_HIGH_ACT) \
>+ != FB_SYNC_HOR_HIGH_ACT) << 2, VENC_SYNCCTL_HPL);
>+
>+ /* set osd window */
>+ dispc_reg_out(OSD_VIDWINMD, 0x22);
>+ dispc_reg_out(OSD_OSDWIN0MD, 0x2933);
>+ dispc_reg_out(OSD_OSDWIN0XP, dm->osd0->info.var.xoffset);
>+ dispc_reg_out(OSD_OSDWIN0YP, dm->osd0->info.var.yoffset);
>+ dispc_reg_out(OSD_OSDWIN0XL, dm->osd0->info.var.xres * \
>+ divisor);
>+ dispc_reg_out(OSD_OSDWIN0YL, dm->osd0->info.var.yres);
>+
>+ /* Set RGB565 mode */
>+ dispc_reg_merge(OSD_OSDWIN0MD, OSD_OSDWIN0MD_RGB0E, \
>+ OSD_OSDWIN0MD_RGB0E);
>+ dispc_reg_merge(OSD_OSDWIN0MD, on, OSD_OSDWIN0MD_OACT0);
>+
>+ dispc_reg_merge(VENC_VIDCTL, VENC_VIDCTL_VCLKE, \
>+ VENC_VIDCTL_VCLKE);
>+ /* set origin position */
>+ /* Values manually defined
>+ dispc_reg_out(OSD_BASEPX, 0x32);
>+ dispc_reg_out(OSD_BASEPY, 0x08);*/
>+ dispc_reg_out(OSD_BASEPX, 20 + dm->osd0->info.var.left_margin);
>+ dispc_reg_out(OSD_BASEPY, dm->osd0->info.var.upper_margin);
>+
>+ dispc_reg_out(VENC_VMOD, (VENC_VMOD_VDMD_RGB666 << \
>+ VENC_VMOD_VDMD_SHIFT) | VENC_VMOD_ITLCL | \
>+ VENC_VMOD_HDMD | VENC_VMOD_VIE | VENC_VMOD_VENC \
>+ | VENC_VMOD_VMD);
>+ } else {
>+ /* Reset video encoder module */
>+ dispc_reg_out(VENC_VMOD, 0);
>+ }
>+}
>+
> static inline void fix_default_var(struct dm_win_info *w,
> u32 xres, u32 yres, u32 xpos, u32 ypos,
> int n_buf)
>@@ -1487,6 +1622,8 @@ static int davincifb_probe(struct platform_device
>*pdev)
> dm->output_device_config = davincifb_pal_svideo_config;
> else if ((dmparams.output == PAL) && (dmparams.format == COMPONENT))
> dm->output_device_config = davincifb_pal_component_config;
>+ else if ((dmparams.output == LCD) && (dmparams.format == RGB))
>+ dm->output_device_config = davincifb_lcd_rgb_config;
> /* Add support for other displays here */
> else {
> printk(KERN_WARNING "Unsupported output device!\n");
>diff --git a/include/video/davincifb.h b/include/video/davincifb.h
>index c3ecdd8..c4e8127 100644
>--- a/include/video/davincifb.h
>+++ b/include/video/davincifb.h
>@@ -14,12 +14,12 @@
> #define _DAVINCIFB_H_
>
> #include <mach/io.h>
>+#include <linux/fb.h>
>
> /* Base registers */
>-#define VPBE_REG_BASE 0x01c72780
>-#define VENC_REG_BASE 0x01c72400
>-#define OSD_REG_BASE 0x01c72600
>-#define OSD_REG_SIZE 0x00000180
>+#define VENC_REG_BASE 0x01C71E00
>+#define OSD_REG_BASE 0x01C71C00
>+#define OSD_REG_SIZE 0x00000100
>
> /* VPBE Global Registers */
> #define VPBE_PID (VPBE_BASE + 0x0)
>@@ -107,6 +107,7 @@
> #define VENC_HVLDCL0 (VENC_REG_BASE + 0x134)
> #define VENC_HVLDCL1 (VENC_REG_BASE + 0x138)
> #define VENC_OSDHAD (VENC_REG_BASE + 0x13C)
>+#define VENC_CLKCTL (VENC_REG_BASE + 0x140)
>
> #define VID0 0
> #define VID1 1
>@@ -125,9 +126,11 @@
> #define OSD_VIDWIN1OFST (OSD_REG_BASE + 0x1C)
> #define OSD_OSDWIN0OFST (OSD_REG_BASE + 0x20)
> #define OSD_OSDWIN1OFST (OSD_REG_BASE + 0x24)
>+#define OSD_VIDWINADH (OSD_REG_BASE + 0x28)
> #define OSD_WINADR(i) (OSD_REG_BASE + 0x2C +
>(i)*0x4)
> #define OSD_VIDWIN0ADR (OSD_REG_BASE + 0x2C)
> #define OSD_VIDWIN1ADR (OSD_REG_BASE + 0x30)
>+#define OSD_OSDWINADH (OSD_REG_BASE + 0x34)
> #define OSD_OSDWIN0ADR (OSD_REG_BASE + 0x38)
> #define OSD_OSDWIN1ADR (OSD_REG_BASE + 0x3C)
> #define OSD_BASEPX (OSD_REG_BASE + 0x40)
>@@ -202,6 +205,12 @@
> #define VENC_VMOD_BLNK (1 << 3)
> #define VENC_VMOD_VIE (1 << 1)
> #define VENC_VMOD_VENC (1 << 0)
>+
>+#define VENC_VIDCTL_VCLKE (1 << 13)
>+#define VENC_VIDCTL_VCLKP (1 << 14)
>+#define VENC_SYNCCTL_HPL (1 << 2)
>+#define VENC_SYNCCTL_VPL (1 << 3)
>+
> /* other VENC registers' bit positions not defined yet */
>
> #define OSD_MODE_CS (1 << 15)
>--
>1.7.0.4
>
>_______________________________________________
>Davinci-linux-open-source mailing list
>Davinci-linux-open-source@linux.davincidsp.com
>http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
_______________________________________________
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
_______________________________________________ Davinci-linux-open-source mailing list Davinci-linux-open-source@linux.davincidsp.com http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source