* ARCH=ppc -> ARCH=powerpc : help needed for dts file @ 2008-03-03 14:47 Philippe De Muyter 2008-03-03 14:54 ` Grant Likely 2008-03-03 17:07 ` Scott Wood 0 siblings, 2 replies; 31+ messages in thread From: Philippe De Muyter @ 2008-03-03 14:47 UTC (permalink / raw) To: linuxppc-dev Hi all, I have a currently almost working ARCH=ppc linux-2.6.24 configuration for a new mpc8540 board (except for a RTC chip connected to an i2c bus). Knowing that ARCH=ppc will be removed, I try to make the ARCH=powerpc version work, but that's not easy. I have copied the mpc8540ads.dts file to a new dts file, and added the following : i2c@3000 { + #address-cells = <1>; + #size-cells = <0>; device_type = "i2c"; compatible = "fsl-i2c"; reg = <3000 100>; interrupts = <2b 2>; interrupt-parent = <&mpic>; dfsrr; + + rtc@68 { + compatible = "stm,m41t81"; + reg = <68>; + }; }; and I see in the boot log that my RTC chip is now working. My root device is on a compact-flash connected to a PCI yenta chip from TI, and this one is not working, altough it seems to be discovered : Yenta: CardBus bridge found at 0000:00:12.0 [0000:0000] Yenta: Using CSCINT to route CSC interrupts to PCI Yenta: Routing CardBus interrupts to PCI Yenta TI: socket 0000:00:12.0, mfunc 0x00001b22, devctl 0x64 irq 18: nobody cared (try booting with the "irqpoll" option) Call Trace: [cf813af0] [c00066c8] show_stack+0x3c/0x1bc (unreliable) [cf813b30] [c003c1ac] __report_bad_irq+0x38/0xcc [cf813b50] [c003c4c8] note_interrupt+0x288/0x2cc [cf813b80] [c003cc34] handle_fasteoi_irq+0x94/0xf8 but my boot finally fails with : VFS: Cannot open root device "hda1" or unknown-block(0,0) Please append a correct "root=" boot option; here are the available partitions: 1f00 8192 mtdblock0 (driver?) Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) Is there an easy way to use values found in /proc or even in the sources in my working ppc setup to put them in the dts file to make my new powerpc configuration work ? Thanks for listening Philippe ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-03 14:47 ARCH=ppc -> ARCH=powerpc : help needed for dts file Philippe De Muyter @ 2008-03-03 14:54 ` Grant Likely 2008-03-03 17:07 ` Scott Wood 1 sibling, 0 replies; 31+ messages in thread From: Grant Likely @ 2008-03-03 14:54 UTC (permalink / raw) To: Philippe De Muyter; +Cc: linuxppc-dev On Mon, Mar 3, 2008 at 7:47 AM, Philippe De Muyter <phdm@macqel.be> wrote: > My root device is on a compact-flash connected to a PCI yenta chip from TI, > and this one is not working, altough it seems to be discovered : > > Yenta: CardBus bridge found at 0000:00:12.0 [0000:0000] > Yenta: Using CSCINT to route CSC interrupts to PCI > Yenta: Routing CardBus interrupts to PCI > Yenta TI: socket 0000:00:12.0, mfunc 0x00001b22, devctl 0x64 > irq 18: nobody cared (try booting with the "irqpoll" option) > Call Trace: > [cf813af0] [c00066c8] show_stack+0x3c/0x1bc (unreliable) > [cf813b30] [c003c1ac] __report_bad_irq+0x38/0xcc > [cf813b50] [c003c4c8] note_interrupt+0x288/0x2cc > [cf813b80] [c003cc34] handle_fasteoi_irq+0x94/0xf8 > > but my boot finally fails with : > > VFS: Cannot open root device "hda1" or unknown-block(0,0) > Please append a correct "root=" boot option; here are the > available partitions: > 1f00 8192 mtdblock0 (driver?) > Kernel panic - not syncing: VFS: Unable to mount root fs > on unknown-block(0,0) > > Is there an easy way to use values found in /proc or even in the sources > in my working ppc setup to put them in the dts file to make my new powerpc > configuration work ? It does not look like you are having dts problems. Once your in the PCI domain, Linux will probe the devices (as your boot log shows). Rather, your boot failure is due to the yenta device failure. Cheers, g. -- Grant Likely, B.Sc., P.Eng. Secret Lab Technologies Ltd. ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-03 14:47 ARCH=ppc -> ARCH=powerpc : help needed for dts file Philippe De Muyter 2008-03-03 14:54 ` Grant Likely @ 2008-03-03 17:07 ` Scott Wood 2008-03-03 21:05 ` Philippe De Muyter 1 sibling, 1 reply; 31+ messages in thread From: Scott Wood @ 2008-03-03 17:07 UTC (permalink / raw) To: Philippe De Muyter; +Cc: linuxppc-dev On Mon, Mar 03, 2008 at 03:47:27PM +0100, Philippe De Muyter wrote: > My root device is on a compact-flash connected to a PCI yenta chip from TI, > and this one is not working, altough it seems to be discovered : > > Yenta: CardBus bridge found at 0000:00:12.0 [0000:0000] > Yenta: Using CSCINT to route CSC interrupts to PCI > Yenta: Routing CardBus interrupts to PCI > Yenta TI: socket 0000:00:12.0, mfunc 0x00001b22, devctl 0x64 > irq 18: nobody cared (try booting with the "irqpoll" option) > Call Trace: > [cf813af0] [c00066c8] show_stack+0x3c/0x1bc (unreliable) > [cf813b30] [c003c1ac] __report_bad_irq+0x38/0xcc > [cf813b50] [c003c4c8] note_interrupt+0x288/0x2cc > [cf813b80] [c003cc34] handle_fasteoi_irq+0x94/0xf8 Maybe your PCI interrupt-map is wrong... -Scott ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-03 17:07 ` Scott Wood @ 2008-03-03 21:05 ` Philippe De Muyter 2008-03-03 21:11 ` Scott Wood 2008-03-03 21:26 ` Benjamin Herrenschmidt 0 siblings, 2 replies; 31+ messages in thread From: Philippe De Muyter @ 2008-03-03 21:05 UTC (permalink / raw) To: Scott Wood; +Cc: linuxppc-dev Hi Scott, On Mon, Mar 03, 2008 at 11:07:20AM -0600, Scott Wood wrote: > On Mon, Mar 03, 2008 at 03:47:27PM +0100, Philippe De Muyter wrote: > > My root device is on a compact-flash connected to a PCI yenta chip from TI, > > and this one is not working, altough it seems to be discovered : > > > > Yenta: CardBus bridge found at 0000:00:12.0 [0000:0000] > > Yenta: Using CSCINT to route CSC interrupts to PCI > > Yenta: Routing CardBus interrupts to PCI > > Yenta TI: socket 0000:00:12.0, mfunc 0x00001b22, devctl 0x64 > > irq 18: nobody cared (try booting with the "irqpoll" option) > > Call Trace: > > [cf813af0] [c00066c8] show_stack+0x3c/0x1bc (unreliable) > > [cf813b30] [c003c1ac] __report_bad_irq+0x38/0xcc > > [cf813b50] [c003c4c8] note_interrupt+0x288/0x2cc > > [cf813b80] [c003cc34] handle_fasteoi_irq+0x94/0xf8 > > Maybe your PCI interrupt-map is wrong... Is the PCI-interrupt map that part of the dts file : interrupt-map = < /* IDSEL 0x02 */ 1000 0 0 1 &mpic 1 1 1000 0 0 2 &mpic 2 1 1000 0 0 3 &mpic 3 1 1000 0 0 4 &mpic 4 1 /* IDSEL 0x03 */ 1800 0 0 1 &mpic 4 1 1800 0 0 2 &mpic 1 1 1800 0 0 3 &mpic 2 1 1800 0 0 4 &mpic 3 1 ... I do not understand anything there :( Philippe ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-03 21:05 ` Philippe De Muyter @ 2008-03-03 21:11 ` Scott Wood 2008-03-03 21:26 ` Philippe De Muyter 2008-03-03 21:26 ` Benjamin Herrenschmidt 1 sibling, 1 reply; 31+ messages in thread From: Scott Wood @ 2008-03-03 21:11 UTC (permalink / raw) To: Philippe De Muyter; +Cc: linuxppc-dev Philippe De Muyter wrote: > Is the PCI-interrupt map that part of the dts file : > > interrupt-map = < > > /* IDSEL 0x02 */ > 1000 0 0 1 &mpic 1 1 > 1000 0 0 2 &mpic 2 1 > 1000 0 0 3 &mpic 3 1 > 1000 0 0 4 &mpic 4 1 > > /* IDSEL 0x03 */ > 1800 0 0 1 &mpic 4 1 > 1800 0 0 2 &mpic 1 1 > 1800 0 0 3 &mpic 2 1 > 1800 0 0 4 &mpic 3 1 > > ... Yes. > I do not understand anything there :( It maps PCI interrupts to mpic interrupts. The first three cells are the PCI address (only the device number is unmasked), then the PCI interrupt (INTA=1, INTB=2, etc.), then a phandle to the parent interrupt controller, then the interrupt specifier for the parent controller. -Scott ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-03 21:11 ` Scott Wood @ 2008-03-03 21:26 ` Philippe De Muyter 2008-03-03 21:41 ` Benjamin Herrenschmidt 2008-03-03 21:55 ` Scott Wood 0 siblings, 2 replies; 31+ messages in thread From: Philippe De Muyter @ 2008-03-03 21:26 UTC (permalink / raw) To: Scott Wood; +Cc: linuxppc-dev Hi Scott, On Mon, Mar 03, 2008 at 03:11:08PM -0600, Scott Wood wrote: > Philippe De Muyter wrote: >> Is the PCI-interrupt map that part of the dts file : >> interrupt-map = < >> /* IDSEL 0x02 */ >> 1000 0 0 1 &mpic 1 1 >> 1000 0 0 2 &mpic 2 1 >> 1000 0 0 3 &mpic 3 1 >> 1000 0 0 4 &mpic 4 1 >> /* IDSEL 0x03 */ >> 1800 0 0 1 &mpic 4 1 >> 1800 0 0 2 &mpic 1 1 >> 1800 0 0 3 &mpic 2 1 >> 1800 0 0 4 &mpic 3 1 >> ... > > Yes. > >> I do not understand anything there :( > > It maps PCI interrupts to mpic interrupts. The first three cells are the > PCI address (only the device number is unmasked), then the PCI interrupt > (INTA=1, INTB=2, etc.), then a phandle to the parent interrupt controller, > then the interrupt specifier for the parent controller. Thanks The following seems important also : /* interrupts = <18 2>; */ /* interrupts number are coded in hexa ! */ interrupts = <12 2 19 2 1a 2 1b 2 35 2 36 2 37 2>; I have replaced the interrupts spec in comments by the longer interrupts spec below, and it seems to have some positive effect, but I do not know precisely what I have described there. I know that 25, 26, 27, 53, 54 and 55 decimal i(hence 19, 1a etc...) are the interrupts numbers that I had in the ARCH=ppc version. I added 18 because of the error message, but it did not help. What should be described here and how ? Philippe ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-03 21:26 ` Philippe De Muyter @ 2008-03-03 21:41 ` Benjamin Herrenschmidt 2008-03-04 8:19 ` Philippe De Muyter 2008-03-03 21:55 ` Scott Wood 1 sibling, 1 reply; 31+ messages in thread From: Benjamin Herrenschmidt @ 2008-03-03 21:41 UTC (permalink / raw) To: Philippe De Muyter; +Cc: Scott Wood, linuxppc-dev > Thanks > > The following seems important also : > > /* > interrupts = <18 2>; > */ > /* interrupts number are coded in hexa ! */ > interrupts = <12 2 19 2 1a 2 1b 2 35 2 36 2 37 2>; > > I have replaced the interrupts spec in comments by the longer interrupts spec > below, and it seems to have some positive effect, but I do not know > precisely what I have described there. > > I know that 25, 26, 27, 53, 54 and 55 decimal i(hence 19, 1a etc...) are the > interrupts numbers that I had in the ARCH=ppc version. I added 18 because > of the error message, but it did not help. Where is this ? (What node ?) The above looks like the interrupt spec for a single device with 7 interrupts, is that what you are trying to do ? If not, then it's incorrect, you have to figure the interrupt-map out (it's really not -that- hard). Ben. ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-03 21:41 ` Benjamin Herrenschmidt @ 2008-03-04 8:19 ` Philippe De Muyter 0 siblings, 0 replies; 31+ messages in thread From: Philippe De Muyter @ 2008-03-04 8:19 UTC (permalink / raw) To: Benjamin Herrenschmidt; +Cc: Scott Wood, linuxppc-dev Hi Ben, On Tue, Mar 04, 2008 at 08:41:33AM +1100, Benjamin Herrenschmidt wrote: > > > Thanks > > > > The following seems important also : > > > > /* > > interrupts = <18 2>; > > */ > > /* interrupts number are coded in hexa ! */ > > interrupts = <12 2 19 2 1a 2 1b 2 35 2 36 2 37 2>; > > > > I have replaced the interrupts spec in comments by the longer interrupts spec > > below, and it seems to have some positive effect, but I do not know > > precisely what I have described there. > > > > I know that 25, 26, 27, 53, 54 and 55 decimal i(hence 19, 1a etc...) are the > > interrupts numbers that I had in the ARCH=ppc version. I added 18 because > > of the error message, but it did not help. > > Where is this ? (What node ?) The above looks like the interrupt spec > for a single device with 7 interrupts, is that what you are trying to > do ? Well, the yenta device is a multi-function PCI peripheral that has two pcmcia/pccard/compactflash slots and one ohci1394 interface. Here's what uboot shows : PCI Scan: Found Bus 0, Device 18, Function 0 00 12 104c ac46 0607 ff PCI Scan: Found Bus 0, Device 18, Function 1 00 12 104c ac46 0607 ff PCI Scan: Found Bus 0, Device 18, Function 2 00 12 104c 802a 0c00 00 and here is what /proc/interrupts shows in my ARCH=ppc dts-less running linux : root:~# cat /proc/interrupts CPU0 25: 0 OpenPIC Level gfar_interrupt 26: 245 OpenPIC Level serial 27: 0 OpenPIC Level i2c-mpc 55: 18797 OpenPIC Level yenta, ide0 54: 1 OpenPIC Level yenta 55: 79 OpenPIC Level ohci1394 BAD: 0 > > If not, then it's incorrect, you have to figure the interrupt-map out > (it's really not -that- hard). If I knew where to look at, and what I must produce, I'd agree with you :) Philippe ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-03 21:26 ` Philippe De Muyter 2008-03-03 21:41 ` Benjamin Herrenschmidt @ 2008-03-03 21:55 ` Scott Wood 2008-03-04 8:08 ` Philippe De Muyter 1 sibling, 1 reply; 31+ messages in thread From: Scott Wood @ 2008-03-03 21:55 UTC (permalink / raw) To: Philippe De Muyter; +Cc: linuxppc-dev Philippe De Muyter wrote: > The following seems important also : > > /* > interrupts = <18 2>; > */ > /* interrupts number are coded in hexa ! */ > interrupts = <12 2 19 2 1a 2 1b 2 35 2 36 2 37 2>; > > I have replaced the interrupts spec in comments by the longer interrupts spec > below, Why? > and it seems to have some positive effect, What kind of positive effect? I'd think the extra interrupts would just be ignored. The interrupts property for the PCI node itself is generally for error reporting. > I know that 25, 26, 27, 53, 54 and 55 decimal i(hence 19, 1a etc...) are the > interrupts numbers that I had in the ARCH=ppc version. I added 18 because > of the error message, but it did not help. What ARCH=ppc version? There are no device trees for non-OF boards in arch/ppc. -Scott ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-03 21:55 ` Scott Wood @ 2008-03-04 8:08 ` Philippe De Muyter 2008-03-04 8:22 ` Benjamin Herrenschmidt 0 siblings, 1 reply; 31+ messages in thread From: Philippe De Muyter @ 2008-03-04 8:08 UTC (permalink / raw) To: Scott Wood; +Cc: linuxppc-dev Hi Scott, On Mon, Mar 03, 2008 at 03:55:26PM -0600, Scott Wood wrote: > Philippe De Muyter wrote: >> The following seems important also : >> /* >> interrupts = <18 2>; >> */ >> /* interrupts number are coded in hexa ! */ >> interrupts = <12 2 19 2 1a 2 1b 2 35 2 36 2 37 2>; >> I have replaced the interrupts spec in comments by the longer interrupts >> spec >> below, > > Why? because of the error message regarding unhandled interrupt. As I wrote I do not know anything about dts files, just that it is needed to have one for a non OF board if I want to use the ARCH=powerpc tree. > >> and it seems to have some positive effect, > > What kind of positive effect? I'd think the extra interrupts would just be > ignored. The interrupts property for the PCI node itself is generally for > error reporting. My compact-flash device is discovered, but interrupts still do not work. In the log, at the end of the boot, this : rtc-m41t80 0-0068: hctosys: invalid date/time Waiting 3sec before mounting root device... VFS: Cannot open root device "hda1" or unknown-block(0,0) Please append a correct "root=" boot option; here are the available partitions: 1f00 1920 mtdblock0 (driver?) 1f01 1920 mtdblock1 (driver?) 1f02 1920 mtdblock2 (driver?) 1f03 1920 mtdblock3 (driver?) 1f04 512 mtdblock4 (driver?) Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) Rebooting in 180 seconds.. is replaced by that : hda: TRANSCEND, CFA DISK drive ide0 at 0x000-0x007,0x00e on irq 18 hda: max request size: 128KiB hda: 8077104 sectors (4135 MB) w/1KiB Cache, CHS=8013/16/63 hda:<4>hda: lost interrupt [same message repeated] hda: lost interrupt hda1 ide-cs: hda: Vpp = 0.0 rtc-m41t80 0-0068: hctosys: invalid date/time Waiting 3sec before mounting root device... hda: lost interrupt [same message repeated] EXT2-fs warning (device hda1): ext2_fill_super: mounting ext3 filesystem as ext2 VFS: Mounted root (ext2 filesystem) readonly. Freeing unused kernel memory: 116k init hda: lost interrupt [same message repeated] > >> I know that 25, 26, 27, 53, 54 and 55 decimal i(hence 19, 1a etc...) are >> the >> interrupts numbers that I had in the ARCH=ppc version. I added 18 because >> of the error message, but it did not help. > > What ARCH=ppc version? There are no device trees for non-OF boards in > arch/ppc. With ARCH=ppc, all those interrupt's info's are hardcoded in the .c files. But I expected I could fill the dts file for ARCH=powerpc from info's I could collect in /proc on a running ARCH=ppc linux without dts file for the same board. Philippe ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-04 8:08 ` Philippe De Muyter @ 2008-03-04 8:22 ` Benjamin Herrenschmidt 2008-03-04 9:10 ` Philippe De Muyter 0 siblings, 1 reply; 31+ messages in thread From: Benjamin Herrenschmidt @ 2008-03-04 8:22 UTC (permalink / raw) To: Philippe De Muyter; +Cc: Scott Wood, linuxppc-dev On Tue, 2008-03-04 at 09:08 +0100, Philippe De Muyter wrote: > With ARCH=ppc, all those interrupt's info's are hardcoded in the .c > files. > But I expected I could fill the dts file for ARCH=powerpc from info's > I > could collect in /proc on a running ARCH=ppc linux without dts file > for the same board. Rather, look at the C file. Send it and we can help figuring things out. Ben. ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-04 8:22 ` Benjamin Herrenschmidt @ 2008-03-04 9:10 ` Philippe De Muyter 2008-03-05 4:52 ` David Gibson 2008-03-05 5:01 ` Benjamin Herrenschmidt 0 siblings, 2 replies; 31+ messages in thread From: Philippe De Muyter @ 2008-03-04 9:10 UTC (permalink / raw) To: Benjamin Herrenschmidt; +Cc: Scott Wood, linuxppc-dev [-- Attachment #1: Type: text/plain, Size: 3486 bytes --] Hi Ben, On Tue, Mar 04, 2008 at 07:22:19PM +1100, Benjamin Herrenschmidt wrote: > > On Tue, 2008-03-04 at 09:08 +0100, Philippe De Muyter wrote: > > With ARCH=ppc, all those interrupt's info's are hardcoded in the .c > > files. > > But I expected I could fill the dts file for ARCH=powerpc from info's > > I > > could collect in /proc on a running ARCH=ppc linux without dts file > > for the same board. > > Rather, look at the C file. Send it and we can help figuring things out. Thanks in advance Philippe I also attach my current (not working) dts file attempt. It is actually a modified mpc8540ads.dts file. I now thinks that the ide-cs (hda) discovery or not depends on the cold or warm reboot. Here are the patches for my config (MEIP_8540) relative to a vanilla linux-2.6.24. I hacked the MPC8540ADS config. The PCI4520 is the multi-function chip from TI (dual-socket pc-card + iee1394 ohci and two-port phy) --- ./arch/ppc/platforms/85xx/mpc85xx_ads_common.cbk 2008-01-24 22:58:37.000000000 +0000 +++ ./arch/ppc/platforms/85xx/mpc85xx_ads_common.c 2008-02-20 16:54:33.000000000 +0000 @@ -58,6 +58,29 @@ /* Internal interrupts are all Level Sensitive, and Positive Polarity */ static u_char mpc85xx_ads_openpic_initsenses[] __initdata = { MPC85XX_INTERNAL_IRQ_SENSES, +#ifdef CONFIG_MEIP_8540 + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), // External 0 : nINTPFO + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), // External 1 : nINTRTC + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), // External 2 : nINTPLD + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), // External 3 : nINTSTX + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), // External 4 : nINTPHY +#if defined(CONFIG_PCI) + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 5 : PCI4520 MFUNC 0 */ + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 6 : PCI4520 MFUNC 1 */ + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 7 : PCI4520 MFUNC 2 */ + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 8 : PCI4520 MFUNC 3 */ + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 9 : PCI4520 MFUNC 4 */ + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 10 : PCI4520 MFUNC 5 */ + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 11 : PCI4520 MFUNC 6 */ +#else + 0x0, /* External 6: */ + 0x0, /* External 7: */ + 0x0, /* External 8: */ + 0x0, /* External 9: */ + 0x0, /* External 10: */ + 0x0, /* External 11: */ +#endif +#else 0x0, /* External 0: */ #if defined(CONFIG_PCI) (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 1: PCI slot 0 */ @@ -77,6 +100,7 @@ 0x0, /* External 9: */ 0x0, /* External 10: */ 0x0, /* External 11: */ +#endif }; /* ************************************************************************ */ --- ./arch/ppc/platforms/85xx/mpc85xx_ads_common.hbk 2008-01-24 22:58:37.000000000 +0000 +++ ./arch/ppc/platforms/85xx/mpc85xx_ads_common.h 2008-02-20 16:36:07.000000000 +0000 @@ -29,10 +29,17 @@ extern void mpc85xx_ads_map_io(void) __init; /* PCI interrupt controller */ +#ifdef CONFIG_MEIP_8540 +#define PIRQA MPC85xx_IRQ_EXT5 +#define PIRQB MPC85xx_IRQ_EXT6 +#define PIRQC MPC85xx_IRQ_EXT7 +#define PIRQD MPC85xx_IRQ_EXT8 +#else #define PIRQA MPC85xx_IRQ_EXT1 #define PIRQB MPC85xx_IRQ_EXT2 #define PIRQC MPC85xx_IRQ_EXT3 #define PIRQD MPC85xx_IRQ_EXT4 +#endif #define MPC85XX_PCI1_LOWER_IO 0x00000000 #define MPC85XX_PCI1_UPPER_IO 0x00ffffff [-- Attachment #2: meip-8540.dts --] [-- Type: text/plain, Size: 6576 bytes --] /* * MEIP-8540 Device Tree Source * * Copyright 2008 Macq Electronique SA * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */ / { model = "MEIP8540"; compatible = "MEIP8540", "MPC85xxADS"; #address-cells = <1>; #size-cells = <1>; cpus { #address-cells = <1>; #size-cells = <0>; PowerPC,8540@0 { device_type = "cpu"; reg = <0>; d-cache-line-size = <20>; // 32 bytes i-cache-line-size = <20>; // 32 bytes d-cache-size = <8000>; // L1, 32K i-cache-size = <8000>; // L1, 32K timebase-frequency = <0>; // 33 MHz, from uboot bus-frequency = <0>; // 166 MHz clock-frequency = <0>; // 825 MHz, from uboot }; }; memory { device_type = "memory"; reg = <00000000 10000000>; // 256M at 0x0 }; soc8540@e0000000 { #address-cells = <1>; #size-cells = <1>; device_type = "soc"; ranges = <0 e0000000 00100000>; reg = <e0000000 00100000>; // CCSRBAR 1M bus-frequency = <0>; memory-controller@2000 { compatible = "fsl,8540-memory-controller"; reg = <2000 1000>; interrupt-parent = <&mpic>; interrupts = <12 2>; }; l2-cache-controller@20000 { compatible = "fsl,8540-l2-cache-controller"; reg = <20000 1000>; cache-line-size = <20>; // 32 bytes cache-size = <40000>; // L2, 256K interrupt-parent = <&mpic>; interrupts = <10 2>; }; i2c@3000 { #address-cells = <1>; #size-cells = <0>; device_type = "i2c"; compatible = "fsl-i2c"; reg = <3000 100>; interrupts = <2b 2>; interrupt-parent = <&mpic>; dfsrr; rtc@68 { compatible = "stm,m41t81"; reg = <68>; }; }; mdio@24520 { #address-cells = <1>; #size-cells = <0>; device_type = "mdio"; compatible = "gianfar"; reg = <24520 20>; phy0: ethernet-phy@0 { interrupt-parent = <&mpic>; interrupts = <5 1>; reg = <0>; device_type = "ethernet-phy"; }; phy1: ethernet-phy@1 { interrupt-parent = <&mpic>; interrupts = <5 1>; reg = <1>; device_type = "ethernet-phy"; }; phy3: ethernet-phy@3 { interrupt-parent = <&mpic>; interrupts = <7 1>; reg = <3>; device_type = "ethernet-phy"; }; }; ethernet@24000 { #address-cells = <1>; #size-cells = <0>; device_type = "network"; model = "TSEC"; compatible = "gianfar"; reg = <24000 1000>; /* * address is deprecated and will be removed * in 2.6.25. Only recent versions of * U-Boot support local-mac-address, however. */ address = [ 00 00 00 00 00 00 ]; local-mac-address = [ 00 00 00 00 00 00 ]; interrupts = <1d 2 1e 2 22 2>; interrupt-parent = <&mpic>; phy-handle = <&phy0>; }; ethernet@25000 { #address-cells = <1>; #size-cells = <0>; device_type = "network"; model = "TSEC"; compatible = "gianfar"; reg = <25000 1000>; /* * address is deprecated and will be removed * in 2.6.25. Only recent versions of * U-Boot support local-mac-address, however. */ address = [ 00 00 00 00 00 00 ]; local-mac-address = [ 00 00 00 00 00 00 ]; interrupts = <23 2 24 2 28 2>; interrupt-parent = <&mpic>; phy-handle = <&phy1>; }; ethernet@26000 { #address-cells = <1>; #size-cells = <0>; device_type = "network"; model = "FEC"; compatible = "gianfar"; reg = <26000 1000>; /* * address is deprecated and will be removed * in 2.6.25. Only recent versions of * U-Boot support local-mac-address, however. */ address = [ 00 00 00 00 00 00 ]; local-mac-address = [ 00 00 00 00 00 00 ]; interrupts = <29 2>; interrupt-parent = <&mpic>; phy-handle = <&phy3>; }; serial@4500 { device_type = "serial"; compatible = "ns16550"; reg = <4500 100>; // reg base, size clock-frequency = <0>; // should we fill in in uboot? /* interrupts = <2a 2>; */ interrupts = <1a 2>; interrupt-parent = <&mpic>; }; serial@4600 { device_type = "serial"; compatible = "ns16550"; reg = <4600 100>; // reg base, size clock-frequency = <0>; // should we fill in in uboot? /* interrupts = <2a 2>; */ interrupts = <1a 2>; interrupt-parent = <&mpic>; }; mpic: pic@40000 { clock-frequency = <0>; interrupt-controller; #address-cells = <0>; #interrupt-cells = <2>; reg = <40000 40000>; compatible = "chrp,open-pic"; device_type = "open-pic"; big-endian; }; }; pci@e0008000 { interrupt-map-mask = <f800 0 0 7>; interrupt-map = < /* IDSEL 0x02 */ 1000 0 0 1 &mpic 1 1 1000 0 0 2 &mpic 2 1 1000 0 0 3 &mpic 3 1 1000 0 0 4 &mpic 4 1 /* IDSEL 0x03 */ 1800 0 0 1 &mpic 4 1 1800 0 0 2 &mpic 1 1 1800 0 0 3 &mpic 2 1 1800 0 0 4 &mpic 3 1 /* IDSEL 0x04 */ 2000 0 0 1 &mpic 3 1 2000 0 0 2 &mpic 4 1 2000 0 0 3 &mpic 1 1 2000 0 0 4 &mpic 2 1 /* IDSEL 0x05 */ 2800 0 0 1 &mpic 2 1 2800 0 0 2 &mpic 3 1 2800 0 0 3 &mpic 4 1 2800 0 0 4 &mpic 1 1 /* IDSEL 0x0c */ 6000 0 0 1 &mpic 1 1 6000 0 0 2 &mpic 2 1 6000 0 0 3 &mpic 3 1 6000 0 0 4 &mpic 4 1 /* IDSEL 0x0d */ 6800 0 0 1 &mpic 4 1 6800 0 0 2 &mpic 1 1 6800 0 0 3 &mpic 2 1 6800 0 0 4 &mpic 3 1 /* IDSEL 0x0e */ 7000 0 0 1 &mpic 3 1 7000 0 0 2 &mpic 4 1 7000 0 0 3 &mpic 1 1 7000 0 0 4 &mpic 2 1 /* IDSEL 0x0f */ 7800 0 0 1 &mpic 2 1 7800 0 0 2 &mpic 3 1 7800 0 0 3 &mpic 4 1 7800 0 0 4 &mpic 1 1 /* IDSEL 0x12 */ 9000 0 0 1 &mpic 1 1 9000 0 0 2 &mpic 2 1 9000 0 0 3 &mpic 3 1 9000 0 0 4 &mpic 4 1 /* IDSEL 0x13 */ 9800 0 0 1 &mpic 4 1 9800 0 0 2 &mpic 1 1 9800 0 0 3 &mpic 2 1 9800 0 0 4 &mpic 3 1 /* IDSEL 0x14 */ a000 0 0 1 &mpic 3 1 a000 0 0 2 &mpic 4 1 a000 0 0 3 &mpic 1 1 a000 0 0 4 &mpic 2 1 /* IDSEL 0x15 */ a800 0 0 1 &mpic 2 1 a800 0 0 2 &mpic 3 1 a800 0 0 3 &mpic 4 1 a800 0 0 4 &mpic 1 1>; interrupt-parent = <&mpic>; /* interrupts number are coded in hexa ! */ /* interrupts = <18 2>; interrupts = <12 2 19 2 1a 2 1b 2 35 2 36 2 37 2>; */ interrupts = <35 2 36 2 37 2>; bus-range = <0 0>; ranges = <02000000 0 80000000 80000000 0 20000000 01000000 0 00000000 e2000000 0 00100000>; clock-frequency = <3f940aa>; #interrupt-cells = <1>; #size-cells = <2>; #address-cells = <3>; reg = <e0008000 1000>; compatible = "fsl,mpc8540-pcix", "fsl,mpc8540-pci"; device_type = "pci"; }; }; ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-04 9:10 ` Philippe De Muyter @ 2008-03-05 4:52 ` David Gibson 2008-03-05 5:01 ` Benjamin Herrenschmidt 1 sibling, 0 replies; 31+ messages in thread From: David Gibson @ 2008-03-05 4:52 UTC (permalink / raw) To: Philippe De Muyter; +Cc: Scott Wood, linuxppc-dev On Tue, Mar 04, 2008 at 10:10:59AM +0100, Philippe De Muyter wrote: > Hi Ben, > > On Tue, Mar 04, 2008 at 07:22:19PM +1100, Benjamin Herrenschmidt wrote: These comments aren't relevant to the problems you're seeing, but they're a good idea for writing device trees in general. First, you may want to consider moving to the version 1 dts format which uses C-style integer values throughout, instead of hex by default. [snip] > i2c@3000 { > #address-cells = <1>; > #size-cells = <0>; > device_type = "i2c"; device_type shouldn't be included here. > compatible = "fsl-i2c"; > reg = <3000 100>; > interrupts = <2b 2>; > interrupt-parent = <&mpic>; > dfsrr; > > rtc@68 { > compatible = "stm,m41t81"; > reg = <68>; > }; > }; > > mdio@24520 { > #address-cells = <1>; > #size-cells = <0>; > device_type = "mdio"; > compatible = "gianfar"; [snip] > ethernet@24000 { > #address-cells = <1>; > #size-cells = <0>; > device_type = "network"; > model = "TSEC"; > compatible = "gianfar"; The binding for gianfar mdio and ethernet devices has been updated to better fit conventions for use of device_type and compatible properties. Check booting-without-of.txt for the details. Can someone from freescale please go though and update the existing device trees, so that people stop copying the old crap. [snip] > ethernet@24000 { > #address-cells = <1>; > #size-cells = <0>; > device_type = "network"; > model = "TSEC"; > compatible = "gianfar"; > reg = <24000 1000>; > /* > * address is deprecated and will be removed > * in 2.6.25. Only recent versions of > * U-Boot support local-mac-address, however. > */ > address = [ 00 00 00 00 00 00 ]; And since this is a new port, you ought to be able to use a recent u-boot and drop this backwards compatibility property. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-04 9:10 ` Philippe De Muyter 2008-03-05 4:52 ` David Gibson @ 2008-03-05 5:01 ` Benjamin Herrenschmidt 2008-03-05 16:15 ` Philippe De Muyter 2008-03-05 16:32 ` Scott Wood 1 sibling, 2 replies; 31+ messages in thread From: Benjamin Herrenschmidt @ 2008-03-05 5:01 UTC (permalink / raw) To: Philippe De Muyter; +Cc: Scott Wood, linuxppc-dev > I also attach my current (not working) dts file attempt. It is actually > a modified mpc8540ads.dts file. > > I now thinks that the ide-cs (hda) discovery or not depends on the cold > or warm reboot. > > Here are the patches for my config (MEIP_8540) relative to a vanilla > linux-2.6.24. I hacked the MPC8540ADS config. The PCI4520 is the > multi-function chip from TI (dual-socket pc-card + iee1394 ohci and two-port > phy) .../... > +#ifdef CONFIG_MEIP_8540 > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), // External 0 : nINTPFO > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), // External 1 : nINTRTC > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), // External 2 : nINTPLD > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), // External 3 : nINTSTX > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), // External 4 : nINTPHY > +#if defined(CONFIG_PCI) > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 5 : PCI4520 MFUNC 0 */ > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 6 : PCI4520 MFUNC 1 */ > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 7 : PCI4520 MFUNC 2 */ > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 8 : PCI4520 MFUNC 3 */ > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 9 : PCI4520 MFUNC 4 */ > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 10 : PCI4520 MFUNC 5 */ > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 11 : PCI4520 MFUNC 6 */ > +#else > + 0x0, /* External 6: */ > + 0x0, /* External 7: */ > + 0x0, /* External 8: */ > + 0x0, /* External 9: */ > + 0x0, /* External 10: */ > + 0x0, /* External 11: */ > +#endif > +#else > 0x0, /* External 0: */ > #if defined(CONFIG_PCI) > (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 1: PCI slot 0 */ > @@ -77,6 +100,7 @@ > 0x0, /* External 9: */ > 0x0, /* External 10: */ > 0x0, /* External 11: */ > +#endif > }; Ok, so based on the above, I deduce that you have 12 external interrupt sources: 0...4 are those nINT* things. They correspond apparently do discrete devices on your board. You will have to create device nodes in your .dts for these with the appropriate interrupts property for each of these. The rest are ... hrm... weird. You -appear- to have 5 to 8 going to PCI, to PIRQA...D. Do that mean that you have wired your connectors on the board such that the interrupt does not depend on the actual slot number ? Or are you doing some swizzling ? Also, I would need to know how those external IRQs are connected to the MPIC, I don't have the spec of that chip here. Hrm. Somebody from freescale can help him here ? It's also not clear to me what your interrupts 9 10 and 11 are since you seem to only talk about PIRQA...D which is only 4 lines .. So at this stage, that's not enough information. We need to know exactly how you have wired things on your board, and somebody from fsl needs to tell me how the ExtIrq are routed to the MPIC on that guy. Once that's done, you seem to have grasped the interrupt map... for any device or slot, you provide the mapping between idsel/pirq line on one side, and mpic interrupt & sense on the other. For PCI, sense is always 1 for an mpic so you mostly have to check your actual MPIC source numbers. >From your .dts, I see you've been doing some swizzling of slots using interrupts 1...4 ... do that correspond to EXTIRQ 5....8 ? Ben. > > /* ************************************************************************ */ > --- ./arch/ppc/platforms/85xx/mpc85xx_ads_common.hbk 2008-01-24 22:58:37.000000000 +0000 > +++ ./arch/ppc/platforms/85xx/mpc85xx_ads_common.h 2008-02-20 16:36:07.000000000 +0000 > @@ -29,10 +29,17 @@ > extern void mpc85xx_ads_map_io(void) __init; > > /* PCI interrupt controller */ > +#ifdef CONFIG_MEIP_8540 > +#define PIRQA MPC85xx_IRQ_EXT5 > +#define PIRQB MPC85xx_IRQ_EXT6 > +#define PIRQC MPC85xx_IRQ_EXT7 > +#define PIRQD MPC85xx_IRQ_EXT8 > +#else > #define PIRQA MPC85xx_IRQ_EXT1 > #define PIRQB MPC85xx_IRQ_EXT2 > #define PIRQC MPC85xx_IRQ_EXT3 > #define PIRQD MPC85xx_IRQ_EXT4 > +#endif > > #define MPC85XX_PCI1_LOWER_IO 0x00000000 > #define MPC85XX_PCI1_UPPER_IO 0x00ffffff ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-05 5:01 ` Benjamin Herrenschmidt @ 2008-03-05 16:15 ` Philippe De Muyter 2008-03-05 20:14 ` Benjamin Herrenschmidt 2008-03-05 16:32 ` Scott Wood 1 sibling, 1 reply; 31+ messages in thread From: Philippe De Muyter @ 2008-03-05 16:15 UTC (permalink / raw) To: Benjamin Herrenschmidt; +Cc: Scott Wood, linuxppc-dev Hi Ben, thanks for all the answers, On Wed, Mar 05, 2008 at 04:01:04PM +1100, Benjamin Herrenschmidt wrote: > > > I also attach my current (not working) dts file attempt. It is actually > > a modified mpc8540ads.dts file. > > > > I now thinks that the ide-cs (hda) discovery or not depends on the cold > > or warm reboot. > > > > Here are the patches for my config (MEIP_8540) relative to a vanilla > > linux-2.6.24. I hacked the MPC8540ADS config. The PCI4520 is the > > multi-function chip from TI (dual-socket pc-card + iee1394 ohci and two-port > > phy) > > .../... > > > +#ifdef CONFIG_MEIP_8540 > > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), // External 0 : nINTPFO > > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), // External 1 : nINTRTC > > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), // External 2 : nINTPLD > > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), // External 3 : nINTSTX > > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), // External 4 : nINTPHY > > +#if defined(CONFIG_PCI) > > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 5 : PCI4520 MFUNC 0 */ > > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 6 : PCI4520 MFUNC 1 */ > > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 7 : PCI4520 MFUNC 2 */ > > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 8 : PCI4520 MFUNC 3 */ > > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 9 : PCI4520 MFUNC 4 */ > > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 10 : PCI4520 MFUNC 5 */ > > + (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 11 : PCI4520 MFUNC 6 */ > > +#else > > + 0x0, /* External 6: */ > > + 0x0, /* External 7: */ > > + 0x0, /* External 8: */ > > + 0x0, /* External 9: */ > > + 0x0, /* External 10: */ > > + 0x0, /* External 11: */ > > +#endif > > +#else > > 0x0, /* External 0: */ > > #if defined(CONFIG_PCI) > > (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* External 1: PCI slot 0 */ > > @@ -77,6 +100,7 @@ > > 0x0, /* External 9: */ > > 0x0, /* External 10: */ > > 0x0, /* External 11: */ > > +#endif > > }; > > Ok, so based on the above, I deduce that you have 12 external interrupt > sources: > > 0...4 are those nINT* things. They correspond apparently do discrete > devices on your board. You will have to create device nodes in your .dts > for these with the appropriate interrupts property for each of these. > > The rest are ... hrm... weird. You -appear- to have 5 to 8 going to PCI, > to PIRQA...D. Do that mean that you have wired your connectors on the board > such that the interrupt does not depend on the actual slot number ? I asked the guy who designed the hardware, and if I understand correctly : - the i/o and memory resources of the pci device are connected to the pci bus - the interrupts are directly connected to the MPIC Can I describe that in the dts file ? Philippe > > Or are you doing some swizzling ? > > Also, I would need to know how those external IRQs are connected to the MPIC, > I don't have the spec of that chip here. Hrm. Somebody from freescale can > help him here ? > > It's also not clear to me what your interrupts 9 10 and 11 are since you > seem to only talk about PIRQA...D which is only 4 lines .. > > So at this stage, that's not enough information. We need to know exactly how > you have wired things on your board, and somebody from fsl needs to tell > me how the ExtIrq are routed to the MPIC on that guy. > > Once that's done, you seem to have grasped the interrupt map... for any > device or slot, you provide the mapping between idsel/pirq line on one side, > and mpic interrupt & sense on the other. For PCI, sense is always 1 for an > mpic so you mostly have to check your actual MPIC source numbers. > > >From your .dts, I see you've been doing some swizzling of slots using > interrupts 1...4 ... do that correspond to EXTIRQ 5....8 ? > > Ben. > > > > > /* ************************************************************************ */ > > --- ./arch/ppc/platforms/85xx/mpc85xx_ads_common.hbk 2008-01-24 22:58:37.000000000 +0000 > > +++ ./arch/ppc/platforms/85xx/mpc85xx_ads_common.h 2008-02-20 16:36:07.000000000 +0000 > > @@ -29,10 +29,17 @@ > > extern void mpc85xx_ads_map_io(void) __init; > > > > /* PCI interrupt controller */ > > +#ifdef CONFIG_MEIP_8540 > > +#define PIRQA MPC85xx_IRQ_EXT5 > > +#define PIRQB MPC85xx_IRQ_EXT6 > > +#define PIRQC MPC85xx_IRQ_EXT7 > > +#define PIRQD MPC85xx_IRQ_EXT8 > > +#else > > #define PIRQA MPC85xx_IRQ_EXT1 > > #define PIRQB MPC85xx_IRQ_EXT2 > > #define PIRQC MPC85xx_IRQ_EXT3 > > #define PIRQD MPC85xx_IRQ_EXT4 > > +#endif > > > > #define MPC85XX_PCI1_LOWER_IO 0x00000000 > > #define MPC85XX_PCI1_UPPER_IO 0x00ffffff ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-05 16:15 ` Philippe De Muyter @ 2008-03-05 20:14 ` Benjamin Herrenschmidt 2008-03-05 23:34 ` Philippe De Muyter 0 siblings, 1 reply; 31+ messages in thread From: Benjamin Herrenschmidt @ 2008-03-05 20:14 UTC (permalink / raw) To: Philippe De Muyter; +Cc: Scott Wood, linuxppc-dev On Wed, 2008-03-05 at 17:15 +0100, Philippe De Muyter wrote: > > I asked the guy who designed the hardware, and if I understand > correctly : > > - the i/o and memory resources of the pci device are connected to the > pci bus > - the interrupts are directly connected to the MPIC > > Can I describe that in the dts file ? Sure, you can describe pretty much any interrupt routing, provided that we know -how- (ie. where) they are connected. We also need to know the idsel of the devices. (The later we can deduce from lspci done in arch/ppc). Ben. > Philippe > > > > > Or are you doing some swizzling ? > > > > Also, I would need to know how those external IRQs are connected to > the MPIC, > > I don't have the spec of that chip here. Hrm. Somebody from > freescale can > > help him here ? > > > > It's also not clear to me what your interrupts 9 10 and 11 are since > you > > seem to only talk about PIRQA...D which is only 4 lines .. > > > > So at this stage, that's not enough information. We need to know > exactly how > > you have wired things on your board, and somebody from fsl needs to > tell > > me how the ExtIrq are routed to the MPIC on that guy. > > > > Once that's done, you seem to have grasped the interrupt map... for > any > > device or slot, you provide the mapping between idsel/pirq line on > one side, > > and mpic interrupt & sense on the other. For PCI, sense is always 1 > for an > > mpic so you mostly have to check your actual MPIC source numbers. > > > > >From your .dts, I see you've been doing some swizzling of slots > using > > interrupts 1...4 ... do that correspond to EXTIRQ 5....8 ? > > > > Ben. > > > > > > > > /* > ************************************************************************ */ > > > > --- ./arch/ppc/platforms/85xx/mpc85xx_ads_common.hbk 2008-01-24 > 22:58:37.000000000 +0000 > > > +++ ./arch/ppc/platforms/85xx/mpc85xx_ads_common.h 2008-02-20 > 16:36:07.000000000 +0000 > > > @@ -29,10 +29,17 @@ > > > extern void mpc85xx_ads_map_io(void) __init; > > > > > > /* PCI interrupt controller */ > > > +#ifdef CONFIG_MEIP_8540 > > > +#define PIRQA MPC85xx_IRQ_EXT5 > > > +#define PIRQB MPC85xx_IRQ_EXT6 > > > +#define PIRQC MPC85xx_IRQ_EXT7 > > > +#define PIRQD MPC85xx_IRQ_EXT8 > > > +#else > > > #define PIRQA MPC85xx_IRQ_EXT1 > > > #define PIRQB MPC85xx_IRQ_EXT2 > > > #define PIRQC MPC85xx_IRQ_EXT3 > > > #define PIRQD MPC85xx_IRQ_EXT4 > > > +#endif > > > > > > #define MPC85XX_PCI1_LOWER_IO 0x00000000 > > > #define MPC85XX_PCI1_UPPER_IO 0x00ffffff > ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-05 20:14 ` Benjamin Herrenschmidt @ 2008-03-05 23:34 ` Philippe De Muyter 0 siblings, 0 replies; 31+ messages in thread From: Philippe De Muyter @ 2008-03-05 23:34 UTC (permalink / raw) To: Benjamin Herrenschmidt; +Cc: Scott Wood, linuxppc-dev Hi Ben, On Thu, Mar 06, 2008 at 07:14:28AM +1100, Benjamin Herrenschmidt wrote: > > On Wed, 2008-03-05 at 17:15 +0100, Philippe De Muyter wrote: > > > > I asked the guy who designed the hardware, and if I understand > > correctly : > > > > - the i/o and memory resources of the pci device are connected to the > > pci bus > > - the interrupts are directly connected to the MPIC > > > > Can I describe that in the dts file ? > > Sure, you can describe pretty much any interrupt routing, provided that > we know -how- (ie. where) they are connected. We also need to know the They are connected directly to the pic-part of the mpc8540 just as described in the .c file in the other mail. > idsel of the devices. (The later we can deduce from lspci done in > arch/ppc). Does this (boot error messages in the not-working arch/powerpc kernel) : PCI: Cannot allocate resource region 0 of device 0000:00:12.0 PCI: Cannot allocate resource region 0 of device 0000:00:12.1 PCI: Cannot allocate resource region 0 of device 0000:00:12.2 PCI: Cannot allocate resource region 1 of device 0000:00:12.2 or this (/proc/bus/pci in the working arch/pcc kernel) Sorry, I am at home now and cannot access my board :) or this (boot info messages from working arch/pcc kernel) : ohci1394: fw-host0: OHCI-1394 1.1 (PCI): IRQ=[55] MMIO=[9f7fd800-9f7fdfff] Max Packet=[2048] IR/IT contexts=[4/8] ... Yenta: CardBus bridge found at 0000:00:12.0 [0000:0000] ... Yenta TI: socket 0000:00:12.0, mfunc 0x00001b00, devctl 0x66 Yenta TI: socket 0000:00:12.0 probing PCI interrupt failed, trying to fix Yenta TI: socket 0000:00:12.0 falling back to parallel PCI interrupts Yenta TI: socket 0000:00:12.0 parallel PCI interrupts ok Yenta: ISA IRQ mask 0x0000, PCI irq 53 ... pccard: PCMCIA card inserted into slot 0 cs: memory probe 0x80000000-0x9fffffff: excluding 0x80000000-0x807fffff 0x9f000000-0x9fffffff pcmcia: registering new device pcmcia0.0 Yenta TI: socket 0000:00:12.1 parallel PCI interrupts ok Yenta: ISA IRQ mask 0x0000, PCI irq 54 Socket status: 30000086 or this (U-boot info message) : PCI Scan: Found Bus 0, Device 18, Function 0 00 12 104c ac46 0607 ff PCI Scan: Found Bus 0, Device 18, Function 1 00 12 104c ac46 0607 ff PCI Scan: Found Bus 0, Device 18, Function 2 00 12 104c 802a 0c00 00 and this (/proc/interrupts on a working system) CPU0 25: 0 OpenPIC Level gfar_interrupt 26: 245 OpenPIC Level serial 27: 0 OpenPIC Level i2c-mpc 53: 18797 OpenPIC Level yenta, ide0 54: 1 OpenPIC Level yenta 55: 79 OpenPIC Level ohci1394 BAD: 0 help ? Philippe > > > > > > Or are you doing some swizzling ? > > > > > > Also, I would need to know how those external IRQs are connected to > > the MPIC, > > > I don't have the spec of that chip here. Hrm. Somebody from > > freescale can > > > help him here ? > > > > > > It's also not clear to me what your interrupts 9 10 and 11 are since > > you > > > seem to only talk about PIRQA...D which is only 4 lines .. > > > > > > So at this stage, that's not enough information. We need to know > > exactly how > > > you have wired things on your board, and somebody from fsl needs to > > tell > > > me how the ExtIrq are routed to the MPIC on that guy. > > > > > > Once that's done, you seem to have grasped the interrupt map... for > > any > > > device or slot, you provide the mapping between idsel/pirq line on > > one side, > > > and mpic interrupt & sense on the other. For PCI, sense is always 1 > > for an > > > mpic so you mostly have to check your actual MPIC source numbers. > > > > > > >From your .dts, I see you've been doing some swizzling of slots > > using > > > interrupts 1...4 ... do that correspond to EXTIRQ 5....8 ? > > > > > > Ben. > > > > > > > > > > > /* > > ************************************************************************ */ > > > > > > --- ./arch/ppc/platforms/85xx/mpc85xx_ads_common.hbk 2008-01-24 > > 22:58:37.000000000 +0000 > > > > +++ ./arch/ppc/platforms/85xx/mpc85xx_ads_common.h 2008-02-20 > > 16:36:07.000000000 +0000 > > > > @@ -29,10 +29,17 @@ > > > > extern void mpc85xx_ads_map_io(void) __init; > > > > > > > > /* PCI interrupt controller */ > > > > +#ifdef CONFIG_MEIP_8540 > > > > +#define PIRQA MPC85xx_IRQ_EXT5 > > > > +#define PIRQB MPC85xx_IRQ_EXT6 > > > > +#define PIRQC MPC85xx_IRQ_EXT7 > > > > +#define PIRQD MPC85xx_IRQ_EXT8 > > > > +#else > > > > #define PIRQA MPC85xx_IRQ_EXT1 > > > > #define PIRQB MPC85xx_IRQ_EXT2 > > > > #define PIRQC MPC85xx_IRQ_EXT3 > > > > #define PIRQD MPC85xx_IRQ_EXT4 > > > > +#endif > > > > > > > > #define MPC85XX_PCI1_LOWER_IO 0x00000000 > > > > #define MPC85XX_PCI1_UPPER_IO 0x00ffffff > > ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-05 5:01 ` Benjamin Herrenschmidt 2008-03-05 16:15 ` Philippe De Muyter @ 2008-03-05 16:32 ` Scott Wood 2008-03-05 23:46 ` Benjamin Herrenschmidt 1 sibling, 1 reply; 31+ messages in thread From: Scott Wood @ 2008-03-05 16:32 UTC (permalink / raw) To: benh; +Cc: linuxppc-dev, Philippe De Muyter Benjamin Herrenschmidt wrote: > So at this stage, that's not enough information. We need to know exactly how > you have wired things on your board, and somebody from fsl needs to tell > me how the ExtIrq are routed to the MPIC on that guy. This part's easy -- the external IRQ is used as the mpic interrupt number as-is (internal IRQs start at 16). > Once that's done, you seem to have grasped the interrupt map... for any > device or slot, you provide the mapping between idsel/pirq line on one side, > and mpic interrupt & sense on the other. For PCI, sense is always 1 for an > mpic so you mostly have to check your actual MPIC source numbers. > >>From your .dts, I see you've been doing some swizzling of slots using > interrupts 1...4 ... do that correspond to EXTIRQ 5....8 ? No, those correspond to the EXT1-4 that are the other side of the #ifdef for this board in arch/ppc. :-) -Scott ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-05 16:32 ` Scott Wood @ 2008-03-05 23:46 ` Benjamin Herrenschmidt 2008-03-07 0:10 ` Philippe De Muyter 0 siblings, 1 reply; 31+ messages in thread From: Benjamin Herrenschmidt @ 2008-03-05 23:46 UTC (permalink / raw) To: Scott Wood; +Cc: linuxppc-dev, Philippe De Muyter > >>From your .dts, I see you've been doing some swizzling of slots using > > interrupts 1...4 ... do that correspond to EXTIRQ 5....8 ? > > No, those correspond to the EXT1-4 that are the other side of the #ifdef > for this board in arch/ppc. :-) Yes, that's what I was thinking. So that's what he got wrong in his .dts. Philippe, you need to fix those numbers so they map your EXTIRQ. (that is 1 -> 5, 2 -> 6, etc... ) And of course you need to make sure you have the right routing to the chip. it's funny the way you keep providing all sort of info but -never- the one we actually asked for :-) We basically, to help you, need to know for each PCI device connected to the SoC, or PCI slot if you have such, which address line is used for IDSEL, and to which MPIC interrupt inputs. Once you have given us that, we'll be able to help. It appears that just looking at the arch/ppc code is a bit too messy and confusing (and not necessarily right). In addition, you will also need to do proper interrupt routing for you other devices (RTC, etc...) but we can look at that separately. Ben. ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-05 23:46 ` Benjamin Herrenschmidt @ 2008-03-07 0:10 ` Philippe De Muyter 2008-03-07 0:19 ` Benjamin Herrenschmidt 0 siblings, 1 reply; 31+ messages in thread From: Philippe De Muyter @ 2008-03-07 0:10 UTC (permalink / raw) To: Benjamin Herrenschmidt; +Cc: Scott Wood, linuxppc-dev Hi Ben, On Thu, Mar 06, 2008 at 10:46:51AM +1100, Benjamin Herrenschmidt wrote: > > > >>From your .dts, I see you've been doing some swizzling of slots using > > > interrupts 1...4 ... do that correspond to EXTIRQ 5....8 ? > > > > No, those correspond to the EXT1-4 that are the other side of the #ifdef > > for this board in arch/ppc. :-) > > Yes, that's what I was thinking. So that's what he got wrong in > his .dts. > > Philippe, you need to fix those numbers so they map your EXTIRQ. > > (that is 1 -> 5, 2 -> 6, etc... ) > > And of course you need to make sure you have the right routing to the > chip. it's funny the way you keep providing all sort of info but -never- > the one we actually asked for :-) I did not have that. The board has been designed, and the original linux port has been made, by a third-party, and the documentation is scarce :( > > We basically, to help you, need to know for each PCI device connected to > the SoC, or PCI slot if you have such, which address line is used for > IDSEL, and to which MPIC interrupt inputs. Well, i have finally an answer for IDSEL : it is connected to AD18 (18 is decimal), but we knew that actually, because the chip appears as 0000:00:12.0, 0000:00:12.1 and 0000:00:12.2 in the kernel messages. The pci4520 chip does not have pins labelled inta, intb, intc, or intd, but pins labelled mfunc0, mfunc1 ... mfunc6. The pci4520 datasheet does not seem very clear to me about the relation between the mfunc0..6 pins and the inta..d interrupts :( Luckily, the running linux kernel shows in /proc/interrupts : 55: 18797 OpenPIC Level yenta, ide0 54: 1 OpenPIC Level yenta 55: 79 OpenPIC Level ohci1394 I can thus deduce that each function of the pci4520 chip uses only one interrupt line. With the kernel messages at startup, I also know that the two yenta's are 12.0 and 12.1 and the ohci1394 is 12.2. I wrote then the following in my dts file : pci@e0008000 { /* f800 masks idsel address line 07 masks (sub)function number 7 masks INTA, INTB, INTC or INTD */ interrupt-map-mask = <ff00 0 0 7>; interrupt-map = < /* IDSEL 0x12 func 0 */ 9000 0 0 1 &mpic 5 1 9000 0 0 2 &mpic 5 1 9000 0 0 3 &mpic 5 1 9000 0 0 4 &mpic 5 1 /* IDSEL 0x12 func 1 */ 9100 0 0 1 &mpic 6 1 9100 0 0 2 &mpic 6 1 9100 0 0 3 &mpic 6 1 9100 0 0 4 &mpic 6 1 /* IDSEL 0x12 func 2 */ 9200 0 0 1 &mpic 7 1 9200 0 0 2 &mpic 7 1 9200 0 0 3 &mpic 7 1 9200 0 0 4 &mpic 7 1 >; And it works :) : my board boots and finds its compact-flash disk. When writing this, I realize I may simplify my interrupt-map and write only one config line per function, thus : interrupt-map-mask = <ff00 0 0 0>; interrupt-map = < /* IDSEL 0x12 func 0 */ 9000 0 0 0 &mpic 5 1 /* IDSEL 0x12 func 1 */ 9100 0 0 0 &mpic 6 1 /* IDSEL 0x12 func 2 */ 9200 0 0 0 &mpic 7 1 >; Maybe you should explain in booting_without_of.txt the relation between the idsel and the pci device notation used by lspci or the kernel, and also document the "function" part ? > > Once you have given us that, we'll be able to help. > > It appears that just looking at the arch/ppc code is a bit too messy and > confusing (and not necessarily right). > > In addition, you will also need to do proper interrupt routing for you > other devices (RTC, etc...) but we can look at that separately. That's for tomorrow. But I already noticed that the interrupt numbers that the arch/powerpc tree uses for the parts that do already work (compact-flash and serials) are different from the ones I saw on the running arch/ppc tree. e.g., the serial lines used irq 26 with the arch/ppc tree and now use 42 with the powerpc tree. For the pci4520, irqs changed from 53, 54 and 55 in the arch/ppc kernel to 17, 18 and 19 with the arch/powerpc kernel. That's a little bit confusing. There must be something hidden in the sources of the openpic driver to explain that difference. Could it be fixed by a setting in the dts-file ? Thanks for you help Philippe ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-07 0:10 ` Philippe De Muyter @ 2008-03-07 0:19 ` Benjamin Herrenschmidt 2008-03-09 22:31 ` Philippe De Muyter 0 siblings, 1 reply; 31+ messages in thread From: Benjamin Herrenschmidt @ 2008-03-07 0:19 UTC (permalink / raw) To: Philippe De Muyter; +Cc: Scott Wood, linuxppc-dev On Fri, 2008-03-07 at 01:10 +0100, Philippe De Muyter wrote: > > But I already noticed that the interrupt numbers that the arch/powerpc tree > uses for the parts that do already work (compact-flash and serials) are > different from the ones I saw on the running arch/ppc tree. e.g., > the serial lines used irq 26 with the arch/ppc tree and now use 42 with > the powerpc tree. For the pci4520, irqs changed from 53, 54 and 55 in the > arch/ppc kernel to 17, 18 and 19 with the arch/powerpc kernel. > That's a little bit confusing. > > There must be something hidden in the sources of the openpic driver to > explain that difference. Could it be fixed by a setting in the dts-file ? The interrupt numbers that you see in /proc/interrupts and that drivers see are "virtual". They have no direct relationship to the hardware interrupt lines (well, the kernel attempts sometimes at keeping them the same but not always). Basially, when the kernel establishes interrupt routing when probing devices, it gets dynamically assigned numbers and that's what drivers and /proc/interrupts will see, and internally "binds" them to a given HW source on a given interrupt controller. This is done for several reasons, the main ones being that we have to routinely deal with multiple controllers each having it's own hardware number space, some systems have very large HW interrupt numbers not suitable for the irq_desc array, and we reserve virtual numbers 0 as always invalid and 1...15 for an ISA-type 8259 controller to avoid problems with x86-oirignated legacy junk that tries to hard code those numbers. There's an compile option to see the mapping between virtual numbers and HW numbers in debugfs, try enabling debugfs, CONFIG_VIRQ_DEBUG, and mount debugfs somewhere. You'll see a powerpc/virq_mapping file in there with the mapping. Ben. ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-07 0:19 ` Benjamin Herrenschmidt @ 2008-03-09 22:31 ` Philippe De Muyter 2008-03-09 22:36 ` Benjamin Herrenschmidt 2008-03-11 0:32 ` David Gibson 0 siblings, 2 replies; 31+ messages in thread From: Philippe De Muyter @ 2008-03-09 22:31 UTC (permalink / raw) To: Benjamin Herrenschmidt; +Cc: Scott Wood, linuxppc-dev Hi Ben, I now have a working linux on my mpc8540 based board, with support for the compactflash disk and the i2c rtc. The network tough, does not work yet. altough the the integrated ethernet controller (FEC) seems to be recognized. Could it be a problem with the phy ? I notice that I do not have an entry for gfar_interrupt in /proc/interrupts on my ethernet-missing linux, while I have one ont the working arch/ppc linux ? Do I need to give the phy type in the dts file, and how ? I would also like to know if it is possible to still get in linux the mac address known by uboot when using a dts file, and how ? Thanks for listening. Philippe ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-09 22:31 ` Philippe De Muyter @ 2008-03-09 22:36 ` Benjamin Herrenschmidt 2008-03-11 0:32 ` David Gibson 1 sibling, 0 replies; 31+ messages in thread From: Benjamin Herrenschmidt @ 2008-03-09 22:36 UTC (permalink / raw) To: Philippe De Muyter; +Cc: Scott Wood, linuxppc-dev On Sun, 2008-03-09 at 23:31 +0100, Philippe De Muyter wrote: > Hi Ben, > > I now have a working linux on my mpc8540 based board, with support for > the compactflash disk and the i2c rtc. > > The network tough, does not work yet. altough the the integrated ethernet > controller (FEC) seems to be recognized. Could it be a problem with the phy ? > I notice that I do not have an entry for gfar_interrupt in /proc/interrupts > on my ethernet-missing linux, while I have one ont the working arch/ppc linux ? > Do I need to give the phy type in the dts file, and how ? > > I would also like to know if it is possible to still get in linux the mac > address known by uboot when using a dts file, and how ? I'll let the freescale people answer here as I don't know the gianfar driver at all. Ben. ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-09 22:31 ` Philippe De Muyter 2008-03-09 22:36 ` Benjamin Herrenschmidt @ 2008-03-11 0:32 ` David Gibson 2008-03-11 11:46 ` Philippe De Muyter 1 sibling, 1 reply; 31+ messages in thread From: David Gibson @ 2008-03-11 0:32 UTC (permalink / raw) To: Philippe De Muyter; +Cc: Scott Wood, linuxppc-dev On Sun, Mar 09, 2008 at 11:31:09PM +0100, Philippe De Muyter wrote: > Hi Ben, > > I now have a working linux on my mpc8540 based board, with support for > the compactflash disk and the i2c rtc. > > The network tough, does not work yet. altough the the integrated ethernet > controller (FEC) seems to be recognized. Could it be a problem with the phy ? > I notice that I do not have an entry for gfar_interrupt in /proc/interrupts > on my ethernet-missing linux, while I have one ont the working arch/ppc linux ? > Do I need to give the phy type in the dts file, and how ? > > I would also like to know if it is possible to still get in linux the mac > address known by uboot when using a dts file, and how ? This chiefly depends on whether you're using an old u-boot that doesn't know about the device tree, or a new u-boot which itself supplies a device tree to the kernel. If the old u-boot, you'll need to write a bootwrapper for your platform which reads the bd_t and pokes the right mac addresses into the device tree. If the new u-boot, u-boot itself should put the address into the device tree. If it's not, why it's not is a u-boot question rather than a device tree question. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-11 0:32 ` David Gibson @ 2008-03-11 11:46 ` Philippe De Muyter 2008-03-11 22:42 ` David Gibson 2008-05-06 22:54 ` Andy Fleming 0 siblings, 2 replies; 31+ messages in thread From: Philippe De Muyter @ 2008-03-11 11:46 UTC (permalink / raw) To: Benjamin Herrenschmidt, Scott Wood, linuxppc-dev Hi David, On Tue, Mar 11, 2008 at 11:32:49AM +1100, David Gibson wrote: > On Sun, Mar 09, 2008 at 11:31:09PM +0100, Philippe De Muyter wrote: > > Hi Ben, > > > > I now have a working linux on my mpc8540 based board, with support for > > the compactflash disk and the i2c rtc. > > > > The network tough, does not work yet. altough the the integrated ethernet > > controller (FEC) seems to be recognized. Could it be a problem with the phy ? > > I notice that I do not have an entry for gfar_interrupt in /proc/interrupts > > on my ethernet-missing linux, while I have one ont the working arch/ppc linux ? > > Do I need to give the phy type in the dts file, and how ? > > > > I would also like to know if it is possible to still get in linux the mac > > address known by uboot when using a dts file, and how ? > > This chiefly depends on whether you're using an old u-boot that > doesn't know about the device tree, or a new u-boot which itself > supplies a device tree to the kernel. > > If the old u-boot, you'll need to write a bootwrapper for your > platform which reads the bd_t and pokes the right mac addresses into > the device tree. > > If the new u-boot, u-boot itself should put the address into the > device tree. If it's not, why it's not is a u-boot question rather > than a device tree question. OK :( Now back to the first an bigger problem : currently, I have an "old" U-boot and I have written myself a dts file. Problem is : ethernet does not work, but that's not a mac-address problem, but something else that I do not understand yet. The symptom is I get ip route add default via 192.168.85.33 dev eth0 RTNETLINK answers: Network is unreachable I surmise this is because my eth0 does not become up, and I surmise again this is because there is no driver selected to drive the phy. In my arch/ppc setup this was automagically handled by fixed@100:1 IIRC Is there something I can put in my dts file to activate a driver for my phy ? Best regards Philippe ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-11 11:46 ` Philippe De Muyter @ 2008-03-11 22:42 ` David Gibson 2008-05-06 22:54 ` Andy Fleming 1 sibling, 0 replies; 31+ messages in thread From: David Gibson @ 2008-03-11 22:42 UTC (permalink / raw) To: Philippe De Muyter; +Cc: Scott Wood, linuxppc-dev On Tue, Mar 11, 2008 at 12:46:02PM +0100, Philippe De Muyter wrote: > Hi David, > > On Tue, Mar 11, 2008 at 11:32:49AM +1100, David Gibson wrote: > > On Sun, Mar 09, 2008 at 11:31:09PM +0100, Philippe De Muyter wrote: > > > Hi Ben, > > > > > > I now have a working linux on my mpc8540 based board, with support for > > > the compactflash disk and the i2c rtc. > > > > > > The network tough, does not work yet. altough the the integrated ethernet > > > controller (FEC) seems to be recognized. Could it be a problem with the phy ? > > > I notice that I do not have an entry for gfar_interrupt in /proc/interrupts > > > on my ethernet-missing linux, while I have one ont the working arch/ppc linux ? > > > Do I need to give the phy type in the dts file, and how ? > > > > > > I would also like to know if it is possible to still get in linux the mac > > > address known by uboot when using a dts file, and how ? > > > > This chiefly depends on whether you're using an old u-boot that > > doesn't know about the device tree, or a new u-boot which itself > > supplies a device tree to the kernel. > > > > If the old u-boot, you'll need to write a bootwrapper for your > > platform which reads the bd_t and pokes the right mac addresses into > > the device tree. > > > > If the new u-boot, u-boot itself should put the address into the > > device tree. If it's not, why it's not is a u-boot question rather > > than a device tree question. > > OK :( > > Now back to the first an bigger problem : > currently, I have an "old" U-boot and I have written myself a dts file. > > Problem is : ethernet does not work, but that's not a mac-address problem, > but something else that I do not understand yet. The symptom is I get > > ip route add default via 192.168.85.33 dev eth0 > RTNETLINK answers: Network is unreachable > > I surmise this is because my eth0 does not become up, and I surmise > again this is because there is no driver selected to drive the phy. > > In my arch/ppc setup this was automagically handled by fixed@100:1 IIRC > > Is there something I can put in my dts file to activate a driver for > my phy ? Probably, but how phy selection works is dependent on the ethernet driver, so I can't help you. You'll need someone familiar with the driver in question (or read the code and figure it out). -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-11 11:46 ` Philippe De Muyter 2008-03-11 22:42 ` David Gibson @ 2008-05-06 22:54 ` Andy Fleming 2008-05-07 7:50 ` Philippe De Muyter 1 sibling, 1 reply; 31+ messages in thread From: Andy Fleming @ 2008-05-06 22:54 UTC (permalink / raw) To: Philippe De Muyter; +Cc: Scott Wood, linuxppc-dev > Now back to the first an bigger problem : > currently, I have an "old" U-boot and I have written myself a dts > file. > > Problem is : ethernet does not work, but that's not a mac-address > problem, > but something else that I do not understand yet. The symptom is I get > > ip route add default via 192.168.85.33 dev eth0 > RTNETLINK answers: Network is unreachable > > I surmise this is because my eth0 does not become up, and I surmise > again this is because there is no driver selected to drive the phy. > > In my arch/ppc setup this was automagically handled by fixed@100:1 > IIRC > > Is there something I can put in my dts file to activate a driver for > my phy ? > > Best regards This slipped under my radar, and I'm only just now finding it again. Have your issues been resolved? If not, could you send a bit more of the boot log? There should be a little more if the PHY was not found. If you were operating with a fixed PHY setup before, then the generic PHY driver (which will automatically bind to your PHY) should suffice unless your MDIO bus is broken. Andy ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-05-06 22:54 ` Andy Fleming @ 2008-05-07 7:50 ` Philippe De Muyter 2008-05-07 7:54 ` Stephen Rothwell 0 siblings, 1 reply; 31+ messages in thread From: Philippe De Muyter @ 2008-05-07 7:50 UTC (permalink / raw) To: Andy Fleming; +Cc: Scott Wood, linuxppc-dev [-- Attachment #1: Type: text/plain, Size: 1687 bytes --] Hi Andy, On Tue, May 06, 2008 at 05:54:02PM -0500, Andy Fleming wrote: >> Now back to the first an bigger problem : >> currently, I have an "old" U-boot and I have written myself a dts file. >> >> Problem is : ethernet does not work, but that's not a mac-address problem, >> but something else that I do not understand yet. The symptom is I get >> >> ip route add default via 192.168.85.33 dev eth0 >> RTNETLINK answers: Network is unreachable >> >> I surmise this is because my eth0 does not become up, and I surmise >> again this is because there is no driver selected to drive the phy. >> >> In my arch/ppc setup this was automagically handled by fixed@100:1 IIRC >> >> Is there something I can put in my dts file to activate a driver for my >> phy ? >> >> Best regards > > This slipped under my radar, and I'm only just now finding it again. Have > your issues been resolved? This has actually not been resolved as such, but we use now the newest U-boot version which is dtb-aware, and linux-2.6.25-rc6, and that together fixes the ethernet problem. > If not, could you send a bit more of the boot > log? There should be a little more if the PHY was not found. If you were > operating with a fixed PHY setup before, then the generic PHY driver (which > will automatically bind to your PHY) should suffice unless your MDIO bus is > broken. > > Andy Of course, the dts file also has changed, because it is now filled by U-boot. I have attached it here for info. Thanks Philippe PS: What's the recommended way to make a powerpc patch (e.g. my defconfig) appear in the official kernel sources ? Should I send it to linuxppc-dev@ozlabs.org, lkml or somewhere else ? [-- Attachment #2: macq_image_processor.dts --] [-- Type: text/plain, Size: 4814 bytes --] /* * MPC8540 ADS Device Tree Source - Modified by DEVELTECH for MACQ_IMAGE_PROCESSOR * * Copyright 2006 Freescale Semiconductor Inc. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */ / { model = "MACQ_IMAGE_PROCESSOR"; compatible = "MPC8540ADS", "MPC85xxADS"; #address-cells = <1>; #size-cells = <1>; aliases { ethernet0 = &enet0; serial0 = &serial0; pci0 = &pci0; }; cpus { #address-cells = <1>; #size-cells = <0>; PowerPC,8540@0 { device_type = "cpu"; reg = <0>; d-cache-line-size = <20>; // 32 bytes i-cache-line-size = <20>; // 32 bytes d-cache-size = <8000>; // L1, 32K i-cache-size = <8000>; // L1, 32K timebase-frequency = <0>; // 33.3333 MHz, from uboot bus-frequency = <0>; // 166 MHz clock-frequency = <0>; // 666, 833 or 1000 MHz, from uboot }; }; memory { device_type = "memory"; reg = <00000000 10000000>; // 256M at 0x0 }; soc8540@e0000000 { #address-cells = <1>; #size-cells = <1>; device_type = "soc"; ranges = <0 e0000000 00100000>; reg = <e0000000 00100000>; // CCSRBAR 1M bus-frequency = <0>; memory-controller@2000 { compatible = "fsl,8540-memory-controller"; reg = <2000 1000>; interrupt-parent = <&mpic>; interrupts = <12 2>; }; l2-cache-controller@20000 { compatible = "fsl,8540-l2-cache-controller"; reg = <20000 1000>; cache-line-size = <20>; // 32 bytes cache-size = <40000>; // L2, 256K interrupt-parent = <&mpic>; interrupts = <10 2>; }; i2c@3000 { #address-cells = <1>; #size-cells = <0>; cell-index = <0>; compatible = "fsl-i2c"; reg = <3000 100>; interrupts = <2b 2>; interrupt-parent = <&mpic>; dfsrr; rtc@68 { device_type = "rtc"; compatible = "stm,m41t81"; reg = <68>; }; temp-sensor@4c { device_type = "temp-sensor"; compatible = "ns,lm63"; reg = <4c>; }; temp-sensor@48 { device_type = "temp-sensor"; compatible = "ns,lm75"; reg = <48>; }; }; mdio@24520 { #address-cells = <1>; #size-cells = <0>; compatible = "fsl,gianfar-mdio"; reg = <24520 20>; phy0: ethernet-phy@1 { interrupt-parent = <&mpic>; interrupts = <4 1>; reg = <1>; device_type = "ethernet-phy"; }; }; enet0: ethernet@26000 { cell-index = <0>; device_type = "network"; model = "FEC"; compatible = "gianfar"; reg = <26000 1000>; local-mac-address = [ 00 00 00 00 00 00 ]; interrupts = <29 2>; interrupt-parent = <&mpic>; phy-handle = <&phy0>; }; serial0: serial@4500 { cell-index = <0>; device_type = "serial"; compatible = "ns16550"; reg = <4500 100>; // reg base, size clock-frequency = <0>; // should we fill in in uboot? interrupts = <2a 2>; interrupt-parent = <&mpic>; }; mpic: pic@40000 { clock-frequency = <0>; interrupt-controller; #address-cells = <0>; #interrupt-cells = <2>; reg = <40000 40000>; compatible = "chrp,open-pic"; device_type = "open-pic"; big-endian; }; dma@21300 { #address-cells = <1>; #size-cells = <1>; compatible = "fsl,mpc8540-dma", "fsl,eloplus-dma"; reg = <21300 4>; ranges = <0 21100 200>; cell-index = <0>; dma-channel@0 { compatible = "fsl,mpc8540-dma-channel", "fsl,eloplus-dma-channel"; reg = <0 80>; cell-index = <0>; interrupt-parent = <&mpic>; interrupts = <14 2>; }; dma-channel@80 { compatible = "fsl,mpc8540-dma-channel", "fsl,eloplus-dma-channel"; reg = <80 80>; cell-index = <1>; interrupt-parent = <&mpic>; interrupts = <15 2>; }; dma-channel@100 { compatible = "fsl,mpc8540-dma-channel", "fsl,eloplus-dma-channel"; reg = <100 80>; cell-index = <2>; interrupt-parent = <&mpic>; interrupts = <16 2>; }; dma-channel@180 { compatible = "fsl,mpc8540-dma-channel", "fsl,eloplus-dma-channel"; reg = <180 80>; cell-index = <3>; interrupt-parent = <&mpic>; interrupts = <17 2>; }; }; }; pci0: pci@e0008000 { cell-index = <0>; interrupt-map-mask = <f800 0 0 7>; interrupt-map = < /* IDSEL 0x12 */ 9000 0 0 1 &mpic 5 1 9000 0 0 2 &mpic 6 1 9000 0 0 3 &mpic 7 1 9000 0 0 4 &mpic 8 1>; interrupt-parent = <&mpic>; interrupts = <18 2>; bus-range = <0 0>; ranges = <02000000 0 80000000 80000000 0 20000000 01000000 0 00000000 e2000000 0 00100000>; clock-frequency = <3f940aa>; #interrupt-cells = <1>; #size-cells = <2>; #address-cells = <3>; reg = <e0008000 1000>; compatible = "fsl,mpc8540-pcix", "fsl,mpc8540-pci"; device_type = "pci"; }; }; ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-05-07 7:50 ` Philippe De Muyter @ 2008-05-07 7:54 ` Stephen Rothwell 0 siblings, 0 replies; 31+ messages in thread From: Stephen Rothwell @ 2008-05-07 7:54 UTC (permalink / raw) To: Philippe De Muyter; +Cc: Scott Wood, linuxppc-dev [-- Attachment #1: Type: text/plain, Size: 438 bytes --] Hi Philippe, On Wed, 7 May 2008 09:50:48 +0200 Philippe De Muyter <phdm@macqel.be> wrote: > > What's the recommended way to make a powerpc patch (e.g. my defconfig) appear > in the official kernel sources ? Should I send it to linuxppc-dev@ozlabs.org, > lkml or somewhere else ? linuxppc-dev would be the best place. -- Cheers, Stephen Rothwell sfr@canb.auug.org.au http://www.canb.auug.org.au/~sfr/ [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-03 21:05 ` Philippe De Muyter 2008-03-03 21:11 ` Scott Wood @ 2008-03-03 21:26 ` Benjamin Herrenschmidt 2008-03-04 8:34 ` Philippe De Muyter 1 sibling, 1 reply; 31+ messages in thread From: Benjamin Herrenschmidt @ 2008-03-03 21:26 UTC (permalink / raw) To: Philippe De Muyter; +Cc: Scott Wood, linuxppc-dev > > Maybe your PCI interrupt-map is wrong... > > Is the PCI-interrupt map that part of the dts file : > > interrupt-map = < > > /* IDSEL 0x02 */ > 1000 0 0 1 &mpic 1 1 > 1000 0 0 2 &mpic 2 1 > 1000 0 0 3 &mpic 3 1 > 1000 0 0 4 &mpic 4 1 > > /* IDSEL 0x03 */ > 1800 0 0 1 &mpic 4 1 > 1800 0 0 2 &mpic 1 1 > 1800 0 0 3 &mpic 2 1 > 1800 0 0 4 &mpic 3 1 > > ... > > I do not understand anything there :( It's documented in booting-without-of.txt afaik... The interrupt-map goes along with the interrupt-map-mask. The later defines which bits of the map are relevant. The first part of the map is 3 cells containing a PCI address, followed by a cell containing a PCI IRQ line (1=A....4=D). The next is the parent interrupt controller, followed by the IRQ specification, which for MPIC is the interrupt number on that controller, followed by an encoding of the interrupt polarity & trigger type (1 for level-low). The first part, the PCI address, has a special format, which should be documented as well in the document I pointed out. For readability, we ommited the top 16 bits of the first cell, which are the address type and bus number, mostly irrelevant for interrupt mapping. The next bits are the device/function. Usually only the device part is unmasked. Ben. ^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file 2008-03-03 21:26 ` Benjamin Herrenschmidt @ 2008-03-04 8:34 ` Philippe De Muyter 0 siblings, 0 replies; 31+ messages in thread From: Philippe De Muyter @ 2008-03-04 8:34 UTC (permalink / raw) To: Benjamin Herrenschmidt; +Cc: Scott Wood, linuxppc-dev Hi Ben, On Tue, Mar 04, 2008 at 08:26:14AM +1100, Benjamin Herrenschmidt wrote: > > > > Maybe your PCI interrupt-map is wrong... > > > > Is the PCI-interrupt map that part of the dts file : > > > > interrupt-map = < > > > > /* IDSEL 0x02 */ > > 1000 0 0 1 &mpic 1 1 > > 1000 0 0 2 &mpic 2 1 > > 1000 0 0 3 &mpic 3 1 > > 1000 0 0 4 &mpic 4 1 > > > > /* IDSEL 0x03 */ > > 1800 0 0 1 &mpic 4 1 > > 1800 0 0 2 &mpic 1 1 > > 1800 0 0 3 &mpic 2 1 > > 1800 0 0 4 &mpic 3 1 > > > > ... > > > > I do not understand anything there :( > > It's documented in booting-without-of.txt afaik... The interrupt-map > goes along with the interrupt-map-mask. The later defines which bits of > the map are relevant. Maybe I should read my mail in time-of-arrival order :) > > The first part of the map is 3 cells containing a PCI address, followed > by a cell containing a PCI IRQ line (1=A....4=D). The next is the parent > interrupt controller, followed by the IRQ specification, which for MPIC > is the interrupt number on that controller, followed by an encoding of > the interrupt polarity & trigger type (1 for level-low). > > The first part, the PCI address, has a special format, which should be > documented as well in the document I pointed out. For readability, we > ommited the top 16 bits of the first cell, which are the address type > and bus number, mostly irrelevant for interrupt mapping. The next bits > are the device/function. Usually only the device part is unmasked. 1. Can all that info be found in /proc in a running system or even in the sources, or do I need an hardware doc for that ? 2. Maybe you could explain the conversion between the kernel/lsusb notation (0000:00:12.0, 0000:00:12.1, 0000:00:12.2) or /proc/bus/pci notation : 0090 104cac46 35 9ffff000 0 0 0 0 0 0 1000 0 0 0 0 0 0 yenta_cardbus 0091 104cac46 36 9fbfe000 0 0 0 0 0 0 1000 0 0 0 0 0 0 yenta_cardbus 0092 104c802a 37 9f7fd800 9f7f8000 0 0 0 0 0 800 4000 0 0 0 0 0 ohci1394 and dts-notation ? Thanks for listening Philippe ^ permalink raw reply [flat|nested] 31+ messages in thread
end of thread, other threads:[~2008-05-07 7:54 UTC | newest] Thread overview: 31+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-03-03 14:47 ARCH=ppc -> ARCH=powerpc : help needed for dts file Philippe De Muyter 2008-03-03 14:54 ` Grant Likely 2008-03-03 17:07 ` Scott Wood 2008-03-03 21:05 ` Philippe De Muyter 2008-03-03 21:11 ` Scott Wood 2008-03-03 21:26 ` Philippe De Muyter 2008-03-03 21:41 ` Benjamin Herrenschmidt 2008-03-04 8:19 ` Philippe De Muyter 2008-03-03 21:55 ` Scott Wood 2008-03-04 8:08 ` Philippe De Muyter 2008-03-04 8:22 ` Benjamin Herrenschmidt 2008-03-04 9:10 ` Philippe De Muyter 2008-03-05 4:52 ` David Gibson 2008-03-05 5:01 ` Benjamin Herrenschmidt 2008-03-05 16:15 ` Philippe De Muyter 2008-03-05 20:14 ` Benjamin Herrenschmidt 2008-03-05 23:34 ` Philippe De Muyter 2008-03-05 16:32 ` Scott Wood 2008-03-05 23:46 ` Benjamin Herrenschmidt 2008-03-07 0:10 ` Philippe De Muyter 2008-03-07 0:19 ` Benjamin Herrenschmidt 2008-03-09 22:31 ` Philippe De Muyter 2008-03-09 22:36 ` Benjamin Herrenschmidt 2008-03-11 0:32 ` David Gibson 2008-03-11 11:46 ` Philippe De Muyter 2008-03-11 22:42 ` David Gibson 2008-05-06 22:54 ` Andy Fleming 2008-05-07 7:50 ` Philippe De Muyter 2008-05-07 7:54 ` Stephen Rothwell 2008-03-03 21:26 ` Benjamin Herrenschmidt 2008-03-04 8:34 ` Philippe De Muyter
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).