Revised LCD controller in upcoming TI SoC which is an updated version of
LCDC IP that was found on TI's DA850 SoC supports 2048*2048 resolution.
Below are the encoding details:
Width:
Pixels Per Line = {pplmsb, ppllsb, 4'b1111} + 1
Where pplmsb:1bit=>Raster Timing0[3], ppllsb:6bits=>Raster Timing0[9:4].
And encoded value can range from 16 to 2048 in multiples of 16.
Height:
Lines Per Panel = {lpp_b10, lpp}
Where lpp:10bits=>Raster Timing1[9:0], lpp_b10:1bit=>Raster Timing2[26].
And encoded value can range from 1 to 2048, programmable range is 0 to
2047.
Patch is verified on emulation platform of upcoming SoC for updated
feature and on DA850 platform to make sure nothing existing breaks.
Signed-off-by: Manjunathappa, Prakash <redacted>
---
Since v2:
Corrected comment describing horizontal resolution bits and removed unnecessary
outer parenthesis.
Since v1:
1)Fixed the bug in configuration of lpp_b10 in Raster Timing2[26] register.
2)Reframed commit message.
drivers/video/da8xx-fb.c | 31 ++++++++++++++++++++++++++++---
1 files changed, 28 insertions(+), 3 deletions(-)
@@ -460,18 +460,43 @@ static int lcd_cfg_frame_buffer(struct da8xx_fb_par *par, u32 width, u32 height,/* Set the Panel Width *//* Pixels per line = (PPL + 1)*16 */-/*0x3F in bits 4..9 gives max horisontal resolution = 1024 pixels*/-width&=0x3f0;+if(lcd_revision=LCD_VERSION_1){+/*+*0x3Finbits4..9givesmaxhorizontalresolution=1024+*pixels.+*/+width&=0x3f0;+}else{+/*+*0x7Finbits4..10givesmaxhorizontalresolution=2048+*pixels.+*/+width&=0x7f0;+}+reg=lcdc_read(LCD_RASTER_TIMING_0_REG);reg&=0xfffffc00;-reg|=((width>>4)-1)<<4;+if(lcd_revision=LCD_VERSION_1){+reg|=((width>>4)-1)<<4;+}else{+width=(width>>4)-1;+reg|=((width&0x3f)<<4)|((width&0x40)>>3);+}lcdc_write(reg,LCD_RASTER_TIMING_0_REG);/* Set the Panel Height */+/* Set bits 9:0 of Lines Per Pixel */reg=lcdc_read(LCD_RASTER_TIMING_1_REG);reg=((height-1)&0x3ff)|(reg&0xfffffc00);lcdc_write(reg,LCD_RASTER_TIMING_1_REG);+/* Set bit 10 of Lines Per Pixel */+if(lcd_revision=LCD_VERSION_2){+reg=lcdc_read(LCD_RASTER_TIMING_2_REG);+reg|=((height-1)&0x400)<<16;+lcdc_write(reg,LCD_RASTER_TIMING_2_REG);+}+/* Set the Raster Order of the Frame Buffer */reg=lcdc_read(LCD_RASTER_CTRL_REG)&~(1<<8);if(raster_order)
Hi Paul,
Could you please accept this patch as there are no comments?
Thanks,
Prakash
On Mon, Jul 18, 2011 at 09:58:53, Manjunathappa, Prakash wrote:
quoted hunk
Revised LCD controller in upcoming TI SoC which is an updated version of
LCDC IP that was found on TI's DA850 SoC supports 2048*2048 resolution.
Below are the encoding details:
Width:
Pixels Per Line = {pplmsb, ppllsb, 4'b1111} + 1
Where pplmsb:1bit=>Raster Timing0[3], ppllsb:6bits=>Raster Timing0[9:4].
And encoded value can range from 16 to 2048 in multiples of 16.
Height:
Lines Per Panel = {lpp_b10, lpp}
Where lpp:10bits=>Raster Timing1[9:0], lpp_b10:1bit=>Raster Timing2[26].
And encoded value can range from 1 to 2048, programmable range is 0 to
2047.
Patch is verified on emulation platform of upcoming SoC for updated
feature and on DA850 platform to make sure nothing existing breaks.
Signed-off-by: Manjunathappa, Prakash <redacted>
---
Since v2:
Corrected comment describing horizontal resolution bits and removed unnecessary
outer parenthesis.
Since v1:
1)Fixed the bug in configuration of lpp_b10 in Raster Timing2[26] register.
2)Reframed commit message.
drivers/video/da8xx-fb.c | 31 ++++++++++++++++++++++++++++---
1 files changed, 28 insertions(+), 3 deletions(-)
@@ -460,18 +460,43 @@ static int lcd_cfg_frame_buffer(struct da8xx_fb_par *par, u32 width, u32 height,/* Set the Panel Width *//* Pixels per line = (PPL + 1)*16 */-/*0x3F in bits 4..9 gives max horisontal resolution = 1024 pixels*/-width&=0x3f0;+if(lcd_revision=LCD_VERSION_1){+/*+*0x3Finbits4..9givesmaxhorizontalresolution=1024+*pixels.+*/+width&=0x3f0;+}else{+/*+*0x7Finbits4..10givesmaxhorizontalresolution=2048+*pixels.+*/+width&=0x7f0;+}+reg=lcdc_read(LCD_RASTER_TIMING_0_REG);reg&=0xfffffc00;-reg|=((width>>4)-1)<<4;+if(lcd_revision=LCD_VERSION_1){+reg|=((width>>4)-1)<<4;+}else{+width=(width>>4)-1;+reg|=((width&0x3f)<<4)|((width&0x40)>>3);+}lcdc_write(reg,LCD_RASTER_TIMING_0_REG);/* Set the Panel Height */+/* Set bits 9:0 of Lines Per Pixel */reg=lcdc_read(LCD_RASTER_TIMING_1_REG);reg=((height-1)&0x3ff)|(reg&0xfffffc00);lcdc_write(reg,LCD_RASTER_TIMING_1_REG);+/* Set bit 10 of Lines Per Pixel */+if(lcd_revision=LCD_VERSION_2){+reg=lcdc_read(LCD_RASTER_TIMING_2_REG);+reg|=((height-1)&0x400)<<16;+lcdc_write(reg,LCD_RASTER_TIMING_2_REG);+}+/* Set the Raster Order of the Frame Buffer */reg=lcdc_read(LCD_RASTER_CTRL_REG)&~(1<<8);if(raster_order)
Hi Florian Tobias Schandinat,
Can you please accept below patch? It depends on my earlier patch "video: da8xx-fb: Interrupt configuration of revised LCDC IP" accepted by Paul, but I don't see it main line yet. Please let me know if I have submit both patches again?
Thanks,
Prakash
On Tue, Jul 26, 2011 at 09:50:12, Manjunathappa, Prakash wrote:
Hi Paul,
Could you please accept this patch as there are no comments?
Thanks,
Prakash
On Mon, Jul 18, 2011 at 09:58:53, Manjunathappa, Prakash wrote:
quoted
Revised LCD controller in upcoming TI SoC which is an updated version of
LCDC IP that was found on TI's DA850 SoC supports 2048*2048 resolution.
Below are the encoding details:
Width:
Pixels Per Line = {pplmsb, ppllsb, 4'b1111} + 1
Where pplmsb:1bit=>Raster Timing0[3], ppllsb:6bits=>Raster Timing0[9:4].
And encoded value can range from 16 to 2048 in multiples of 16.
Height:
Lines Per Panel = {lpp_b10, lpp}
Where lpp:10bits=>Raster Timing1[9:0], lpp_b10:1bit=>Raster Timing2[26].
And encoded value can range from 1 to 2048, programmable range is 0 to
2047.
Patch is verified on emulation platform of upcoming SoC for updated
feature and on DA850 platform to make sure nothing existing breaks.
Signed-off-by: Manjunathappa, Prakash <redacted>
---
Since v2:
Corrected comment describing horizontal resolution bits and removed unnecessary
outer parenthesis.
Since v1:
1)Fixed the bug in configuration of lpp_b10 in Raster Timing2[26] register.
2)Reframed commit message.
drivers/video/da8xx-fb.c | 31 ++++++++++++++++++++++++++++---
1 files changed, 28 insertions(+), 3 deletions(-)
@@ -460,18 +460,43 @@ static int lcd_cfg_frame_buffer(struct da8xx_fb_par *par, u32 width, u32 height,/* Set the Panel Width *//* Pixels per line = (PPL + 1)*16 */-/*0x3F in bits 4..9 gives max horisontal resolution = 1024 pixels*/-width&=0x3f0;+if(lcd_revision=LCD_VERSION_1){+/*+*0x3Finbits4..9givesmaxhorizontalresolution=1024+*pixels.+*/+width&=0x3f0;+}else{+/*+*0x7Finbits4..10givesmaxhorizontalresolution=2048+*pixels.+*/+width&=0x7f0;+}+reg=lcdc_read(LCD_RASTER_TIMING_0_REG);reg&=0xfffffc00;-reg|=((width>>4)-1)<<4;+if(lcd_revision=LCD_VERSION_1){+reg|=((width>>4)-1)<<4;+}else{+width=(width>>4)-1;+reg|=((width&0x3f)<<4)|((width&0x40)>>3);+}lcdc_write(reg,LCD_RASTER_TIMING_0_REG);/* Set the Panel Height */+/* Set bits 9:0 of Lines Per Pixel */reg=lcdc_read(LCD_RASTER_TIMING_1_REG);reg=((height-1)&0x3ff)|(reg&0xfffffc00);lcdc_write(reg,LCD_RASTER_TIMING_1_REG);+/* Set bit 10 of Lines Per Pixel */+if(lcd_revision=LCD_VERSION_2){+reg=lcdc_read(LCD_RASTER_TIMING_2_REG);+reg|=((height-1)&0x400)<<16;+lcdc_write(reg,LCD_RASTER_TIMING_2_REG);+}+/* Set the Raster Order of the Frame Buffer */reg=lcdc_read(LCD_RASTER_CTRL_REG)&~(1<<8);if(raster_order)
On 10/04/2011 07:00 AM, Manjunathappa, Prakash wrote:
Hi Florian Tobias Schandinat,
Can you please accept below patch? It depends on my earlier patch "video: da8xx-fb: Interrupt configuration of revised LCDC IP" accepted by Paul, but I don't see it main line yet. Please let me know if I have submit both patches again?
Thanks,
Prakash
Applied this patch. I already got the dependency when I merged Paul latest tree.
You can see the result under
git://github.com/schandinat/linux-2.6.git fbdev-next
or in the next linux-next build.
Thanks,
Florian Tobias Schandinat
On Tue, Jul 26, 2011 at 09:50:12, Manjunathappa, Prakash wrote:
quoted
Hi Paul,
Could you please accept this patch as there are no comments?
Thanks,
Prakash
On Mon, Jul 18, 2011 at 09:58:53, Manjunathappa, Prakash wrote:
quoted
Revised LCD controller in upcoming TI SoC which is an updated version of
LCDC IP that was found on TI's DA850 SoC supports 2048*2048 resolution.
Below are the encoding details:
Width:
Pixels Per Line = {pplmsb, ppllsb, 4'b1111} + 1
Where pplmsb:1bit=>Raster Timing0[3], ppllsb:6bits=>Raster Timing0[9:4].
And encoded value can range from 16 to 2048 in multiples of 16.
Height:
Lines Per Panel = {lpp_b10, lpp}
Where lpp:10bits=>Raster Timing1[9:0], lpp_b10:1bit=>Raster Timing2[26].
And encoded value can range from 1 to 2048, programmable range is 0 to
2047.
Patch is verified on emulation platform of upcoming SoC for updated
feature and on DA850 platform to make sure nothing existing breaks.
Signed-off-by: Manjunathappa, Prakash <redacted>
---
Since v2:
Corrected comment describing horizontal resolution bits and removed unnecessary
outer parenthesis.
Since v1:
1)Fixed the bug in configuration of lpp_b10 in Raster Timing2[26] register.
2)Reframed commit message.
drivers/video/da8xx-fb.c | 31 ++++++++++++++++++++++++++++---
1 files changed, 28 insertions(+), 3 deletions(-)
@@ -460,18 +460,43 @@ static int lcd_cfg_frame_buffer(struct da8xx_fb_par *par, u32 width, u32 height,/* Set the Panel Width *//* Pixels per line = (PPL + 1)*16 */-/*0x3F in bits 4..9 gives max horisontal resolution = 1024 pixels*/-width&=0x3f0;+if(lcd_revision=LCD_VERSION_1){+/*+*0x3Finbits4..9givesmaxhorizontalresolution=1024+*pixels.+*/+width&=0x3f0;+}else{+/*+*0x7Finbits4..10givesmaxhorizontalresolution=2048+*pixels.+*/+width&=0x7f0;+}+reg=lcdc_read(LCD_RASTER_TIMING_0_REG);reg&=0xfffffc00;-reg|=((width>>4)-1)<<4;+if(lcd_revision=LCD_VERSION_1){+reg|=((width>>4)-1)<<4;+}else{+width=(width>>4)-1;+reg|=((width&0x3f)<<4)|((width&0x40)>>3);+}lcdc_write(reg,LCD_RASTER_TIMING_0_REG);/* Set the Panel Height */+/* Set bits 9:0 of Lines Per Pixel */reg=lcdc_read(LCD_RASTER_TIMING_1_REG);reg=((height-1)&0x3ff)|(reg&0xfffffc00);lcdc_write(reg,LCD_RASTER_TIMING_1_REG);+/* Set bit 10 of Lines Per Pixel */+if(lcd_revision=LCD_VERSION_2){+reg=lcdc_read(LCD_RASTER_TIMING_2_REG);+reg|=((height-1)&0x400)<<16;+lcdc_write(reg,LCD_RASTER_TIMING_2_REG);+}+/* Set the Raster Order of the Frame Buffer */reg=lcdc_read(LCD_RASTER_CTRL_REG)&~(1<<8);if(raster_order)