Mini6410 in 2.6.39 Kernel

deltaT
Hi,
am I mistaken or has the mini6410 AND the 4.3" / 7" LCD fully included into
the 2.6.39 kernel?
I just scanned through the sources and it seems like it.

Though, I just compiled a vanilla 2.6.39 kernel with an adopted 2.6.36
configuration and the current FriendlyARM toolchain and I get some funky
output after decompressing the kernel:


Welcome to minicom 2.1

OPTIONS: History Buffer, F-key Macros, Search History Buffer, I18n 
Compiled on Jul  2 2011, 22:14:05.

Press CTRL-A Z for help on special keys
                                                                           
                                  
????ID Err                                                                 
                                  
Running OS 'LINUX'                                                         
                                  
Loading kernel...                                                          
                                  
Load kernel succeed                                                        
                                  
Start Linux kernel...
Uncompressing Linux... done, booting the kernel.
??.???Z????o?..{ƿ?o???j??.????.??..?/?+o.//k???...??..?.?f.???.??c???[.
.????z.???{.??}?..???.?.?cg???{???.?.?.????...?.?..???????w?o.?o?????.&#2047
;.?..?{??..?????{.???o?.?s?..?ooo???..?.?.?{??.;??
 ?

I tried gzip and lzma, I think it is a compiler problem...
Has anyone else tried porting 2.6.39 already?

Juergen Beisert
Linux-2.6.39.3 works out of the box on my Mini6410.

deltaT
Could you pls send me your .config?

Juergen Beisert
Your Email address?

Daniel
Would you mind uploading it to, for example, http://www.mediafire.com ? I
would like to have it, too.

deltaT
delta DOT tatham AT me DOT com // mediafire or pastebin would be great too

fatbrain
I would like to have .config  too

thanks
--

deltaT
Hi guys, 
got some news:
those funky bull* characters appear only if you boot the kernel from SD -
if you flash it to NAND it works (well... it displays proper characters,
but those I don't wanna read: 


kernel BUG at drivers/mtd/nand/nand_base.c:3271!
Unable to handle kernel NULL pointer dereference at virtual address
00000000
pgd = c0004000
[00000000] *pgd=00000000
Internal error: Oops: 805 [#1] PREEMPT
last sysfs file: 
Modules linked in:
CPU: 0    Not tainted  (2.6.39.3-ptx-2011.07.0deltaT #3)
PC is at __bug+0x1c/0x28
LR is at __bug+0x18/0x28
pc : [<c0028764>]    lr : [<c0028760>]    psr: 60000013
sp : cf825ec8  ip : 00003f00  fp : 00000000
r10: c0306e20  r9 : 00000001  r8 : 00000000
r7 : c0306e28  r6 : cf8675e0  r5 : cf837400  r4 : cf8375a8
r3 : 00000000  r2 : cf825ebc  r1 : c02abf21  r0 : 00000037
Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Control: 00c5387d  Table: 50004008  DAC: 00000017
Process swapper (pid: 1, stack limit = 0xcf824268)

(and some more funky stuff)

anyone got news on that?

deltaT
Sorry, cut too far down:


s3c6400-uart.0: ttySAC0 at MMIO 0x7f005000 (irq = 16) is a S3C6400/10
s3c6400-uart.1: ttySAC1 at MMIO 0x7f005400 (irq = 20) is a S3C6400/10
s3c6400-uart.2: ttySAC2 at MMIO 0x7f005800 (irq = 24) is a S3C6400/10
s3c6400-uart.3: ttySAC3 at MMIO 0x7f005c00 (irq = 28) is a S3C6400/10
at24 0-0050: 1024 byte 24c04 EEPROM, writable, 16 bytes/write
S3C24XX NAND Driver, (c) 2004 Simtec Electronics
s3c24xx-nand s3c6400-nand: Tacls=4, 30ns Twrph0=8 60ns, Twrph1=6 45ns
s3c24xx-nand s3c6400-nand: System booted from NAND
s3c24xx-nand s3c6400-nand: NAND hardware ECC
NAND device: Manufacturer ID: 0xec, Chip ID: 0xd5 (Samsung NAND 2GiB 3,3V
8-bit)
No oob scheme defined for oobsize 436
kernel BUG at drivers/mtd/nand/nand_base.c:3271!
Unable to handle kernel NULL pointer dereference at virtual address
00000000
pgd = c0004000
[00000000] *pgd=00000000
Internal error: Oops: 805 [#1] PREEMPT
last sysfs file: 
Modules linked in:
CPU: 0    Not tainted  (2.6.39.3-ptx-2011.07.0deltaT #3)
PC is at __bug+0x1c/0x28
LR is at __bug+0x18/0x28
pc : [<c0028764>]    lr : [<c0028760>]    psr: 60000013
sp : cf825ec8  ip : 00003f00  fp : 00000000
r10: c0306e20  r9 : 00000001  r8 : 00000000
r7 : c0306e28  r6 : cf8675e0  r5 : cf837400  r4 : cf8375a8
r3 : 00000000  r2 : cf825ebc  r1 : c02abf21  r0 : 00000037
Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Control: 00c5387d  Table: 50004008  DAC: 00000017
Process swapper (pid: 1, stack limit = 0xcf824268)
Stack: (0xcf825ec8 to 0xcf826000)

Juergen Beisert
deltaT,

did you see my announcement about the Mini6410 board support package? It
contains the kernelconfig and a few patches for 2.6.39.3. (refer
http://www.friendlyarm.net/forum/topic/3015). You can grab the required
components from my GIT repo, or if you still interested, I can send you the
required parts.

Juergen Beisert
Ups, I should read fist and then answer. You are already using my kernel.

It seems you are using a very huge MLC NAND with an OOB size the current
NAND framework do not support. I will have a look into it, maybe there is a
solution.

Juergen Beisert
Mine is a:

NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V
8-bit)

Juergen Beisert
deltaT,

yes, your NAND device is currently not supported. Here the routine that
gives you the error message.

  if (!chip->ecc.layout && (chip->ecc.mode != NAND_ECC_SOFT_BCH)) {
    switch (mtd->oobsize) {
    case 8:
      chip->ecc.layout = &nand_oob_8;
      break;
    case 16:
      chip->ecc.layout = &nand_oob_16;
      break;
    case 64:
      chip->ecc.layout = &nand_oob_64;
      break;
    case 128:
      chip->ecc.layout = &nand_oob_128;
      break;
    default:
      printk(KERN_WARNING "No oob scheme defined for "
             "oobsize %d\n", mtd->oobsize);
      BUG();
    }
  }

Until it is supported you could disable NAND support in your kernel config
and use the SD card for the a root filesystem instead.

deltaT
Juergen:

first and foremost: great job on the toolchain, I really love it!

I am using the tiny6410 which comes with up to 2GB MLC2 NAND.

I looked into the file in question and tried to port files from 2.6.38,
but... let's just say it was messy.

Also, you might want to look into the nand-partitioning at
arch/arm/mach-s3c64xx/mach-mini610.c, I had to change the partition table
to the one u-boot populates the flash - I can send you my version if you're
interested.

I am not quite sure how it is with the touchscreen, I am in the process of
patching tslib, will submit a patch once it's confirmed working.

As for the rootfs: until I have everything stable, I will work from nfs
anyways, so no harm done.

Juergen Beisert
detaT,

I tried to get the data sheet of this NAND. But you can get it only with an
NDA :-(

It seems to be a NAND with 8 or 16 kiB page size (guessed) and 436 bytes
OOB. Without a datasheet there is no chance to adapt it.

The touchscreen is working here. What issues do you see with it, to change
the code of tslib?

deltaT
Juergen,
according to arm9.net it's 8kiB page-size

What information do you need exactly? maybe I can find it somewhere.

RE touchscreen:
apparently, there were some changes to the hardware as well, it seems the
board is delivered with the TouchCom adapter (or something else...)
it shows up as /dev/touchscreen-1wire and requires a specific tslib-plugin.
Some brave hacker got published a modified tslib/plugins/input-raw.c (it's
not pretty, but gets the job done) since evtouch is not working AT ALL (not
even the images supplied by friendlyarm)

With the modifications, I got the Xserver to stop bitching, but it still
needs some fine-tuning

Juergen Beisert
I need the NAND's datasheet ;-) Its hard to know what information I really
need at this point of time. Page size, OOB size and erase block size are
the most important ones. And then the info for address cycle count and
commands are of interest. This is not only important for the kernel, also
the bootloader must know it.

Touchscreen: Do they change from a passive touchscreen (using the
processor's internal ADC) to an external active touchscreen with its own
controller??

deltaT
Mhkay... so there's no way to pull the information from the patched kernels
FriendlyARM released? (The latest I have is 2.6.38)
For the bootloader, have you looked into the opencsbc project? As far as I
remember, they have a mini6410-tree in their uboot port, and one of their
developers tried to submit the patch to the official uboot git, but it got
rejected rather rudely because the code wasn't pretty enough.

This touchscreen issue is really giving me grey hair - I spent the entire
day trying to get it working...
I haven't disected the LCD-Panel yet, so I can't tell you for certain which
controller they are using, but it seems it's similar to the Touchcom
controller that's shipped with the 7" LCD. (BTW: I'm using a tiny6410 with
4.3")
The tslib-tools with the raped input-raw work now (ts_calibrate with
TSLIB_TSDEVICE=/dev/touchscreen-1wire), but I can't get it up and running
on X

deltaT
BTW: This is the datasheet for the MLC chips
http://www.arm9.net/datasheet/K9GAG08U0E.pdf

Juergen Beisert
deltaT,

do they not provide patch stacks? Only the changed source tree? Do you kno 
where I can get their source code?

BTW: It seems the ECC sum the 6410 can generate are very weak to protect
this kind of NAND memory. For the 8 kiB page the 6410 can generate only 204
bytes of ECC information. But the NAND provides 436 bytes for the
checksums...

deltaT
oi,
nope - no patches, nothing.
You can download the 2.6.38 sources (from god knows where...) and that's
it.

I got an E-Mail today, saying that the Mini and Tiny6410 are built using
the same components - but that contradicts the touchscreen-issue, because
for you it works apparently...

Juergen Beisert
I searched their website for any kind of kernel sources, but no luck. Does
anybody knows a source for their 2.6.38 kernel?

deltaT
It's well hidden in their images ;)

http://arm9download.cncncn.com/mini6410/linux/20110322/linux-2.6.38-2011...

How did you get your touchscreen working / what GUI are you using?

Juergen Beisert
Thanks for the link.

Touchscreen: I use the generic S3c2410 touchscreen driver and tslib in
userland. Works with ts_calibrate and ts_test and also Qt here.

deltaT
Are you using a mini or a tiny?

I figure I will change to a mini, I don't see any point wasting any more
time on it.
So far, I tried every thinkable combination of X / input-tslib / tslib and
kernel-modules - it just won't work.
Since I only develop for X / Gtk - would you mind giving the fluxbox in
your toolchain a shot?

ts_calibrate works fine with the friendlyarm and patched tslib-plugins, for
ts_test only the patched tslib works.
X reports it successfully included the tslib-module, but it doesn't respond
- I searched the whole web and found !!!nothing!!!

With the FriendlyARM-Ubuntu image, it worked after some convincing, ptxdist
and multistrap images don't

Juergen Beisert
I'm using the Mini6410 here

deltaT
Reading - a lost ability -_- (just saw you already stated that in your
first reply...)

So even though arm9 tells me they use exactly the same hardware on the tiny
and the mini it's connected in a different way or whatever -- at least that
explains the 3 defined input methods in their kconfig. Seems like a rather
semi-smart move to me.

OK - so I guess I'll move to the mini too - I'm in no mood for crazy kernel
hacks.

vib
Hi there,
I would like to try on the 2.6.39.4 kernel. Would someone send me the
.config please? or point me to the website where I can get it. My email is
vibnwis@yahoo.com.

Thanks in advance.

Cheers!
vib

Juergen Beisert
vib,

try "make ARCH=arm help". This will output a long list which includes the
following line:

[...]
mini2440_defconfig       - Build for mini2440
[...]

So, the kernel always comes with a predefined config. Just run "make
ARCH=arm mini2440_defconfig" and then build the kernel. Same for the more
current 3.1 kernel

vib
Thanks Juergen,
I actually used config_mini6410_a70 ( using 2.6.38 ) by replacing the
.config. As kernel 2.6.39.4 has a lot new features, compiling it causes a
long list of questions for filling up the new features. 
Firstly, I don't quite understand those features and the implications of
those features to the final results. So my approach is to use the
config_mini6410_a70 as the starting point.

Anyone who has the .config would be very helpful for going through all the
unnecessary troubles.

Cheers!
vib