Fwd: Re: [PATCH 5/9] magician: enable flash VPP GPIO and build in MTD, physmap-flash and JFFS2
Russell King - ARM Linux
linux at arm.linux.org.uk
Sat Apr 19 11:56:58 EDT 2008
It would be nice if someone in MTD land could take a look at this. It's
been hanging for about a month wanting an answer to the question. Thanks.
----- Forwarded message from Philipp Zabel <philipp.zabel at gmail.com> -----
Subject: Re: [PATCH 5/9] magician: enable flash VPP GPIO and build in MTD,
physmap-flash and JFFS2
From: Philipp Zabel <philipp.zabel at gmail.com>
To: Russell King - ARM Linux <linux at arm.linux.org.uk>
Cc: linux-arm-kernel <linux-arm-kernel at lists.arm.linux.org.uk>
Date: Tue, 08 Apr 2008 20:52:53 +0200
Am Freitag, den 21.03.2008, 12:07 +0000 schrieb Russell King - ARM
Linux:
> On Fri, Mar 21, 2008 at 12:48:42PM +0100, pHilipp Zabel wrote:
> > On Thu, Mar 20, 2008 at 10:01 PM, Russell King - ARM Linux
> > <linux at arm.linux.org.uk> wrote:
> > > On Mon, Mar 17, 2008 at 09:17:51PM +0100, Philipp Zabel wrote:
> > > > This enables rootfs on StrataFlash if the bootloader supplies the
> > > > partition list.
> > >
> > > > diff --git a/arch/arm/mach-pxa/magician.c b/arch/arm/mach-pxa/magician.c
> > > > index 3a3252e..531be3d 100644
> > > > --- a/arch/arm/mach-pxa/magician.c
> > > > +++ b/arch/arm/mach-pxa/magician.c
> > > > @@ -223,6 +223,15 @@ static struct pxaohci_platform_data magician_ohci_info = {
> > > > * StrataFlash
> > > > */
> > > >
> > > > +static void magician_set_vpp(struct map_info *map, int vpp)
> > > > +{
> > > > + static int old_vpp;
> > > > + if (vpp == old_vpp)
> > > > + return;
> > > > + gpio_set_value(EGPIO_MAGICIAN_FLASH_VPP, vpp);
> > > > + old_vpp = vpp;
> > > > +}
> > > > +
> > >
> > > Have you checked that this can't race with itself?
> >
> > No, I have just seen that set_vpp is called very often in quick
> > succession with the same vpp value and wanted to avoid overhead,
> > assuming that the mtd subsystem cares about locking.
> > I have just seen that omap-nor does something similar but with a
> > counter. Maybe this would be better?
>
> No idea. These are questions that only the MTD folk can answer.
I got no answer yet, probably because I'm not subscribed my mail got lost in moderation.
For now is it ok if I just drop that 'optimization'?
regards
Philipp
diff --git a/arch/arm/configs/magician_defconfig b/arch/arm/configs/magician_defconfig
index 76960c7..b9b234b 100644
--- a/arch/arm/configs/magician_defconfig
+++ b/arch/arm/configs/magician_defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.24-rc3
-# Tue Nov 20 12:05:40 2007
+# Linux kernel version: 2.6.24-rc6
+# Sat Dec 22 10:38:43 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -461,7 +461,6 @@ CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_CHAR=m
CONFIG_MTD_BLKDEVS=m
CONFIG_MTD_BLOCK=m
-# CONFIG_MTD_BLOCK_RO is not set
# CONFIG_FTL is not set
# CONFIG_NFTL is not set
# CONFIG_INFTL is not set
@@ -472,9 +471,8 @@ CONFIG_MTD_BLOCK=m
#
# RAM/ROM/Flash chip drivers
#
-CONFIG_MTD_CFI=m
+CONFIG_MTD_CFI=y
# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_GEN_PROBE=m
# CONFIG_MTD_CFI_ADV_OPTIONS is not set
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
@@ -486,10 +484,9 @@ CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
-CONFIG_MTD_CFI_INTELEXT=m
+CONFIG_MTD_CFI_INTELEXT=y
# CONFIG_MTD_CFI_AMDSTD is not set
# CONFIG_MTD_CFI_STAA is not set
-CONFIG_MTD_CFI_UTIL=m
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set
@@ -499,10 +496,10 @@ CONFIG_MTD_CFI_UTIL=m
# Mapping drivers for chip access
#
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_PHYSMAP=m
-CONFIG_MTD_PHYSMAP_START=0x8000000
-CONFIG_MTD_PHYSMAP_LEN=0x0
-CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x00000000
+CONFIG_MTD_PHYSMAP_LEN=0x04000000
+CONFIG_MTD_PHYSMAP_BANKWIDTH=4
# CONFIG_MTD_PXA2XX is not set
# CONFIG_MTD_ARM_INTEGRATOR is not set
# CONFIG_MTD_SHARP_SL is not set
@@ -951,7 +948,7 @@ CONFIG_TMPFS=y
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
-CONFIG_JFFS2_FS=m
+CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
@@ -1142,10 +1139,10 @@ CONFIG_CRC_CCITT=y
CONFIG_CRC32=y
# CONFIG_CRC7 is not set
# CONFIG_LIBCRC32C is not set
-CONFIG_ZLIB_INFLATE=m
-CONFIG_ZLIB_DEFLATE=m
-CONFIG_LZO_COMPRESS=m
-CONFIG_LZO_DECOMPRESS=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
diff --git a/arch/arm/mach-pxa/magician.c b/arch/arm/mach-pxa/magician.c
index dadd1a1..10376a1 100644
--- a/arch/arm/mach-pxa/magician.c
+++ b/arch/arm/mach-pxa/magician.c
@@ -223,6 +223,11 @@ static struct pxaohci_platform_data magician_ohci_info = {
* StrataFlash
*/
+static void magician_set_vpp(struct map_info *map, int vpp)
+{
+ gpio_set_value(EGPIO_MAGICIAN_FLASH_VPP, vpp);
+}
+
#define PXA_CS_SIZE 0x04000000
static struct resource strataflash_resource = {
@@ -233,6 +238,7 @@ static struct resource strataflash_resource = {
static struct physmap_flash_data strataflash_data = {
.width = 4,
+ .set_vpp = magician_set_vpp,
};
static struct platform_device strataflash = {
--
1.5.4.5
----- End forwarded message -----
More information about the linux-mtd
mailing list