* Support for S29JL064 in MPC8272ADS? @ 2009-10-09 14:14 Roberto Guerra 2009-10-09 17:04 ` Scott Wood 0 siblings, 1 reply; 9+ messages in thread From: Roberto Guerra @ 2009-10-09 14:14 UTC (permalink / raw) To: linuxppc-dev Hello, My uboot can read my flash chip, finding the uImage and the initramfs, and booting the kernel fine. However, I'd like the Linux kernel to read my flash chip so that it can update files in it. My flash chip is the Spansion S29JL064H (AMD), 16 bit wide, 64 Mbit. The chip is mapped from FF800000 to FFFFFFFF. The rootfs.jffs2 was written on 0XFF990000 and is 0x390000 long. I know that the JFFS is written correctly, because it is detected by uboot: => fsinfo ### filesystem type is JFFS2 Scanning JFFS2 FS: ....... done. Compression: NONE frag count: 523 compressed sum: 138074 uncompressed sum: 138074 Compression: ZERO frag count: 0 compressed sum: 0 uncompressed sum: 0 Compression: RTIME frag count: 1 compressed sum: 48 uncompressed sum: 52 Compression: RUBINMIPS frag count: 0 compressed sum: 0 uncompressed sum: 0 Compression: COPY frag count: 0 compressed sum: 0 uncompressed sum: 0 Compression: DYNRUBIN frag count: 0 compressed sum: 0 uncompressed sum: 0 Compression: ZLIB frag count: 2031 compressed sum: 3370991 uncompressed sum: 7598685 => flinfo Bank # 1: CFI conformant FLASH (16 x 16) Size: 8 MB in 142 Sectors AMD Standard command set, Manufacturer ID: 0x01, Device ID: 0x7E0201 Erase timeout: 8192 ms, write timeout: 1 ms Sector Start Addresses: FF800000 FF802000 FF804000 FF806000 FF808000 FF80A000 FF80C000 FF80E000 FF810000 FF820000 FF830000 FF840000 FF850000 FF860000 FF870000 FF880000 FF890000 FF8A0000 FF8B0000 FF8C0000 FF8D0000 FF8E0000 FF8F0000 FF900000 FF910000 FF920000 FF930000 FF940000 FF950000 FF960000 FF970000 FF980000 FF990000 FF9A0000 FF9B0000 FF9C0000 FF9D0000 FF9E0000 FF9F0000 FFA00000 FFA10000 FFA20000 FFA30000 FFA40000 FFA50000 FFA60000 FFA70000 FFA80000 FFA90000 FFAA0000 FFAB0000 FFAC0000 FFAD0000 FFAE0000 FFAF0000 FFB00000 FFB10000 FFB20000 FFB30000 FFB40000 FFB50000 FFB60000 FFB70000 FFB80000 FFB90000 FFBA0000 FFBB0000 FFBC0000 FFBD0000 FFBE0000 FFBF0000 FFC00000 FFC10000 FFC20000 FFC30000 FFC40000 FFC50000 FFC60000 FFC70000 FFC80000 FFC90000 FFCA0000 FFCB0000 FFCC0000 FFCD0000 FFCE0000 FFCF0000 FFD00000 FFD10000 FFD20000 FFD30000 FFD40000 FFD50000 FFD60000 FFD70000 FFD80000 FFD90000 FFDA0000 FFDB0000 FFDC0000 FFDD0000 FFDE0000 FFDF0000 FFE00000 FFE10000 FFE20000 FFE30000 FFE40000 FFE50000 FFE60000 FFE70000 FFE80000 FFE90000 FFEA0000 FFEB0000 FFEC0000 FFED0000 FFEE0000 FFEF0000 FFF00000 RO FFF10000 RO FFF20000 RO FFF30000 RO FFF40000 RO FFF50000 RO FFF60000 RO FFF70000 RO FFF80000 FFF90000 FFFA0000 FFFB0000 FFFC0000 FFFD0000 FFFE0000 FFFF0000 FFFF2000 FFFF4000 FFFF6000 FFFF8000 FFFFA000 FFFFC000 FFFFE000 My bootargs are: bootargs=console=ttyCPM0,115200 root=/dev/mtdblock1 rw mtdparts=phys:1600K(ROM)ro,6M(root),512K(U-Boot)ro,512K(unused) However, the kernel does not detect any flash chip (nor there's any indication that a CFI probe is being performed). My flash kconfig section: # # RAM/ROM/Flash chip drivers # CONFIG_MTD_CFI=y # CONFIG_MTD_JEDECPROBE is not set CONFIG_MTD_GEN_PROBE=y CONFIG_MTD_CFI_ADV_OPTIONS=y # CONFIG_MTD_CFI_NOSWAP is not set # CONFIG_MTD_CFI_BE_BYTE_SWAP is not set CONFIG_MTD_CFI_LE_BYTE_SWAP=y # CONFIG_MTD_CFI_GEOMETRY is not set CONFIG_MTD_MAP_BANK_WIDTH_1=y CONFIG_MTD_MAP_BANK_WIDTH_2=y CONFIG_MTD_MAP_BANK_WIDTH_4=y # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set 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_OTP is not set # CONFIG_MTD_CFI_INTELEXT is not set CONFIG_MTD_CFI_AMDSTD=y # CONFIG_MTD_CFI_STAA is not set CONFIG_MTD_CFI_UTIL=y # CONFIG_MTD_RAM is not set # CONFIG_MTD_ROM is not set # CONFIG_MTD_ABSENT is not set # # Mapping drivers for chip access # # CONFIG_MTD_COMPLEX_MAPPINGS is not set # CONFIG_MTD_PHYSMAP is not set # CONFIG_MTD_PHYSMAP_OF is not set # CONFIG_MTD_INTEL_VR_NOR is not set # CONFIG_MTD_PLATRAM is not set # # Self-contained MTD device drivers # # CONFIG_MTD_PMC551 is not set # CONFIG_MTD_SLRAM is not set # CONFIG_MTD_PHRAM is not set # CONFIG_MTD_MTDRAM is not set # CONFIG_MTD_BLOCK2MTD is not set Roberto Guerra ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Support for S29JL064 in MPC8272ADS? 2009-10-09 14:14 Support for S29JL064 in MPC8272ADS? Roberto Guerra @ 2009-10-09 17:04 ` Scott Wood 2009-10-09 17:59 ` Roberto Guerra 0 siblings, 1 reply; 9+ messages in thread From: Scott Wood @ 2009-10-09 17:04 UTC (permalink / raw) To: Roberto Guerra; +Cc: linuxppc-dev On Fri, Oct 09, 2009 at 10:14:56AM -0400, Roberto Guerra wrote: > Hello, > My uboot can read my flash chip, finding the uImage and the initramfs, > and booting the kernel fine. However, I'd like the Linux kernel to > read my flash chip so that it can update files in it. Have you described your flash chip in the device tree? > However, the kernel does not detect any flash chip (nor there's any > indication that a CFI probe is being performed). The stock device tree for mpc8272ads only specifies it as a JEDEC flash, not CFI. -Scott ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Support for S29JL064 in MPC8272ADS? 2009-10-09 17:04 ` Scott Wood @ 2009-10-09 17:59 ` Roberto Guerra 2009-10-09 18:16 ` Scott Wood 0 siblings, 1 reply; 9+ messages in thread From: Roberto Guerra @ 2009-10-09 17:59 UTC (permalink / raw) To: linuxppc-dev No. I did not. My FDT was simplified from the stock MPC8272ADS: => fdt list / { model = "pq2fads"; compatible = "fsl,pq2fads"; #address-cells = <0x00000001>; #size-cells = <0x00000001>; cpus { }; memory { }; soc@f0000000 { }; chosen { }; }; I am searching how I could add the mtd branch between the "soc" and the "chosen". On Fri, Oct 9, 2009 at 1:04 PM, Scott Wood <scottwood@freescale.com> wrote: > On Fri, Oct 09, 2009 at 10:14:56AM -0400, Roberto Guerra wrote: >> Hello, >> My uboot can read my flash chip, finding the uImage and the initramfs, >> and booting the kernel fine. However, I'd like the Linux kernel to >> read my flash chip so that it can update files in it. > > Have you described your flash chip in the device tree? > >> However, the kernel does not detect any flash chip (nor there's any >> indication that a CFI probe is being performed). > > The stock device tree for mpc8272ads only specifies it as a JEDEC > flash, not CFI. > > -Scott > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Support for S29JL064 in MPC8272ADS? 2009-10-09 17:59 ` Roberto Guerra @ 2009-10-09 18:16 ` Scott Wood 2009-10-14 21:34 ` Roberto Guerra 0 siblings, 1 reply; 9+ messages in thread From: Scott Wood @ 2009-10-09 18:16 UTC (permalink / raw) To: Roberto Guerra; +Cc: linuxppc-dev On Fri, Oct 09, 2009 at 01:59:58PM -0400, Roberto Guerra wrote: > No. I did not. My FDT was simplified from the stock MPC8272ADS: > => fdt list > / { > model = "pq2fads"; > compatible = "fsl,pq2fads"; > #address-cells = <0x00000001>; > #size-cells = <0x00000001>; > cpus { > }; > memory { > }; > soc@f0000000 { > }; > chosen { > }; > }; You need more than that. What happened to all the content of those nodes? > I am searching how I could add the mtd branch between the "soc" and > the "chosen". Look at the localbus node on the mpc8272ads dts. Look at (and use) a recent upstream kernel, if you're not already. -Scott ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Support for S29JL064 in MPC8272ADS? 2009-10-09 18:16 ` Scott Wood @ 2009-10-14 21:34 ` Roberto Guerra 2009-10-14 21:40 ` Scott Wood 0 siblings, 1 reply; 9+ messages in thread From: Roberto Guerra @ 2009-10-14 21:34 UTC (permalink / raw) To: linuxppc-dev, Scott Wood On Fri, Oct 9, 2009 at 2:16 PM, Scott Wood <scottwood@freescale.com> wrote: > On Fri, Oct 09, 2009 at 01:59:58PM -0400, Roberto Guerra wrote: >> No. I did not. My FDT was simplified from the stock MPC8272ADS: >> =3D> fdt list >> / { >> =A0 =A0 =A0 =A0 model =3D "pq2fads"; >> =A0 =A0 =A0 =A0 compatible =3D "fsl,pq2fads"; >> =A0 =A0 =A0 =A0 #address-cells =3D <0x00000001>; >> =A0 =A0 =A0 =A0 #size-cells =3D <0x00000001>; >> =A0 =A0 =A0 =A0 cpus { >> =A0 =A0 =A0 =A0 }; >> =A0 =A0 =A0 =A0 memory { >> =A0 =A0 =A0 =A0 }; >> =A0 =A0 =A0 =A0 soc@f0000000 { >> =A0 =A0 =A0 =A0 }; >> =A0 =A0 =A0 =A0 chosen { >> =A0 =A0 =A0 =A0 }; >> }; > > You need more than that. =A0What happened to all the content of those nod= es? > >> I am searching how I could add the mtd branch between the "soc" and >> the "chosen". > > Look at the localbus node on the mpc8272ads dts. > > Look at (and use) a recent upstream kernel, if you're not already. > > -Scott > I've been learning how to modify the dts from http://www.mjmwired.net/kernel/Documentation/powerpc/dts-bindings/mtd-physm= ap.txt#49 The original mpc8272ads.dts represents four 8-bit JEDEC Sharp flash chips in 1 SIMM module: [snip] localbus@f0010100 { compatible =3D "fsl,mpc8280-localbus", "fsl,pq2-localbus"; #address-cells =3D <2>; #size-cells =3D <1>; reg =3D <f0010100 60>; ranges =3D <0 0 fe000000 00800000 1 0 f4500000 00008000 8 0 f8200000 00008000>; flash@0,0 { compatible =3D "jedec-flash"; reg =3D <0 0 800000>; bank-width =3D <4>; device-width =3D <1>; }; [snip] My board (based on the PQ2FADS, using the MPC8272ADS BSP) uses one 16-bit Spansion (AMD) CFI chip at addresses FF800000 through FFFFFFFF. It probably needs to be represented this way (I've only made changes to the "flash" section. [snip] flash@0,0 { compatible =3D "amd, s29jl064h", "cfi-flash"; reg =3D <0 0 800000>; bank-width =3D <2>; device-width =3D <2>; }; [snip] However, I don't know what would be the correct addresses to type after "localbus", "flash" and "reg". Is this enough information to define my dts? Thanks, Roberto ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Support for S29JL064 in MPC8272ADS? 2009-10-14 21:34 ` Roberto Guerra @ 2009-10-14 21:40 ` Scott Wood 2009-10-16 15:37 ` Roberto Guerra 0 siblings, 1 reply; 9+ messages in thread From: Scott Wood @ 2009-10-14 21:40 UTC (permalink / raw) To: Roberto Guerra; +Cc: linuxppc-dev Roberto Guerra wrote: > I've been learning how to modify the dts from > http://www.mjmwired.net/kernel/Documentation/powerpc/dts-bindings/mtd-physmap.txt#49 > The original mpc8272ads.dts represents four 8-bit JEDEC Sharp flash > chips in 1 SIMM module: > [snip] localbus@f0010100 { > compatible = "fsl,mpc8280-localbus", > "fsl,pq2-localbus"; > #address-cells = <2>; > #size-cells = <1>; > reg = <f0010100 60>; > > ranges = <0 0 fe000000 00800000 > 1 0 f4500000 00008000 > 8 0 f8200000 00008000>; > > flash@0,0 { > compatible = "jedec-flash"; > reg = <0 0 800000>; > bank-width = <4>; > device-width = <1>; > }; > [snip] > My board (based on the PQ2FADS, using the MPC8272ADS BSP) Don't base anything on the BSPs, unless there's something in them that you really need that isn't upstream. There is pq2fads support in current upstream kernels. > uses one > 16-bit Spansion (AMD) CFI chip at addresses FF800000 through FFFFFFFF. > It probably needs to be represented this way (I've only made changes > to the "flash" section. > [snip] > flash@0,0 { > compatible = "amd, s29jl064h", "cfi-flash"; > reg = <0 0 800000>; > bank-width = <2>; > device-width = <2>; > }; > [snip] > However, I don't know what would be the correct addresses to type > after "localbus", "flash" and "reg". Is this enough information to > define my dts? The flash node looks good, other than that there shouldn't be a space after "amd,". In the localbus node, change fe000000 to ff800000. Remove or change the other ranges entries if they don't describe your board's chipselects. If your IMMR is somewhere other than 0xf0000000, update the f0010100 to match. -Scott ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Support for S29JL064 in MPC8272ADS? 2009-10-14 21:40 ` Scott Wood @ 2009-10-16 15:37 ` Roberto Guerra 2009-10-16 15:55 ` Roberto Guerra 2009-10-16 16:18 ` Scott Wood 0 siblings, 2 replies; 9+ messages in thread From: Roberto Guerra @ 2009-10-16 15:37 UTC (permalink / raw) To: Scott Wood, linuxppc-dev In the last few days, I made this progress (<snip> indicates where I cropped the file to the relevant sections): $ cat myboard.dts <snip> localbus@f0010100 { compatible =3D "fsl,mpc8280-localbus", "fsl,pq2-localbus"; #address-cells =3D <2>; #size-cells =3D <1>; reg =3D <f0010100 60>; ranges =3D <0 0 ffe00000 00800000>; flash@0,0 { compatible =3D "cfi-flash"; reg =3D <0 0 800000>; bank-width =3D <2>; device-width =3D <2>; }; }; <snip> $ cat linux/.config <snip> # # Generic Driver Options # CONFIG_MTD=3Dy CONFIG_MTD_DEBUG=3Dy CONFIG_MTD_DEBUG_VERBOSE=3D3 # CONFIG_MTD_CONCAT is not set CONFIG_MTD_PARTITIONS=3Dy # CONFIG_MTD_REDBOOT_PARTS is not set CONFIG_MTD_CMDLINE_PARTS=3Dy # CONFIG_MTD_OF_PARTS is not set # # User Modules And Translation Layers # # CONFIG_MTD_CHAR is not set # CONFIG_MTD_BLKDEVS is not set # CONFIG_MTD_BLOCK is not set # CONFIG_MTD_BLOCK_RO is not set # CONFIG_FTL is not set # CONFIG_NFTL is not set # CONFIG_INFTL is not set # CONFIG_RFD_FTL is not set # CONFIG_SSFDC is not set # CONFIG_MTD_OOPS is not set # # RAM/ROM/Flash chip drivers # CONFIG_MTD_CFI=3Dy # CONFIG_MTD_JEDECPROBE is not set CONFIG_MTD_GEN_PROBE=3Dy CONFIG_MTD_CFI_ADV_OPTIONS=3Dy # CONFIG_MTD_CFI_NOSWAP is not set # CONFIG_MTD_CFI_BE_BYTE_SWAP is not set CONFIG_MTD_CFI_LE_BYTE_SWAP=3Dy CONFIG_MTD_CFI_GEOMETRY=3Dy # CONFIG_MTD_MAP_BANK_WIDTH_1 is not set CONFIG_MTD_MAP_BANK_WIDTH_2=3Dy # CONFIG_MTD_MAP_BANK_WIDTH_4 is not set # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set CONFIG_MTD_CFI_I1=3Dy # CONFIG_MTD_CFI_I2 is not set # CONFIG_MTD_CFI_I4 is not set # CONFIG_MTD_CFI_I8 is not set # CONFIG_MTD_OTP is not set # CONFIG_MTD_CFI_INTELEXT is not set CONFIG_MTD_CFI_AMDSTD=3Dy # CONFIG_MTD_CFI_STAA is not set CONFIG_MTD_CFI_UTIL=3Dy # CONFIG_MTD_RAM is not set # CONFIG_MTD_ROM is not set # CONFIG_MTD_ABSENT is not set # # Mapping drivers for chip access # # CONFIG_MTD_COMPLEX_MAPPINGS is not set CONFIG_MTD_PHYSMAP=3Dy CONFIG_MTD_PHYSMAP_START=3D0xff800000 CONFIG_MTD_PHYSMAP_LEN=3D0x800000 CONFIG_MTD_PHYSMAP_BANKWIDTH=3D2 # CONFIG_MTD_PHYSMAP_OF is not set # CONFIG_MTD_INTEL_VR_NOR is not set # CONFIG_MTD_PLATRAM is not set # # Self-contained MTD device drivers # # CONFIG_MTD_PMC551 is not set # CONFIG_MTD_SLRAM is not set # CONFIG_MTD_PHRAM is not set # CONFIG_MTD_MTDRAM is not set # CONFIG_MTD_BLOCK2MTD is not set <snip> =3D> tftpboot 200000 uImage =3D> tftpboot 400000 myboard.dtb =3D> echo $bootargs console=3DttyCPM0,115200 root=3D/dev/mtdblock1 rw mtdparts=3Dphys:1600K(ROM)ro,6M(root),512K(U-Boot)ro,512K(unused) rootfstype=3Djffs2 =3D> bootm 200000 - 400000 <snip> physmap platform flash device: 00800000 at ff800000 physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank Amd/Fujitsu Extended Query Table at 0x0040 physmap-flash.0: CFI does not contain boot bank location. Assuming top. number of CFI chips: 1 cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness. RedBoot partition parsing not available mtd: Giving out device 0 to physmap-flash.0 mice: PS/2 mouse device common for all mice TCP cubic registered NET: Registered protocol family 1 NET: Registered protocol family 17 RPC: Registered udp transport module. RPC: Registered tcp transport module. Root-NFS: No NFS server available, giving up. VFS: Unable to mount root fs via NFS, trying floppy. MTDSB: dev_name "/dev/root" MTDSB: path_lookup() returned 0, inode c1400aa0 List of all partitions: 0100 4096 ram0 (driver?) 0101 4096 ram1 (driver?) 0102 4096 ram2 (driver?) 0103 4096 ram3 (driver?) 0104 4096 ram4 (driver?) 0105 4096 ram5 (driver?) 0106 4096 ram6 (driver?) 0107 4096 ram7 (driver?) 0108 4096 ram8 (driver?) 0109 4096 ram9 (driver?) 010a 4096 ram10 (driver?) 010b 4096 ram11 (driver?) 010c 4096 ram12 (driver?) 010d 4096 ram13 (driver?) 010e 4096 ram14 (driver?) 010f 4096 ram15 (driver?) No filesystem could mount root, tried: jffs2 Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0) Rebooting in 180 seconds.. The key change in my kernel config was the BIG_ENDIAN=3DY. The kernel probes the AMD chip, but it can't see the partitions. I guess now I will have to define my mtd partitions in either FDT or in the kernel arguments. Which is the best way to define them? If the partitions are defined in both FDT and bootargs, which one takes precedence? -Roberto On Wed, Oct 14, 2009 at 5:40 PM, Scott Wood <scottwood@freescale.com> wrote= : > Roberto Guerra wrote: >> >> I've been learning how to modify the dts from >> >> http://www.mjmwired.net/kernel/Documentation/powerpc/dts-bindings/mtd-ph= ysmap.txt#49 >> The original mpc8272ads.dts represents four 8-bit JEDEC Sharp flash >> chips in 1 SIMM module: >> [snip] =A0 =A0 =A0 =A0localbus@f0010100 { >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0compatible =3D "fsl,mpc8280-localbus", >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 "fsl,pq2-localbu= s"; >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0#address-cells =3D <2>; >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0#size-cells =3D <1>; >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0reg =3D <f0010100 60>; >> >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0ranges =3D <0 0 fe000000 00800000 >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A01 0 f4500000 00008000 >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A08 0 f8200000 00008000= >; >> >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0flash@0,0 { >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0compatible =3D "jedec-fla= sh"; >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0reg =3D <0 0 800000>; >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0bank-width =3D <4>; >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0device-width =3D <1>; >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0}; >> [snip] >> My board (based on the PQ2FADS, using the MPC8272ADS BSP) > > Don't base anything on the BSPs, unless there's something in them that yo= u > really need that isn't upstream. =A0There is pq2fads support in current > upstream kernels. > >> uses one >> 16-bit Spansion (AMD) CFI chip at addresses FF800000 through FFFFFFFF. >> It probably needs to be represented this way (I've only made changes >> to the "flash" section. >> [snip] >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0flash@0,0 { >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0compatible =3D "amd, s29j= l064h", "cfi-flash"; >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0reg =3D <0 0 800000>; >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0bank-width =3D <2>; >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0device-width =3D <2>; >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0}; >> [snip] >> However, I don't know what would be the correct addresses to type >> after "localbus", "flash" and "reg". Is this enough information to >> define my dts? > > The flash node looks good, other than that there shouldn't be a space aft= er > "amd,". > > In the localbus node, change fe000000 to ff800000. =A0Remove or change th= e > other ranges entries if they don't describe your board's chipselects. > > If your IMMR is somewhere other than 0xf0000000, update the f0010100 to > match. > > -Scott > > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Support for S29JL064 in MPC8272ADS? 2009-10-16 15:37 ` Roberto Guerra @ 2009-10-16 15:55 ` Roberto Guerra 2009-10-16 16:18 ` Scott Wood 1 sibling, 0 replies; 9+ messages in thread From: Roberto Guerra @ 2009-10-16 15:55 UTC (permalink / raw) To: Scott Wood, linuxppc-dev Sorry I made a typo: LITTLE endian byte swap is enabled for Flash Chip driv= ers: CONFIG_MTD_CFI_LE_BYTE_SWAP=3Dy On Fri, Oct 16, 2009 at 11:37 AM, Roberto Guerra <roberto.j.guerra@gmail.com> wrote: > In the last few days, I made this progress (<snip> indicates where I > cropped the file to the relevant sections): > > $ cat myboard.dts > <snip> > =A0 =A0 =A0 =A0localbus@f0010100 { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0compatible =3D "fsl,mpc8280-localbus", > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 "fsl,pq2-localbus= "; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0#address-cells =3D <2>; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0#size-cells =3D <1>; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0reg =3D <f0010100 60>; > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0ranges =3D <0 0 ffe00000 00800000>; > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0flash@0,0 { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0compatible =3D "cfi-flash"= ; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0reg =3D <0 0 800000>; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0bank-width =3D <2>; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0device-width =3D <2>; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0}; > =A0 =A0 =A0 =A0}; > <snip> > > $ cat linux/.config > <snip> > # > # Generic Driver Options > # > CONFIG_MTD=3Dy > CONFIG_MTD_DEBUG=3Dy > CONFIG_MTD_DEBUG_VERBOSE=3D3 > # CONFIG_MTD_CONCAT is not set > CONFIG_MTD_PARTITIONS=3Dy > # CONFIG_MTD_REDBOOT_PARTS is not set > CONFIG_MTD_CMDLINE_PARTS=3Dy > # CONFIG_MTD_OF_PARTS is not set > # > # User Modules And Translation Layers > # > # CONFIG_MTD_CHAR is not set > # CONFIG_MTD_BLKDEVS is not set > # CONFIG_MTD_BLOCK is not set > # CONFIG_MTD_BLOCK_RO is not set > # CONFIG_FTL is not set > # CONFIG_NFTL is not set > # CONFIG_INFTL is not set > # CONFIG_RFD_FTL is not set > # CONFIG_SSFDC is not set > # CONFIG_MTD_OOPS is not set > # > # RAM/ROM/Flash chip drivers > # > CONFIG_MTD_CFI=3Dy > # CONFIG_MTD_JEDECPROBE is not set > CONFIG_MTD_GEN_PROBE=3Dy > CONFIG_MTD_CFI_ADV_OPTIONS=3Dy > # CONFIG_MTD_CFI_NOSWAP is not set > # CONFIG_MTD_CFI_BE_BYTE_SWAP is not set > CONFIG_MTD_CFI_LE_BYTE_SWAP=3Dy > CONFIG_MTD_CFI_GEOMETRY=3Dy > # CONFIG_MTD_MAP_BANK_WIDTH_1 is not set > CONFIG_MTD_MAP_BANK_WIDTH_2=3Dy > # CONFIG_MTD_MAP_BANK_WIDTH_4 is not set > # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set > # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set > # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set > CONFIG_MTD_CFI_I1=3Dy > # CONFIG_MTD_CFI_I2 is not set > # CONFIG_MTD_CFI_I4 is not set > # CONFIG_MTD_CFI_I8 is not set > # CONFIG_MTD_OTP is not set > # CONFIG_MTD_CFI_INTELEXT is not set > CONFIG_MTD_CFI_AMDSTD=3Dy > # CONFIG_MTD_CFI_STAA is not set > CONFIG_MTD_CFI_UTIL=3Dy > # CONFIG_MTD_RAM is not set > # CONFIG_MTD_ROM is not set > # CONFIG_MTD_ABSENT is not set > # > # Mapping drivers for chip access > # > # CONFIG_MTD_COMPLEX_MAPPINGS is not set > CONFIG_MTD_PHYSMAP=3Dy > CONFIG_MTD_PHYSMAP_START=3D0xff800000 > CONFIG_MTD_PHYSMAP_LEN=3D0x800000 > CONFIG_MTD_PHYSMAP_BANKWIDTH=3D2 > # CONFIG_MTD_PHYSMAP_OF is not set > # CONFIG_MTD_INTEL_VR_NOR is not set > # CONFIG_MTD_PLATRAM is not set > # > # Self-contained MTD device drivers > # > # CONFIG_MTD_PMC551 is not set > # CONFIG_MTD_SLRAM is not set > # CONFIG_MTD_PHRAM is not set > # CONFIG_MTD_MTDRAM is not set > # CONFIG_MTD_BLOCK2MTD is not set > <snip> > > =3D> tftpboot 200000 uImage > =3D> tftpboot 400000 myboard.dtb > =3D> echo $bootargs > console=3DttyCPM0,115200 root=3D/dev/mtdblock1 rw > mtdparts=3Dphys:1600K(ROM)ro,6M(root),512K(U-Boot)ro,512K(unused) > rootfstype=3Djffs2 > =3D> bootm 200000 - 400000 > <snip> > physmap platform flash device: 00800000 at ff800000 > physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank > =A0Amd/Fujitsu Extended Query Table at 0x0040 > physmap-flash.0: CFI does not contain boot bank location. Assuming > top. > number of CFI chips: 1 > cfi_cmdset_0002: Disabling erase-suspend-program due to code > brokenness. > RedBoot partition parsing not available > mtd: Giving out device 0 to physmap-flash.0 > mice: PS/2 mouse device common for all mice > TCP cubic registered > NET: Registered protocol family 1 > NET: Registered protocol family 17 > RPC: Registered udp transport module. > RPC: Registered tcp transport module. > Root-NFS: No NFS server available, giving up. > VFS: Unable to mount root fs via NFS, trying floppy. > MTDSB: dev_name "/dev/root" > MTDSB: path_lookup() returned 0, inode c1400aa0 > List of all partitions: > 0100 =A0 =A0 =A0 4096 ram0 (driver?) > 0101 =A0 =A0 =A0 4096 ram1 (driver?) > 0102 =A0 =A0 =A0 4096 ram2 (driver?) > 0103 =A0 =A0 =A0 4096 ram3 (driver?) > 0104 =A0 =A0 =A0 4096 ram4 (driver?) > 0105 =A0 =A0 =A0 4096 ram5 (driver?) > 0106 =A0 =A0 =A0 4096 ram6 (driver?) > 0107 =A0 =A0 =A0 4096 ram7 (driver?) > 0108 =A0 =A0 =A0 4096 ram8 (driver?) > 0109 =A0 =A0 =A0 4096 ram9 (driver?) > 010a =A0 =A0 =A0 4096 ram10 (driver?) > 010b =A0 =A0 =A0 4096 ram11 (driver?) > 010c =A0 =A0 =A0 4096 ram12 (driver?) > 010d =A0 =A0 =A0 4096 ram13 (driver?) > 010e =A0 =A0 =A0 4096 ram14 (driver?) > 010f =A0 =A0 =A0 4096 ram15 (driver?) > No filesystem could mount root, tried: =A0jffs2 > Kernel panic - not syncing: VFS: Unable to mount root fs on > unknown-block(2,0) > Rebooting in 180 seconds.. > > The key change in my kernel config was the BIG_ENDIAN=3DY. > The kernel probes the AMD chip, but it can't see the partitions. > I guess now I will have to define my mtd partitions in either FDT or > in the kernel arguments. > Which is the best way to define them? If the partitions are defined in > both FDT and bootargs, which one takes precedence? > > -Roberto > > > On Wed, Oct 14, 2009 at 5:40 PM, Scott Wood <scottwood@freescale.com> wro= te: >> Roberto Guerra wrote: >>> >>> I've been learning how to modify the dts from >>> >>> http://www.mjmwired.net/kernel/Documentation/powerpc/dts-bindings/mtd-p= hysmap.txt#49 >>> The original mpc8272ads.dts represents four 8-bit JEDEC Sharp flash >>> chips in 1 SIMM module: >>> [snip] =A0 =A0 =A0 =A0localbus@f0010100 { >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0compatible =3D "fsl,mpc8280-localbus", >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 "fsl,pq2-localb= us"; >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0#address-cells =3D <2>; >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0#size-cells =3D <1>; >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0reg =3D <f0010100 60>; >>> >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0ranges =3D <0 0 fe000000 00800000 >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A01 0 f4500000 0000800= 0 >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A08 0 f8200000 0000800= 0>; >>> >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0flash@0,0 { >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0compatible =3D "jedec-fl= ash"; >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0reg =3D <0 0 800000>; >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0bank-width =3D <4>; >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0device-width =3D <1>; >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0}; >>> [snip] >>> My board (based on the PQ2FADS, using the MPC8272ADS BSP) >> >> Don't base anything on the BSPs, unless there's something in them that y= ou >> really need that isn't upstream. =A0There is pq2fads support in current >> upstream kernels. >> >>> uses one >>> 16-bit Spansion (AMD) CFI chip at addresses FF800000 through FFFFFFFF. >>> It probably needs to be represented this way (I've only made changes >>> to the "flash" section. >>> [snip] >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0flash@0,0 { >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0compatible =3D "amd, s29= jl064h", "cfi-flash"; >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0reg =3D <0 0 800000>; >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0bank-width =3D <2>; >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0device-width =3D <2>; >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0}; >>> [snip] >>> However, I don't know what would be the correct addresses to type >>> after "localbus", "flash" and "reg". Is this enough information to >>> define my dts? >> >> The flash node looks good, other than that there shouldn't be a space af= ter >> "amd,". >> >> In the localbus node, change fe000000 to ff800000. =A0Remove or change t= he >> other ranges entries if they don't describe your board's chipselects. >> >> If your IMMR is somewhere other than 0xf0000000, update the f0010100 to >> match. >> >> -Scott >> >> > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Support for S29JL064 in MPC8272ADS? 2009-10-16 15:37 ` Roberto Guerra 2009-10-16 15:55 ` Roberto Guerra @ 2009-10-16 16:18 ` Scott Wood 1 sibling, 0 replies; 9+ messages in thread From: Scott Wood @ 2009-10-16 16:18 UTC (permalink / raw) To: Roberto Guerra; +Cc: linuxppc-dev Roberto Guerra wrote: > mtdparts=phys:1600K(ROM)ro,6M(root),512K(U-Boot)ro,512K(unused) > rootfstype=jffs2 > => bootm 200000 - 400000 > <snip> > physmap platform flash device: 00800000 at ff800000 > physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank > Amd/Fujitsu Extended Query Table at 0x0040 > physmap-flash.0: CFI does not contain boot bank location. Assuming > top. Hmm, you seem to be using physmap rather than physmap_of -- so it won't even be looking at your device tree node. > List of all partitions: > 0100 4096 ram0 (driver?) > 0101 4096 ram1 (driver?) > 0102 4096 ram2 (driver?) > 0103 4096 ram3 (driver?) > 0104 4096 ram4 (driver?) > 0105 4096 ram5 (driver?) > 0106 4096 ram6 (driver?) > 0107 4096 ram7 (driver?) > 0108 4096 ram8 (driver?) > 0109 4096 ram9 (driver?) > 010a 4096 ram10 (driver?) > 010b 4096 ram11 (driver?) > 010c 4096 ram12 (driver?) > 010d 4096 ram13 (driver?) > 010e 4096 ram14 (driver?) > 010f 4096 ram15 (driver?) Where are all these coming from? > The key change in my kernel config was the BIG_ENDIAN=Y. > The kernel probes the AMD chip, but it can't see the partitions. Even without partiitons, you should see the whole flash device... > I guess now I will have to define my mtd partitions in either FDT or > in the kernel arguments. > Which is the best way to define them? If you're defining a standard layout for the platform that's unlikely to change, I'd go with the device tree. Otherwise, I'd go with whatever's most convenient. > If the partitions are defined in > both FDT and bootargs, which one takes precedence? The command line takes precedence. -Scott ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2009-10-16 16:17 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-10-09 14:14 Support for S29JL064 in MPC8272ADS? Roberto Guerra 2009-10-09 17:04 ` Scott Wood 2009-10-09 17:59 ` Roberto Guerra 2009-10-09 18:16 ` Scott Wood 2009-10-14 21:34 ` Roberto Guerra 2009-10-14 21:40 ` Scott Wood 2009-10-16 15:37 ` Roberto Guerra 2009-10-16 15:55 ` Roberto Guerra 2009-10-16 16:18 ` Scott Wood
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).