Re: [PATCH 1/2]: OMAP: SDP: Introducing 'board-sdp-flash.c' for flash init

2010-01-04 Thread Vimal Singh
Tony,

On Tue, Dec 22, 2009 at 2:21 PM, Vimal Singh  wrote:
> On Tue, Dec 15, 2009 at 1:01 AM, Tony Lindgren  wrote:
>> * Vimal Singh  [091214 01:58]:
>>> On Tue, Dec 8, 2009 at 12:06 AM, Tony Lindgren  wrote:
>>> > * Vimal Singh  [091206 22:39]:
>>> >> On Sat, Dec 5, 2009 at 3:47 AM, Tony Lindgren  wrote:
>>> >> > Hi,
>>> >> >
>>> >> > * Vimal Singh  [091203 06:09]:
>>> >> >> From 13d52884956a26f93826c443e2b8bd78615f74d6 Mon Sep 17 00:00:00 2001
>>> >> >> From: Vimal Singh 
>>> >> >> Date: Thu, 26 Nov 2009 16:10:24 +0530
>>> >> >> Subject: [PATCH] OMAP: SDP: Introducing 'board-sdp-flash.c' for flash 
>>> >> >> init
>>> >> >>
>>> >> >> This patch adds 'board-sdp-flash.c', which could be utilized
>>> >> >> by boards similar to 3430SDP. (For ex: 2430sdp, 36030sdp).
>>> >> >>
>>> >> >> This file does initialization for all three flash devices present
>>> >> >> in SDP boards (NOR, NAND, OneNAND), by finding there 'cs' number
>>> >> >> dynamically using switch setting information (S8: 1-4).
>>> >> >> This also expects partition information from core board files (for
>>> >> >> ex: board-3430sdp.c). Which allows to choose different default
>>> >> >> partitions for different boards.
>>> >> >>
>>> >> >> A new structure is created for this purpose: 'flash_partitions'
>>> >> >> in 'mach/board-sdp.h'. This has two members:
>>> >> >> 1. struct mtd_partition *parts
>>> >> >> 2. int nr_parts
>>> >> >>
>>> >> >> A board file is expected to fill this structure and pass it to
>>> >> >> 'sdp-flsash-init'. Partition information should be passed in
>>> >> >> structure array of 'flash_partitions'. Partition information should
>>> >> >> be passed in below sequence in array:
>>> >> >> NOR
>>> >> >> OneNAND
>>> >> >> NAND
>>> >> >>
>>> >> >> Signed-off-by: Vimal Singh 
>>> >> >> ---
>>> >> >>  arch/arm/mach-omap2/board-sdp-flash.c        |  246 
>>> >> >> ++
>>> >> >>  arch/arm/mach-omap2/include/mach/board-sdp.h |   22 +++
>>> >> >>  arch/arm/plat-omap/include/plat/gpmc.h       |    2 +
>>> >> >>  3 files changed, 270 insertions(+), 0 deletions(-)
>>> >> >>  create mode 100644 arch/arm/mach-omap2/board-sdp-flash.c
>>> >> >>  create mode 100644 arch/arm/mach-omap2/include/mach/board-sdp.h
>>> >> >>
>>> >> >> diff --git a/arch/arm/mach-omap2/board-sdp-flash.c
>>> >> >> b/arch/arm/mach-omap2/board-sdp-flash.c
>>> >> >> new file mode 100644
>>> >> >> index 000..fbbcd0e
>>> >> >> --- /dev/null
>>> >> >> +++ b/arch/arm/mach-omap2/board-sdp-flash.c
>>> >> >
>>> >> > 
>>> >> >
>>> >> >> +__init board_nand_init(struct flash_partitions sdp_nand_parts, u8 cs)
>>> >> >> +{
>>> >> >> +     sdp_nand_data.cs                = cs;
>>> >> >> +     sdp_nand_data.parts             = sdp_nand_parts.parts;
>>> >> >> +     sdp_nand_data.nr_parts          = sdp_nand_parts.nr_parts;
>>> >> >> +
>>> >> >> +     sdp_nand_data.gpmc_cs_baseaddr  = (void *)(OMAP34XX_GPMC_VIRT +
>>> >> >> +                                                     GPMC_CS0_BASE +
>>> >> >> +                                                     cs * 
>>> >> >> GPMC_CS_SIZE);
>>> >> >> +     sdp_nand_data.gpmc_baseaddr      = (void *) 
>>> >> >> (OMAP34XX_GPMC_VIRT);
>>> >> >> +
>>> >> >> +     gpmc_nand_init(&sdp_nand_data);
>>> >> >> +}
>>> >> >
>>> >> > This does not look right. You're supposed to use gpmc_cs_request()
>>> >> > for allocating the GPMC area based on the chip select and size.
>>> >>
>>> >> I guess you are getting confuse a bit here:
>>> >> gpmc_baseaddr: is the virtual address for GPMC_REVISION (which is also
>>> >> base address for GPMC).
>>> >> gpmc_cs_baseaddr : This is offset from above to 'GPMC_CONFIG(cs)' for
>>> >> specified cs number.
>>> >>
>>> >> These are needed by nand driver.
>>> >
>>> > Right.. Looks like drivers/mtd/nand/omap2.c needs to be fixed so we
>>> > can get rid of this.
>>> >
>>> > And looks like we already are doing it all over the place anyways :(
>>> >
>>> >> While 'gpmc_cs_request' gives physical address to the device resource.
>>> >> And this is done in 'nand/omap2.c'. This is done in driver itself so
>>> >> that we don't allocate a resource even before driver gets loaded.
>>> >
>>> > Yuk.. The nand driver should be generic.
>>> >
>>> >> >> --- a/arch/arm/plat-omap/include/plat/gpmc.h
>>> >> >> +++ b/arch/arm/plat-omap/include/plat/gpmc.h
>>> >> >> @@ -27,6 +27,8 @@
>>> >> >>
>>> >> >>  #define GPMC_CONFIG          0x50
>>> >> >>  #define GPMC_STATUS          0x54
>>> >> >> +#define GPMC_CS0_BASE                0x60
>>> >> >> +#define GPMC_CS_SIZE         0x30
>>> >> >
>>> >> > The GPMC_CS0_BASE and GPMC_CS_SIZE seem to be values specic to
>>> >> > your board, not for the GPMC hardware.
>>> >>
>>> >> These are offsets and very much specific to GPMC hardware.
>>> >>
>>> >> GPMC_CS0_BASE: is offset from GPMC base to first cs GPMC_CONFIG1 
>>> >> register.
>>> >> GPMC_CS_SIZE : is offset (gap) between next cs config registers, e.i.
>>> >> size for cs config registers.
>>> >
>>> > Let's keep it local until drivers/m

Re: [PATCH 1/2]: OMAP: SDP: Introducing 'board-sdp-flash.c' for flash init

2009-12-22 Thread Vimal Singh
On Tue, Dec 15, 2009 at 1:01 AM, Tony Lindgren  wrote:
> * Vimal Singh  [091214 01:58]:
>> On Tue, Dec 8, 2009 at 12:06 AM, Tony Lindgren  wrote:
>> > * Vimal Singh  [091206 22:39]:
>> >> On Sat, Dec 5, 2009 at 3:47 AM, Tony Lindgren  wrote:
>> >> > Hi,
>> >> >
>> >> > * Vimal Singh  [091203 06:09]:
>> >> >> From 13d52884956a26f93826c443e2b8bd78615f74d6 Mon Sep 17 00:00:00 2001
>> >> >> From: Vimal Singh 
>> >> >> Date: Thu, 26 Nov 2009 16:10:24 +0530
>> >> >> Subject: [PATCH] OMAP: SDP: Introducing 'board-sdp-flash.c' for flash 
>> >> >> init
>> >> >>
>> >> >> This patch adds 'board-sdp-flash.c', which could be utilized
>> >> >> by boards similar to 3430SDP. (For ex: 2430sdp, 36030sdp).
>> >> >>
>> >> >> This file does initialization for all three flash devices present
>> >> >> in SDP boards (NOR, NAND, OneNAND), by finding there 'cs' number
>> >> >> dynamically using switch setting information (S8: 1-4).
>> >> >> This also expects partition information from core board files (for
>> >> >> ex: board-3430sdp.c). Which allows to choose different default
>> >> >> partitions for different boards.
>> >> >>
>> >> >> A new structure is created for this purpose: 'flash_partitions'
>> >> >> in 'mach/board-sdp.h'. This has two members:
>> >> >> 1. struct mtd_partition *parts
>> >> >> 2. int nr_parts
>> >> >>
>> >> >> A board file is expected to fill this structure and pass it to
>> >> >> 'sdp-flsash-init'. Partition information should be passed in
>> >> >> structure array of 'flash_partitions'. Partition information should
>> >> >> be passed in below sequence in array:
>> >> >> NOR
>> >> >> OneNAND
>> >> >> NAND
>> >> >>
>> >> >> Signed-off-by: Vimal Singh 
>> >> >> ---
>> >> >>  arch/arm/mach-omap2/board-sdp-flash.c        |  246 
>> >> >> ++
>> >> >>  arch/arm/mach-omap2/include/mach/board-sdp.h |   22 +++
>> >> >>  arch/arm/plat-omap/include/plat/gpmc.h       |    2 +
>> >> >>  3 files changed, 270 insertions(+), 0 deletions(-)
>> >> >>  create mode 100644 arch/arm/mach-omap2/board-sdp-flash.c
>> >> >>  create mode 100644 arch/arm/mach-omap2/include/mach/board-sdp.h
>> >> >>
>> >> >> diff --git a/arch/arm/mach-omap2/board-sdp-flash.c
>> >> >> b/arch/arm/mach-omap2/board-sdp-flash.c
>> >> >> new file mode 100644
>> >> >> index 000..fbbcd0e
>> >> >> --- /dev/null
>> >> >> +++ b/arch/arm/mach-omap2/board-sdp-flash.c
>> >> >
>> >> > 
>> >> >
>> >> >> +__init board_nand_init(struct flash_partitions sdp_nand_parts, u8 cs)
>> >> >> +{
>> >> >> +     sdp_nand_data.cs                = cs;
>> >> >> +     sdp_nand_data.parts             = sdp_nand_parts.parts;
>> >> >> +     sdp_nand_data.nr_parts          = sdp_nand_parts.nr_parts;
>> >> >> +
>> >> >> +     sdp_nand_data.gpmc_cs_baseaddr  = (void *)(OMAP34XX_GPMC_VIRT +
>> >> >> +                                                     GPMC_CS0_BASE +
>> >> >> +                                                     cs * 
>> >> >> GPMC_CS_SIZE);
>> >> >> +     sdp_nand_data.gpmc_baseaddr      = (void *) (OMAP34XX_GPMC_VIRT);
>> >> >> +
>> >> >> +     gpmc_nand_init(&sdp_nand_data);
>> >> >> +}
>> >> >
>> >> > This does not look right. You're supposed to use gpmc_cs_request()
>> >> > for allocating the GPMC area based on the chip select and size.
>> >>
>> >> I guess you are getting confuse a bit here:
>> >> gpmc_baseaddr: is the virtual address for GPMC_REVISION (which is also
>> >> base address for GPMC).
>> >> gpmc_cs_baseaddr : This is offset from above to 'GPMC_CONFIG(cs)' for
>> >> specified cs number.
>> >>
>> >> These are needed by nand driver.
>> >
>> > Right.. Looks like drivers/mtd/nand/omap2.c needs to be fixed so we
>> > can get rid of this.
>> >
>> > And looks like we already are doing it all over the place anyways :(
>> >
>> >> While 'gpmc_cs_request' gives physical address to the device resource.
>> >> And this is done in 'nand/omap2.c'. This is done in driver itself so
>> >> that we don't allocate a resource even before driver gets loaded.
>> >
>> > Yuk.. The nand driver should be generic.
>> >
>> >> >> --- a/arch/arm/plat-omap/include/plat/gpmc.h
>> >> >> +++ b/arch/arm/plat-omap/include/plat/gpmc.h
>> >> >> @@ -27,6 +27,8 @@
>> >> >>
>> >> >>  #define GPMC_CONFIG          0x50
>> >> >>  #define GPMC_STATUS          0x54
>> >> >> +#define GPMC_CS0_BASE                0x60
>> >> >> +#define GPMC_CS_SIZE         0x30
>> >> >
>> >> > The GPMC_CS0_BASE and GPMC_CS_SIZE seem to be values specic to
>> >> > your board, not for the GPMC hardware.
>> >>
>> >> These are offsets and very much specific to GPMC hardware.
>> >>
>> >> GPMC_CS0_BASE: is offset from GPMC base to first cs GPMC_CONFIG1 register.
>> >> GPMC_CS_SIZE : is offset (gap) between next cs config registers, e.i.
>> >> size for cs config registers.
>> >
>> > Let's keep it local until drivers/mtd/nand/omap2.c is fixed.
>> >
>> > Care to take a look at using some generic nand driver instead
>> > if we merge this for now?
>>
>> To me it seems ok, for now, to get this merged and later 

Re: [PATCH 1/2]: OMAP: SDP: Introducing 'board-sdp-flash.c' for flash init

2009-12-14 Thread Tony Lindgren
* Vimal Singh  [091214 01:58]:
> On Tue, Dec 8, 2009 at 12:06 AM, Tony Lindgren  wrote:
> > * Vimal Singh  [091206 22:39]:
> >> On Sat, Dec 5, 2009 at 3:47 AM, Tony Lindgren  wrote:
> >> > Hi,
> >> >
> >> > * Vimal Singh  [091203 06:09]:
> >> >> From 13d52884956a26f93826c443e2b8bd78615f74d6 Mon Sep 17 00:00:00 2001
> >> >> From: Vimal Singh 
> >> >> Date: Thu, 26 Nov 2009 16:10:24 +0530
> >> >> Subject: [PATCH] OMAP: SDP: Introducing 'board-sdp-flash.c' for flash 
> >> >> init
> >> >>
> >> >> This patch adds 'board-sdp-flash.c', which could be utilized
> >> >> by boards similar to 3430SDP. (For ex: 2430sdp, 36030sdp).
> >> >>
> >> >> This file does initialization for all three flash devices present
> >> >> in SDP boards (NOR, NAND, OneNAND), by finding there 'cs' number
> >> >> dynamically using switch setting information (S8: 1-4).
> >> >> This also expects partition information from core board files (for
> >> >> ex: board-3430sdp.c). Which allows to choose different default
> >> >> partitions for different boards.
> >> >>
> >> >> A new structure is created for this purpose: 'flash_partitions'
> >> >> in 'mach/board-sdp.h'. This has two members:
> >> >> 1. struct mtd_partition *parts
> >> >> 2. int nr_parts
> >> >>
> >> >> A board file is expected to fill this structure and pass it to
> >> >> 'sdp-flsash-init'. Partition information should be passed in
> >> >> structure array of 'flash_partitions'. Partition information should
> >> >> be passed in below sequence in array:
> >> >> NOR
> >> >> OneNAND
> >> >> NAND
> >> >>
> >> >> Signed-off-by: Vimal Singh 
> >> >> ---
> >> >>  arch/arm/mach-omap2/board-sdp-flash.c        |  246 
> >> >> ++
> >> >>  arch/arm/mach-omap2/include/mach/board-sdp.h |   22 +++
> >> >>  arch/arm/plat-omap/include/plat/gpmc.h       |    2 +
> >> >>  3 files changed, 270 insertions(+), 0 deletions(-)
> >> >>  create mode 100644 arch/arm/mach-omap2/board-sdp-flash.c
> >> >>  create mode 100644 arch/arm/mach-omap2/include/mach/board-sdp.h
> >> >>
> >> >> diff --git a/arch/arm/mach-omap2/board-sdp-flash.c
> >> >> b/arch/arm/mach-omap2/board-sdp-flash.c
> >> >> new file mode 100644
> >> >> index 000..fbbcd0e
> >> >> --- /dev/null
> >> >> +++ b/arch/arm/mach-omap2/board-sdp-flash.c
> >> >
> >> > 
> >> >
> >> >> +__init board_nand_init(struct flash_partitions sdp_nand_parts, u8 cs)
> >> >> +{
> >> >> +     sdp_nand_data.cs                = cs;
> >> >> +     sdp_nand_data.parts             = sdp_nand_parts.parts;
> >> >> +     sdp_nand_data.nr_parts          = sdp_nand_parts.nr_parts;
> >> >> +
> >> >> +     sdp_nand_data.gpmc_cs_baseaddr  = (void *)(OMAP34XX_GPMC_VIRT +
> >> >> +                                                     GPMC_CS0_BASE +
> >> >> +                                                     cs * 
> >> >> GPMC_CS_SIZE);
> >> >> +     sdp_nand_data.gpmc_baseaddr      = (void *) (OMAP34XX_GPMC_VIRT);
> >> >> +
> >> >> +     gpmc_nand_init(&sdp_nand_data);
> >> >> +}
> >> >
> >> > This does not look right. You're supposed to use gpmc_cs_request()
> >> > for allocating the GPMC area based on the chip select and size.
> >>
> >> I guess you are getting confuse a bit here:
> >> gpmc_baseaddr: is the virtual address for GPMC_REVISION (which is also
> >> base address for GPMC).
> >> gpmc_cs_baseaddr : This is offset from above to 'GPMC_CONFIG(cs)' for
> >> specified cs number.
> >>
> >> These are needed by nand driver.
> >
> > Right.. Looks like drivers/mtd/nand/omap2.c needs to be fixed so we
> > can get rid of this.
> >
> > And looks like we already are doing it all over the place anyways :(
> >
> >> While 'gpmc_cs_request' gives physical address to the device resource.
> >> And this is done in 'nand/omap2.c'. This is done in driver itself so
> >> that we don't allocate a resource even before driver gets loaded.
> >
> > Yuk.. The nand driver should be generic.
> >
> >> >> --- a/arch/arm/plat-omap/include/plat/gpmc.h
> >> >> +++ b/arch/arm/plat-omap/include/plat/gpmc.h
> >> >> @@ -27,6 +27,8 @@
> >> >>
> >> >>  #define GPMC_CONFIG          0x50
> >> >>  #define GPMC_STATUS          0x54
> >> >> +#define GPMC_CS0_BASE                0x60
> >> >> +#define GPMC_CS_SIZE         0x30
> >> >
> >> > The GPMC_CS0_BASE and GPMC_CS_SIZE seem to be values specic to
> >> > your board, not for the GPMC hardware.
> >>
> >> These are offsets and very much specific to GPMC hardware.
> >>
> >> GPMC_CS0_BASE: is offset from GPMC base to first cs GPMC_CONFIG1 register.
> >> GPMC_CS_SIZE : is offset (gap) between next cs config registers, e.i.
> >> size for cs config registers.
> >
> > Let's keep it local until drivers/mtd/nand/omap2.c is fixed.
> >
> > Care to take a look at using some generic nand driver instead
> > if we merge this for now?
> 
> To me it seems ok, for now, to get this merged and later we can work
> on cleaning 'nand/omap2.c' driver.

OK, sounds good to me. Let's plan on moving to use the gpmc-nand.c as
posted on this list.

Regards,

Tony
--
To unsubscr

Re: [PATCH 1/2]: OMAP: SDP: Introducing 'board-sdp-flash.c' for flash init

2009-12-14 Thread Vimal Singh
On Tue, Dec 8, 2009 at 12:06 AM, Tony Lindgren  wrote:
> * Vimal Singh  [091206 22:39]:
>> On Sat, Dec 5, 2009 at 3:47 AM, Tony Lindgren  wrote:
>> > Hi,
>> >
>> > * Vimal Singh  [091203 06:09]:
>> >> From 13d52884956a26f93826c443e2b8bd78615f74d6 Mon Sep 17 00:00:00 2001
>> >> From: Vimal Singh 
>> >> Date: Thu, 26 Nov 2009 16:10:24 +0530
>> >> Subject: [PATCH] OMAP: SDP: Introducing 'board-sdp-flash.c' for flash init
>> >>
>> >> This patch adds 'board-sdp-flash.c', which could be utilized
>> >> by boards similar to 3430SDP. (For ex: 2430sdp, 36030sdp).
>> >>
>> >> This file does initialization for all three flash devices present
>> >> in SDP boards (NOR, NAND, OneNAND), by finding there 'cs' number
>> >> dynamically using switch setting information (S8: 1-4).
>> >> This also expects partition information from core board files (for
>> >> ex: board-3430sdp.c). Which allows to choose different default
>> >> partitions for different boards.
>> >>
>> >> A new structure is created for this purpose: 'flash_partitions'
>> >> in 'mach/board-sdp.h'. This has two members:
>> >> 1. struct mtd_partition *parts
>> >> 2. int nr_parts
>> >>
>> >> A board file is expected to fill this structure and pass it to
>> >> 'sdp-flsash-init'. Partition information should be passed in
>> >> structure array of 'flash_partitions'. Partition information should
>> >> be passed in below sequence in array:
>> >> NOR
>> >> OneNAND
>> >> NAND
>> >>
>> >> Signed-off-by: Vimal Singh 
>> >> ---
>> >>  arch/arm/mach-omap2/board-sdp-flash.c        |  246 
>> >> ++
>> >>  arch/arm/mach-omap2/include/mach/board-sdp.h |   22 +++
>> >>  arch/arm/plat-omap/include/plat/gpmc.h       |    2 +
>> >>  3 files changed, 270 insertions(+), 0 deletions(-)
>> >>  create mode 100644 arch/arm/mach-omap2/board-sdp-flash.c
>> >>  create mode 100644 arch/arm/mach-omap2/include/mach/board-sdp.h
>> >>
>> >> diff --git a/arch/arm/mach-omap2/board-sdp-flash.c
>> >> b/arch/arm/mach-omap2/board-sdp-flash.c
>> >> new file mode 100644
>> >> index 000..fbbcd0e
>> >> --- /dev/null
>> >> +++ b/arch/arm/mach-omap2/board-sdp-flash.c
>> >
>> > 
>> >
>> >> +__init board_nand_init(struct flash_partitions sdp_nand_parts, u8 cs)
>> >> +{
>> >> +     sdp_nand_data.cs                = cs;
>> >> +     sdp_nand_data.parts             = sdp_nand_parts.parts;
>> >> +     sdp_nand_data.nr_parts          = sdp_nand_parts.nr_parts;
>> >> +
>> >> +     sdp_nand_data.gpmc_cs_baseaddr  = (void *)(OMAP34XX_GPMC_VIRT +
>> >> +                                                     GPMC_CS0_BASE +
>> >> +                                                     cs * GPMC_CS_SIZE);
>> >> +     sdp_nand_data.gpmc_baseaddr      = (void *) (OMAP34XX_GPMC_VIRT);
>> >> +
>> >> +     gpmc_nand_init(&sdp_nand_data);
>> >> +}
>> >
>> > This does not look right. You're supposed to use gpmc_cs_request()
>> > for allocating the GPMC area based on the chip select and size.
>>
>> I guess you are getting confuse a bit here:
>> gpmc_baseaddr: is the virtual address for GPMC_REVISION (which is also
>> base address for GPMC).
>> gpmc_cs_baseaddr : This is offset from above to 'GPMC_CONFIG(cs)' for
>> specified cs number.
>>
>> These are needed by nand driver.
>
> Right.. Looks like drivers/mtd/nand/omap2.c needs to be fixed so we
> can get rid of this.
>
> And looks like we already are doing it all over the place anyways :(
>
>> While 'gpmc_cs_request' gives physical address to the device resource.
>> And this is done in 'nand/omap2.c'. This is done in driver itself so
>> that we don't allocate a resource even before driver gets loaded.
>
> Yuk.. The nand driver should be generic.
>
>> >> --- a/arch/arm/plat-omap/include/plat/gpmc.h
>> >> +++ b/arch/arm/plat-omap/include/plat/gpmc.h
>> >> @@ -27,6 +27,8 @@
>> >>
>> >>  #define GPMC_CONFIG          0x50
>> >>  #define GPMC_STATUS          0x54
>> >> +#define GPMC_CS0_BASE                0x60
>> >> +#define GPMC_CS_SIZE         0x30
>> >
>> > The GPMC_CS0_BASE and GPMC_CS_SIZE seem to be values specic to
>> > your board, not for the GPMC hardware.
>>
>> These are offsets and very much specific to GPMC hardware.
>>
>> GPMC_CS0_BASE: is offset from GPMC base to first cs GPMC_CONFIG1 register.
>> GPMC_CS_SIZE : is offset (gap) between next cs config registers, e.i.
>> size for cs config registers.
>
> Let's keep it local until drivers/mtd/nand/omap2.c is fixed.
>
> Care to take a look at using some generic nand driver instead
> if we merge this for now?

To me it seems ok, for now, to get this merged and later we can work
on cleaning 'nand/omap2.c' driver.

-- 
Regards,
Vimal Singh
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/2]: OMAP: SDP: Introducing 'board-sdp-flash.c' for flash init

2009-12-07 Thread Tony Lindgren
* Vimal Singh  [091206 22:39]:
> On Sat, Dec 5, 2009 at 3:47 AM, Tony Lindgren  wrote:
> > Hi,
> >
> > * Vimal Singh  [091203 06:09]:
> >> From 13d52884956a26f93826c443e2b8bd78615f74d6 Mon Sep 17 00:00:00 2001
> >> From: Vimal Singh 
> >> Date: Thu, 26 Nov 2009 16:10:24 +0530
> >> Subject: [PATCH] OMAP: SDP: Introducing 'board-sdp-flash.c' for flash init
> >>
> >> This patch adds 'board-sdp-flash.c', which could be utilized
> >> by boards similar to 3430SDP. (For ex: 2430sdp, 36030sdp).
> >>
> >> This file does initialization for all three flash devices present
> >> in SDP boards (NOR, NAND, OneNAND), by finding there 'cs' number
> >> dynamically using switch setting information (S8: 1-4).
> >> This also expects partition information from core board files (for
> >> ex: board-3430sdp.c). Which allows to choose different default
> >> partitions for different boards.
> >>
> >> A new structure is created for this purpose: 'flash_partitions'
> >> in 'mach/board-sdp.h'. This has two members:
> >> 1. struct mtd_partition *parts
> >> 2. int nr_parts
> >>
> >> A board file is expected to fill this structure and pass it to
> >> 'sdp-flsash-init'. Partition information should be passed in
> >> structure array of 'flash_partitions'. Partition information should
> >> be passed in below sequence in array:
> >> NOR
> >> OneNAND
> >> NAND
> >>
> >> Signed-off-by: Vimal Singh 
> >> ---
> >>  arch/arm/mach-omap2/board-sdp-flash.c        |  246 
> >> ++
> >>  arch/arm/mach-omap2/include/mach/board-sdp.h |   22 +++
> >>  arch/arm/plat-omap/include/plat/gpmc.h       |    2 +
> >>  3 files changed, 270 insertions(+), 0 deletions(-)
> >>  create mode 100644 arch/arm/mach-omap2/board-sdp-flash.c
> >>  create mode 100644 arch/arm/mach-omap2/include/mach/board-sdp.h
> >>
> >> diff --git a/arch/arm/mach-omap2/board-sdp-flash.c
> >> b/arch/arm/mach-omap2/board-sdp-flash.c
> >> new file mode 100644
> >> index 000..fbbcd0e
> >> --- /dev/null
> >> +++ b/arch/arm/mach-omap2/board-sdp-flash.c
> >
> > 
> >
> >> +__init board_nand_init(struct flash_partitions sdp_nand_parts, u8 cs)
> >> +{
> >> +     sdp_nand_data.cs                = cs;
> >> +     sdp_nand_data.parts             = sdp_nand_parts.parts;
> >> +     sdp_nand_data.nr_parts          = sdp_nand_parts.nr_parts;
> >> +
> >> +     sdp_nand_data.gpmc_cs_baseaddr  = (void *)(OMAP34XX_GPMC_VIRT +
> >> +                                                     GPMC_CS0_BASE +
> >> +                                                     cs * GPMC_CS_SIZE);
> >> +     sdp_nand_data.gpmc_baseaddr      = (void *) (OMAP34XX_GPMC_VIRT);
> >> +
> >> +     gpmc_nand_init(&sdp_nand_data);
> >> +}
> >
> > This does not look right. You're supposed to use gpmc_cs_request()
> > for allocating the GPMC area based on the chip select and size.
> 
> I guess you are getting confuse a bit here:
> gpmc_baseaddr: is the virtual address for GPMC_REVISION (which is also
> base address for GPMC).
> gpmc_cs_baseaddr : This is offset from above to 'GPMC_CONFIG(cs)' for
> specified cs number.
> 
> These are needed by nand driver.

Right.. Looks like drivers/mtd/nand/omap2.c needs to be fixed so we
can get rid of this.

And looks like we already are doing it all over the place anyways :(
 
> While 'gpmc_cs_request' gives physical address to the device resource.
> And this is done in 'nand/omap2.c'. This is done in driver itself so
> that we don't allocate a resource even before driver gets loaded.

Yuk.. The nand driver should be generic.

> >> --- a/arch/arm/plat-omap/include/plat/gpmc.h
> >> +++ b/arch/arm/plat-omap/include/plat/gpmc.h
> >> @@ -27,6 +27,8 @@
> >>
> >>  #define GPMC_CONFIG          0x50
> >>  #define GPMC_STATUS          0x54
> >> +#define GPMC_CS0_BASE                0x60
> >> +#define GPMC_CS_SIZE         0x30
> >
> > The GPMC_CS0_BASE and GPMC_CS_SIZE seem to be values specic to
> > your board, not for the GPMC hardware.
> 
> These are offsets and very much specific to GPMC hardware.
> 
> GPMC_CS0_BASE: is offset from GPMC base to first cs GPMC_CONFIG1 register.
> GPMC_CS_SIZE : is offset (gap) between next cs config registers, e.i.
> size for cs config registers.

Let's keep it local until drivers/mtd/nand/omap2.c is fixed.

Care to take a look at using some generic nand driver instead
if we merge this for now?

Regards,

Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/2]: OMAP: SDP: Introducing 'board-sdp-flash.c' for flash init

2009-12-06 Thread Vimal Singh
On Sat, Dec 5, 2009 at 3:47 AM, Tony Lindgren  wrote:
> Hi,
>
> * Vimal Singh  [091203 06:09]:
>> From 13d52884956a26f93826c443e2b8bd78615f74d6 Mon Sep 17 00:00:00 2001
>> From: Vimal Singh 
>> Date: Thu, 26 Nov 2009 16:10:24 +0530
>> Subject: [PATCH] OMAP: SDP: Introducing 'board-sdp-flash.c' for flash init
>>
>> This patch adds 'board-sdp-flash.c', which could be utilized
>> by boards similar to 3430SDP. (For ex: 2430sdp, 36030sdp).
>>
>> This file does initialization for all three flash devices present
>> in SDP boards (NOR, NAND, OneNAND), by finding there 'cs' number
>> dynamically using switch setting information (S8: 1-4).
>> This also expects partition information from core board files (for
>> ex: board-3430sdp.c). Which allows to choose different default
>> partitions for different boards.
>>
>> A new structure is created for this purpose: 'flash_partitions'
>> in 'mach/board-sdp.h'. This has two members:
>> 1. struct mtd_partition *parts
>> 2. int nr_parts
>>
>> A board file is expected to fill this structure and pass it to
>> 'sdp-flsash-init'. Partition information should be passed in
>> structure array of 'flash_partitions'. Partition information should
>> be passed in below sequence in array:
>> NOR
>> OneNAND
>> NAND
>>
>> Signed-off-by: Vimal Singh 
>> ---
>>  arch/arm/mach-omap2/board-sdp-flash.c        |  246 
>> ++
>>  arch/arm/mach-omap2/include/mach/board-sdp.h |   22 +++
>>  arch/arm/plat-omap/include/plat/gpmc.h       |    2 +
>>  3 files changed, 270 insertions(+), 0 deletions(-)
>>  create mode 100644 arch/arm/mach-omap2/board-sdp-flash.c
>>  create mode 100644 arch/arm/mach-omap2/include/mach/board-sdp.h
>>
>> diff --git a/arch/arm/mach-omap2/board-sdp-flash.c
>> b/arch/arm/mach-omap2/board-sdp-flash.c
>> new file mode 100644
>> index 000..fbbcd0e
>> --- /dev/null
>> +++ b/arch/arm/mach-omap2/board-sdp-flash.c
>
> 
>
>> +__init board_nand_init(struct flash_partitions sdp_nand_parts, u8 cs)
>> +{
>> +     sdp_nand_data.cs                = cs;
>> +     sdp_nand_data.parts             = sdp_nand_parts.parts;
>> +     sdp_nand_data.nr_parts          = sdp_nand_parts.nr_parts;
>> +
>> +     sdp_nand_data.gpmc_cs_baseaddr  = (void *)(OMAP34XX_GPMC_VIRT +
>> +                                                     GPMC_CS0_BASE +
>> +                                                     cs * GPMC_CS_SIZE);
>> +     sdp_nand_data.gpmc_baseaddr      = (void *) (OMAP34XX_GPMC_VIRT);
>> +
>> +     gpmc_nand_init(&sdp_nand_data);
>> +}
>
> This does not look right. You're supposed to use gpmc_cs_request()
> for allocating the GPMC area based on the chip select and size.

I guess you are getting confuse a bit here:
gpmc_baseaddr: is the virtual address for GPMC_REVISION (which is also
base address for GPMC).
gpmc_cs_baseaddr : This is offset from above to 'GPMC_CONFIG(cs)' for
specified cs number.

These are needed by nand driver.

While 'gpmc_cs_request' gives physical address to the device resource.
And this is done in 'nand/omap2.c'. This is done in driver itself so
that we don't allocate a resource even before driver gets loaded.


>
>> --- a/arch/arm/plat-omap/include/plat/gpmc.h
>> +++ b/arch/arm/plat-omap/include/plat/gpmc.h
>> @@ -27,6 +27,8 @@
>>
>>  #define GPMC_CONFIG          0x50
>>  #define GPMC_STATUS          0x54
>> +#define GPMC_CS0_BASE                0x60
>> +#define GPMC_CS_SIZE         0x30
>
> The GPMC_CS0_BASE and GPMC_CS_SIZE seem to be values specic to
> your board, not for the GPMC hardware.

These are offsets and very much specific to GPMC hardware.

GPMC_CS0_BASE: is offset from GPMC base to first cs GPMC_CONFIG1 register.
GPMC_CS_SIZE : is offset (gap) between next cs config registers, e.i.
size for cs config registers.

-- 
Regards,
Vimal Singh
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/2]: OMAP: SDP: Introducing 'board-sdp-flash.c' for flash init

2009-12-04 Thread Tony Lindgren
Hi,

* Vimal Singh  [091203 06:09]:
> From 13d52884956a26f93826c443e2b8bd78615f74d6 Mon Sep 17 00:00:00 2001
> From: Vimal Singh 
> Date: Thu, 26 Nov 2009 16:10:24 +0530
> Subject: [PATCH] OMAP: SDP: Introducing 'board-sdp-flash.c' for flash init
> 
> This patch adds 'board-sdp-flash.c', which could be utilized
> by boards similar to 3430SDP. (For ex: 2430sdp, 36030sdp).
> 
> This file does initialization for all three flash devices present
> in SDP boards (NOR, NAND, OneNAND), by finding there 'cs' number
> dynamically using switch setting information (S8: 1-4).
> This also expects partition information from core board files (for
> ex: board-3430sdp.c). Which allows to choose different default
> partitions for different boards.
> 
> A new structure is created for this purpose: 'flash_partitions'
> in 'mach/board-sdp.h'. This has two members:
> 1. struct mtd_partition *parts
> 2. int nr_parts
> 
> A board file is expected to fill this structure and pass it to
> 'sdp-flsash-init'. Partition information should be passed in
> structure array of 'flash_partitions'. Partition information should
> be passed in below sequence in array:
> NOR
> OneNAND
> NAND
> 
> Signed-off-by: Vimal Singh 
> ---
>  arch/arm/mach-omap2/board-sdp-flash.c|  246 
> ++
>  arch/arm/mach-omap2/include/mach/board-sdp.h |   22 +++
>  arch/arm/plat-omap/include/plat/gpmc.h   |2 +
>  3 files changed, 270 insertions(+), 0 deletions(-)
>  create mode 100644 arch/arm/mach-omap2/board-sdp-flash.c
>  create mode 100644 arch/arm/mach-omap2/include/mach/board-sdp.h
> 
> diff --git a/arch/arm/mach-omap2/board-sdp-flash.c
> b/arch/arm/mach-omap2/board-sdp-flash.c
> new file mode 100644
> index 000..fbbcd0e
> --- /dev/null
> +++ b/arch/arm/mach-omap2/board-sdp-flash.c



> +__init board_nand_init(struct flash_partitions sdp_nand_parts, u8 cs)
> +{
> + sdp_nand_data.cs= cs;
> + sdp_nand_data.parts = sdp_nand_parts.parts;
> + sdp_nand_data.nr_parts  = sdp_nand_parts.nr_parts;
> +
> + sdp_nand_data.gpmc_cs_baseaddr  = (void *)(OMAP34XX_GPMC_VIRT +
> + GPMC_CS0_BASE +
> + cs * GPMC_CS_SIZE);
> + sdp_nand_data.gpmc_baseaddr  = (void *) (OMAP34XX_GPMC_VIRT);
> +
> + gpmc_nand_init(&sdp_nand_data);
> +}

This does not look right. You're supposed to use gpmc_cs_request()
for allocating the GPMC area based on the chip select and size.

> --- a/arch/arm/plat-omap/include/plat/gpmc.h
> +++ b/arch/arm/plat-omap/include/plat/gpmc.h
> @@ -27,6 +27,8 @@
> 
>  #define GPMC_CONFIG  0x50
>  #define GPMC_STATUS  0x54
> +#define GPMC_CS0_BASE0x60
> +#define GPMC_CS_SIZE 0x30

The GPMC_CS0_BASE and GPMC_CS_SIZE seem to be values specic to
your board, not for the GPMC hardware.

Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 1/2]: OMAP: SDP: Introducing 'board-sdp-flash.c' for flash init

2009-12-03 Thread Vimal Singh
>From 13d52884956a26f93826c443e2b8bd78615f74d6 Mon Sep 17 00:00:00 2001
From: Vimal Singh 
Date: Thu, 26 Nov 2009 16:10:24 +0530
Subject: [PATCH] OMAP: SDP: Introducing 'board-sdp-flash.c' for flash init

This patch adds 'board-sdp-flash.c', which could be utilized
by boards similar to 3430SDP. (For ex: 2430sdp, 36030sdp).

This file does initialization for all three flash devices present
in SDP boards (NOR, NAND, OneNAND), by finding there 'cs' number
dynamically using switch setting information (S8: 1-4).
This also expects partition information from core board files (for
ex: board-3430sdp.c). Which allows to choose different default
partitions for different boards.

A new structure is created for this purpose: 'flash_partitions'
in 'mach/board-sdp.h'. This has two members:
1. struct mtd_partition *parts
2. int nr_parts

A board file is expected to fill this structure and pass it to
'sdp-flsash-init'. Partition information should be passed in
structure array of 'flash_partitions'. Partition information should
be passed in below sequence in array:
NOR
OneNAND
NAND

Signed-off-by: Vimal Singh 
---
 arch/arm/mach-omap2/board-sdp-flash.c|  246 ++
 arch/arm/mach-omap2/include/mach/board-sdp.h |   22 +++
 arch/arm/plat-omap/include/plat/gpmc.h   |2 +
 3 files changed, 270 insertions(+), 0 deletions(-)
 create mode 100644 arch/arm/mach-omap2/board-sdp-flash.c
 create mode 100644 arch/arm/mach-omap2/include/mach/board-sdp.h

diff --git a/arch/arm/mach-omap2/board-sdp-flash.c
b/arch/arm/mach-omap2/board-sdp-flash.c
new file mode 100644
index 000..fbbcd0e
--- /dev/null
+++ b/arch/arm/mach-omap2/board-sdp-flash.c
@@ -0,0 +1,246 @@
+/*
+ * board-sdp-flash.c
+ * Modified from mach-omap2/board-3430sdp-flash.c
+ *
+ * Copyright (C) 2009 Nokia Corporation
+ * Copyright (C) 2009 Texas Instruments
+ *
+ * Vimal Singh 
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include 
+#include 
+#include 
+
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#define REG_FPGA_REV   0x10
+#define REG_FPGA_DIP_SWITCH_INPUT2 0x60
+#define MAX_SUPPORTED_GPMC_CONFIG  3
+
+#define DEBUG_BASE 0x0800 /* debug board */
+
+#define PDC_NOR1
+#define PDC_NAND   2
+#define PDC_ONENAND3
+#define DBG_MPDB   4
+
+/* various memory sizes */
+#define FLASH_SIZE_SDPV1   SZ_64M  /* NOR flash (64 Meg aligned) */
+#define FLASH_SIZE_SDPV2   SZ_128M /* NOR flash (256 Meg aligned) */
+
+/*
+ * SDP3430 V2 Board CS organization
+ * Different from SDP3430 V1. Now 4 switches used to specify CS
+ *
+ * See also the Switch S8 settings in the comments.
+ *
+ * REVISIT: Add support for 2430 SDP
+ */
+static const unsigned char chip_sel_sdp[][GPMC_CS_NUM] = {
+   {PDC_NOR, PDC_NAND, PDC_ONENAND, DBG_MPDB, 0, 0, 0, 0}, /* S8: */
+   {PDC_ONENAND, PDC_NAND, PDC_NOR, DBG_MPDB, 0, 0, 0, 0}, /* S8:1110 */
+   {PDC_NAND, PDC_ONENAND, PDC_NOR, DBG_MPDB, 0, 0, 0, 0}, /* S8:1101 */
+};
+
+static struct flash_platform_data sdp_nor_data = {
+   .map_name   = "cfi_probe",
+   .width  = 2,
+};
+
+static struct resource sdp_nor_resource = {
+   .flags  = IORESOURCE_MEM,
+};
+
+static struct platform_device sdp_nor_device = {
+   .name   = "omapflash",
+   .id = 0,
+   .dev= {
+   .platform_data = &sdp_nor_data,
+   },
+   .num_resources  = 1,
+   .resource   = &sdp_nor_resource,
+};
+
+static void
+__init board_nor_init(struct flash_partitions sdp_nor_parts, u8 cs)
+{
+   int err;
+
+   sdp_nor_data.parts  = sdp_nor_parts.parts;
+   sdp_nor_data.nr_parts   = sdp_nor_parts.nr_parts;
+
+   /* Configure start address and size of NOR device */
+   if (omap_rev() >= OMAP3430_REV_ES1_0) {
+   err = gpmc_cs_request(cs, FLASH_SIZE_SDPV2 - 1,
+   (unsigned long *)&sdp_nor_resource.start);
+   sdp_nor_resource.end = sdp_nor_resource.start
+   + FLASH_SIZE_SDPV2 - 1;
+   } else {
+   err = gpmc_cs_request(cs, FLASH_SIZE_SDPV1 - 1,
+   (unsigned long *)&sdp_nor_resource.start);
+   sdp_nor_resource.end = sdp_nor_resource.start
+   + FLASH_SIZE_SDPV1 - 1;
+   }
+   if (err < 0) {
+   printk(KERN_ERR "NOR: Can't request GPMC CS\n");
+   return;
+   }
+   if (platform_device_register(&sdp_nor_device) < 0)
+   printk(KERN_ERR "Unable to register NOR device\n");
+}
+
+#if defined(CONFIG_MTD_ONENAND_OMAP2) || \
+   defined(CONFIG_MTD_ONENAND_OMAP2_MODULE)
+static struct omap_onenand_platform_data board_onenand_data = {
+   .dma_c