mini2440 3.5 lcd problem

hakkig
Hi all,
The image on the 3.5" lcd on my mini2440 is shifted to left by about 10
pixels, and corresponding righthand side of the screen is black. I think it
is a software/setting problem.
Any ideas how to fix this?
Thanks in advance

yosh
just install a correct image, i suspect your lcd is N35, and you´ve
installed the image for the T35 ( default factory comes with qtopia for T35
)

mgalemin
I have discovered this issue too. On linux kernel 2.6.31 from Buserror
repository display image has blank area in the left side of the display.
Moreover, I compiled tslib and after a scope of tests I discovered, that
after touchscreen calibration and testing using ts_test utility I received
next results:

# ts_test

For upper left corner of the screen:
191.215095: -12 0 1
191.235065: -12 0 1
191.245091: -12 0 1
191.255091: -12 0 1

For bottom left corner of the screen:
213.025056: -13 320 1
213.055057: -13 320 1
213.075057: -13 320 1
213.105065: -13 320 1

For upper right corner of the screen:
48.995089: 228 0 1
49.005106: 228 0 1
49.025067: 228 0 1
49.085230: 228 0 1

For bottom right corner of the screen:
55.140097: 227 320 1
55.170088: 227 320 1
55.180091: 227 320 1
55.190094: 227 320 1

So picture and touchscreen offset is some about 13 pixels. And after some
digging in the kernel I realized that issue is in the
/arch/arm/mach-s3c2440/mach-mini2440.c file (for kernel 2.6.31). In my case
I had to change in _LCD_DECLARE macro parameter margin_right in
mini2440_lcd_cfg[0] structure from 38 to 25 (13 pixels). Here is an example
of patch (in your case offset can be different and for 7" LCD you should
change mini2440_lcd_cfg[1]):

=========================================================
--- a/arch/arm/mach-s3c2440/mach-mini2440.c   2009-10-09 14:04:28.000000000
+0300
+++ a/arch/arm/mach-s3c2440/mach-mini2440.c   2009-10-09 14:04:45.000000000
+0300
@@ -228,7 +228,7 @@
   [0] = {   /* mini2440 + 3.5" TFT + touchscreen */
      _LCD_DECLARE(
         7,         /* The 3.5 is quite fast */
-         240, 21, 38, 6,    /* x timing */
+         240, 21, 25, 6,    /* x timing */
         320, 4, 4, 2,      /* y timing */
         60),         /* refresh rate */
      .lcdcon5   = (S3C2410_LCDCON5_FRM565 |

=========================================================

imayoda
Excellent! Perfect.. but i see there are 2 more black pixels on the top of
the screen. What value should I modify in order to get them working
(toppoly 3,5" indeed :) )

Thanks in advance

imayoda
Ah ok.. quite simple: y timing set to 320, 2, 4, 2,

Keep going :D

Maxn
Hello,
I have a mini2440 device with 3.5" lcd.
I can't configure my touch screen properly. 
When i run ts_calibrate, it gives me out of the range values (larger than
240 and 320)

# ts_calibrate

xres = 240, yres = 320
Took 3 samples...
Top left : X =  269 Y =  802
Took 5 samples...
Top right : X =  744 Y =  805
Took 5 samples...
Bot right : X =  730 Y =  243
Took 5 samples...
Bot left : X =  257 Y =  234
Took 5 samples...
Center : X =  506 Y =  519
-24.525146 0.295405 -0.006785
360.303558 0.004907 -0.389480
Calibration constants: -1607280 19359 -444 23612854 321 -25524 65536

# ts_test

For upper left corner of the screen:
1258990843.674079:      3      4      1
1258990843.684055:      3      4      1
1258990843.704042:      3      4      1
1258990843.714046:      3      4      1
1258990843.719095:      4      5      0

For bottom left corner of the screen:
1258990876.559084:      9    320      1
1258990876.599031:      9    320      1
1258990876.604118:      9    320      0

For upper right corner of the screen:
1258991168.274082:    233      9      1
1258991168.284055:    233      9      1
1258991168.294063:    233      9      1
1258991168.314031:    233      8      1
1258991168.324046:    233      8      1

For bottom right corner of the screen:
1258991214.264094:    232    315      1
1258991214.294029:    231    315      1
1258991214.304060:    231    315      1
1258991214.314062:    231    315      1
1258991214.344037:    231    315      1

What's the reason?

Razor
Hi,
I m using Qt4.5.3 on mini2440 with tslib.
I m trying to use same /bin/qtopia file from qtopia2.2 which comes with
friendly arm for faster boot up.

My /bin/qtopia file looks like this:- (These paths are correct according to
my environment)

#!/bin/sh
mknod /dev/input/ts c 13 65
export TSLIB_TSEVENTTYPE=INPUT
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/ts
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/local/Qt/lib/ts
export QTDIR=/usr/local/Qt
export QPEDIR=/usr/local/Qt
export PATH=$QTDIR/bin:$PATH
export QWS_MOUSE_PROTO=tslib:$TSLIB_TSDEVICE
export LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH
.......................

The qtopia file of qtopia2.2 is:-

#!/bin/sh

export TSLIB_TSDEVICE=/dev/input/event0 
export TSLIB_CONFFILE=/usr/local/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/local/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export QTDIR=/opt/Qtopia
export QPEDIR=/opt/Qtopia
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH
.....................

Now, my question is, when qtopia 2.2 boots up, as tslib paths are
exported,you can directly use touch screen. But for me, touch screen won't
work at boot up and on console , i have to again export above paths
manually and then it works.

My /etc/init.d/rcS is also same which calls /bin/qtopia.

Any guess , what changes i should make?

Dew
Hello

I have a problem about ./ts_calibrate command. It returns "segmentation
fault". How can I solve this problem.

For more infomation, I use mini2440 with nand 128mb and emdebian as the
root file system.



===This is a result===

INDIR=/usr/lib/tsh-3.2# export TSLIB_CONSOLEDEVICE=none                    
    
sh-3.2# export TSLIB_FBDEVICE=/dev/fb0                                     
    
sh-3.2# export TSLIB_TSDEVICE=/dev/input/event1                            
    
sh-3.2# export TSLIB_CALIBFILE=/etc/pointercal                             
    
sh-3.2# export TSLIB_CONFFILE=/etc/ts.conf                                 
    
sh-3.2# export TSLIB_PLUGINDIR=/usr/lib/ts                                 
    
sh-3.2# export QWS_MOUSE_PROTO=tslib:/dev/input/event1                     
    
sh-3.2# cd bin                                                             
    
sh-3.2# ./ts_calibrate                                                     
    
Segmentation fault 

===ts.conf===

module_raw input
module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear

ufoheli
there was small hint somewhere on the web, try following
export TSLIB_CONFFILE
then
./ts_calibrate
then set back
export TSLIB_CONFFILE=/etc/ts.conf

ufoheli
BTW you can have a look also here
http://blog.cor-net.org/embedded/mini2440/qt-45-on-mini2440/

martonmiklos
In reply to the original question:

The blank left row can be eliminated by passing the right bootarg to kernel
from the uboot. 

The mini2440=0tb is used for an older 3.5" LCD. The LCDs after 2009 Nov
(T35) requires the 3tb parameter.

Use setenv bootargs root=/dev/mtdblock3 rootfstype=jffs2
console=ttySAC0,115200 mini2440=3tb; saveenv; reset or similar in the uboot
prompt to solve the issue.

sonnguyen478
For the question "the image on the 3.5" lcd on my mini2440 is shifted to
left by about 10 pixels", I have had the sample problem and my solution is
change the file march-mini2440.c.
For source code kernel version 2.6.32.2 you should open the file
linux-2.6.32.2/arch/arm/mach-s3c2440/mach-mini2440.c and change to:
#define LCD_WIDTH  240
#define LCD_HEIGHT 320
#define LCD_PIXCLOCK 100000
#define LCD_RIGHT_MARGIN 25
#define LCD_LEFT_MARGIN 0
#define LCD_HSYNC_LEN 4
#define LCD_VSYNC_LEN 1
#define LCD_UPPER_MARGIN 1
#define LCD_LOWER_MARGIN 4
For source code kernel you download on the git, open the sample file and
change this command:
.displays   = &mini2440_lcd_cfg[0]
to
.displays   = &mini2440_lcd_cfg[3]
if your lcd is TFT 3,5".

I hope my result can help you.

mike
Hi ,...I Compiled Linuc2.6, and Android ..both were executing fine..but no
display.....
Mine is Mini2440 board with TPO lcd...the image provided zImaget35 with
board works...fine but i dont where i went wrong in Kernel
configuration...kindly any one suggest me..

davef
You know it works fine because you get sensible message on a remote
terminal?

I'll guess ... have you got all these boxes ticked in kernelconfig?

Device Drivers  --->
  Character devices  --->
    [*] Virtual terminal
    [*]   Enable character translations in console
    [*]   Support for console on virtual terminal
 
  Graphics support  --->
                [*] Support for frame buffer devices  --->
                        <*> S3C2410 LCD framebuffer support       

    Console display driver support  ---> 
      <*> Framebuffer Console support
      [*] Map the console to the primary display device
      [*] Select compiled-in fonts 
      [*] VGA 8x8 font

        Input device support --->
                [*} Touchscreens --->
                {*] Samsung S3c generic touchscreen input driver
      
                <*> Mouse interface
                [ ] Provide legacy /dev/psaux device
       (240) Horizontal screen resolution
                (320) Vertical screen resolution

The last two are possibly different for you.

Good luck!

mike
Dear Davef...

I just followed the steps as mentioned above but i got this error....
Device Drivers  --->
  Character devices  --->
I din't find any of this options
    [*] Virtual terminal
    [*]   Enable character translations in console
    [*]   Support for console on virtual terminal


 Graphics support  --->
                [*] Support for frame buffer devices  --->
         I din't find the below option......there was no s3c2410 options
                        <*> S3C2410 LCD framebuffer support  

Input device support --->
                [*} Touchscreens --->
  I din't find the below option......there was no s3c options
                {*] Samsung S3c generic touchscreen input driver

drivers/input/touchscreen/eeti_ts.c: In function 'eeti_ts_irq_active':
drivers/input/touchscreen/eeti_ts.c:64: error: implicit declaration of
function 'irq_to_gpio'
make[3]: *** [drivers/input/touchscreen/eeti_ts.o] Error 1
make[2]: *** [drivers/input/touchscreen] Error 2
make[1]: *** [drivers/input] Error 2
make: *** [drivers] Error 2

regards,
mike

davef
What kernel are you using?

davef
Are you trying to compile a mainline older kernel?

mike
Hi Dave,..I am using 
linux-2.6.32.2-mini2440-20110413.tar.gz

The ond provided by board manufacturer....

Dave ..I was not getting the options what you have provided but if compile
without any modifications in my default config file...i.e
config_mini2440t35...I wont get any display........

But i get with default image what they have provided .........

today i unzipped a fresh copy of kernel and configured as you mentioned
...but still there were few options missing ...But But i din't get any
error let me see if i could get display

davef
OK, what root filesystem are you using?

It has been years since I used that kernel version.  The last year or so I
have been using the Pengutronix BSP.  If you are just starting out and want
to get to work I'd suggest their BSP.  

If you are wanting to learn the process then persist with your current
kernel.

So, your remote terminal gives you access to what is going on the target? I
did ask that several posts up.

mike
hi Dave,

I am using rootfs_qtopia_qt4.img....I dint tried to create any image for
root file system i am using the one provided with Board manufacturer

Yes Dave my terminal gives me access to my kernel running on my
target...Both Android and linux 2.6.....

No Dave it's  not like that i want to learn only that linux 2.6 or the one
provided with board manufacturer... Or just learn process .....

My idea is to experiment or bring up all the available version on my
board..later i want to learn debugging of the drivers....

Ok Dave can you give link to Pengutronix BSP i want to give a try for
it...Since i am in starting stage i would like to go one which is current
trend

Regards,
Devika

davef
I think you need to work out why your display doesn't work with the
supplied images.

There are a number of issues people have had with various displays for
these devices.

So, tell us the full part number of the display.

Also, I assume you have never seem anything on the touchscreen on this
unit.

The Pengutronix BSP covers most or all of the known displays for the
mini2440.  Check through their QuickStart.pdf

It's all at:

http://www.oselas.org/oselas/bsp/pengutronix/mini2440_bsp_en.html

Mike
Hi Dave,...I just followed your steps for linux configuration and it worked
this time display came ...But is it same configuration works for Android
also?
If not can you provide me configuraion steps..!

davef
I know nothing about Android.

Good luck!

mike
Hi,..Dave...I downloaded Pengutronics....BSP for mini2440..and thought of
patching with latest kernel...I am goggling but,... can you brief of
patching steps...
Many many thanks for your all support...

regards,

davef
Bleeding edge ...

http://git-public.pengutronix.de/?p=OSELAS.BSP-Pengutronix-Mini2440.git;...

mike
Hello Dave,

I want to proceed with Analyses of Linux start up, boot loader and device
driver and thought of using OpenOCD.

Can you please let me know the basics of OpenOCD, or MINI2440 Debugging
technique.

Thanks in advance regards,

renukprasad
Hi
 I am doing project on friendly arm so please can any one help me out for
writing the program in c language that i want to write program as, where
ever i touch on the screen i should get the co-ordinates .........so please
can anyone help me

davef
If you look in the code examples of the DVD you might find the code for
ts_test, which I think will give you the co-ordinates.

renukprasad
but that DVD is in Chinese language so that i am unable to understand.