[U-Boot] Flex-OneNAND driver merged to mainline kernel

Amit Kumar Sharma amitsharma.9 at samsung.com
Sat Jun 27 10:08:05 CEST 2009


Hi Scott.

Flex-OneNAND is merged to 2.6.31-rc1. I hope now 
Flex-OneNAND can be merged to uboot.
We will rebase flex-OneNAND to uboot git.

----- Original Message ----- 
From: "Kyungmin Park" <kyungmin.park at samsung.com>
To: "Scott Wood" <scottwood at freescale.com>
Cc: <u-boot at lists.denx.de>
Sent: Saturday, June 27, 2009 1:02 PM
Subject: Re: [U-Boot] [PATCH 4/6] S5PC100: onenand driver 
for SMDKC100 support


Hi,

On Sat, Jun 27, 2009 at 2:54 AM, Scott 
Wood<scottwood at freescale.com> wrote:
> On Thu, Jun 25, 2009 at 05:10:37PM +0900, HeungJun Kim 
> wrote:
>> This patch includes the onenand driver for SMDKC100 
>> Board.
>>
>> Signed-off-by: HeungJun, Kim <riverful.kim at samsung.com>
>>
>> ---
>>
>> drivers/mtd/onenand/Makefile | 8 +-
>> drivers/mtd/onenand/s5p_onenand.c | 2034 
>> +++++++++++++++++++++++++++++++++++++
>> include/linux/mtd/onenand_regs.h | 5 +
>> include/linux/mtd/s5p_onenand.h | 425 ++++++++
>
> Please try to refactor the existing onenand code to 
> support controller
> variations, rather than duplicating parts of it.
>
> Or if you can find absolutely no common ground (but I hope 
> you can), at
> least change the names so they don't conflict. Are you 
> planning on
> supporting this in Linux? What is it going to look like 
> there?
>
> Kyungmin, any thoughts? Why do we have a specific 
> controller
> implementation in something generically named 
> "onenand_base.c"? Or is
> this different because of a different type of onenand 
> chip?

Right, I wrote the OneNAND drivers for s3c64xx/s5pc100 but 
now only
interface part are release at mtd & arm list.

The current status of this patch only *working* version. So 
I NAKed
this patch. next time Mr Kim will post the new OneNAND 
drivers
I did not get what is in New OneNAND drivers
Thank you,
Kyungmin Park

>
> I don't understand OneNAND very well (and google doesn't 
> turn up much but
> marketing), which makes including it under the same 
> custodianship as NAND
> somewhat awkward. :-(
>
>> diff --git a/drivers/mtd/onenand/Makefile 
>> b/drivers/mtd/onenand/Makefile
>> index 1d35a57..aad1362 100644
>> --- a/drivers/mtd/onenand/Makefile
>> +++ b/drivers/mtd/onenand/Makefile
>> @@ -25,7 +25,13 @@ include $(TOPDIR)/config.mk
>>
>> LIB := $(obj)libonenand.a
>>
>> -COBJS-$(CONFIG_CMD_ONENAND) := onenand_uboot.o 
>> onenand_base.o onenand_bbt.o
>> +COBJS-$(CONFIG_CMD_ONENAND) := onenand_uboot.o
>> +
>> +ifdef CONFIG_S5PC1XX
>> +COBJS-$(CONFIG_CMD_ONENAND) += s5p_onenand.o
>> +else
>> +COBJS-$(CONFIG_CMD_ONENAND) += onenand_base.o 
>> onenand_bbt.o
>> +endif
>
> Why no bbt?

This driver checks the bad block at runtime at every access. 
:)

>
>> +/**
>> + * onenand_read_burst
>> + *
>> + * 16 Burst read: performance is improved up to 40%.
>> + */
>> +static void onenand_read_burst(void *dest, const void 
>> *src, size_t len)
>> +{
>> + int count;
>> +
>> + if (len % 16 != 0)
>> + return;
>> +
>> + count = len / 16;
>> +
>> + __asm__ __volatile__(
>> + " stmdb r13!, {r0-r3,r9-r12}\n"
>> + " mov r2, %0\n"
>> + "1:\n"
>> + " ldmia r1, {r9-r12}\n"
>> + " stmia r0!, {r9-r12}\n"
>> + " subs r2, r2, #0x1\n"
>> + " bne 1b\n"
>> + " ldmia r13!, {r0-r3,r9-r12}\n"::"r" (count));
>> +}
>
> What is this doing that we couldn't generically make 
> memcpy do?

Even though It looks some strange. it has some performance 
gain. but
not general.


Thanks
Amit
>
> -Scott
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>
_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot 




More information about the U-Boot mailing list