440EP NOR Flash Mapping with DTS
Thomas Besemer
thomas.besemer at gmail.com
Thu Jul 20 08:09:41 AEST 2017
On Sun, Jul 16, 2017 at 5:58 PM, Segher Boessenkool
<segher at kernel.crashing.org> wrote:
> On Sun, Jul 16, 2017 at 05:31:05PM -0700, Thomas Besemer wrote:
>> I'm trying to map some NOR flash in via DTS on a Yosemite
>> style 440EP board. I've tried a few different things, below
>> showing my latest attempt. During Kernel boot, it does not
>> appear to detect the device, as no messages are emitted.
>>
>> Flash is Spansion S29GL256P, base address 0xFE000000.
>>
>> EBC0: ebc {
>> compatible = "ibm,ebc-440ep", "ibm,ebc-440gp", "ibm,ebc";
>> dcr-reg = <0x012 0x002>;
>> #address-cells = <2>;
>> #size-cells = <1>;
>> clock-frequency = <0>; /* Filled in by zImage */
>> interrupts = <0x5 0x1>;
>> interrupt-parent = <&UIC1>;
>>
>> nor_flash at FE0000000,0 {
>
> @0,fe000000
>
>> reg = <0xFE000000 0x02000000>;
>
> reg = <0 0xfe000000 0x02000000>;
>
>
> Cheers,
>
>
> Segher
I'm still having trouble with this, and think it's a DTS syntax problem. I did
load up kernel with some printk()'s in key areas, and it was not finding the
device due to invalid ranges. I simply added 'ranges;' to the EBC entry,
it detected, but did not properly map in MTD's. Here is summary of warnings
on DTS, full DTS, and what it looks like mapped in.
I will note that I can't find many examples on this, and my syntax is not much
different than what was originally checked in. I suspect that the
'ranges' field
is wrong, but I can't find documentation on what fields represent.
Thanks.
DTB Warning:
Warning (ranges_format): /plb/opb/ebc has empty "ranges" property but
its #address-cells (2) differs from /plb/opb (1)
DTB Entry:
POB0: opb {
compatible = "ibm,opb-440ep", "ibm,opb-440gp", "ibm,opb";
#address-cells = <1>;
#size-cells = <1>;
/* Bamboo is oddball in the 44x world and doesn't use the ERPN
* bits.
*/
ranges = <0x00000000 0x00000000 0x00000000 0x80000000
0x80000000 0x00000000 0x80000000 0x80000000>;
interrupt-parent = <&UIC1>;
interrupts = <0x7 0x4>;
clock-frequency = <0>; /* Filled in by zImage */
EBC0: ebc {
compatible = "ibm,ebc-440ep", "ibm,ebc-440gp", "ibm,ebc";
dcr-reg = <0x012 0x002>;
clock-frequency = <0>; /* Filled in by zImage */
interrupts = <0x5 0x1>;
interrupt-parent = <&UIC1>;
#address-cells = <2>;
#size-cells = <1>;
ranges; /* WITHOUT THIS, CHIP NOT FOUND */
nor_flash at 0,FE000000 {
compatible = "amd,s29gl256p", "cfi-flash";
bank-width = <2>;
reg = <0 0xFE000000 0x02000000>;
#address-cells = <1>;
#size-cells = <1>;
partition at 0 {
label = "Kernel";
reg = <0x00000000 0x00180000>;
};
partition at 180000 {
label = "OS Filesystem";
reg = <0x00180000 0x01DE0000>;
};
};
};
Result MTD:
# cat /proc/mtd
dev: size erasesize name
mtd0: 02000000 00020000 "fe000000.nor_flash"
#
Boot Messages:
[ 6.272519] fe000000.nor_flash: Found 1 x16 devices at 0x0 in 16-bit bank. Ma
nufacturer ID 0x000001 Chip ID 0x002201
[ 6.282969] Amd/Fujitsu Extended Query Table at 0x0040
[ 6.288094] Amd/Fujitsu Extended Query version 1.3.
[ 6.293132] number of CFI chips: 1
More information about the Linuxppc-dev
mailing list