Re: [U-Boot] [PATCH v2 5/9] AVR32: macb - Disable 100mbps if clock is slow
Olav Morken wrote: > > Yes, AP7000 have two Ethernet MACs. And if I got this right you want to > > make a generic config about it, so then I guess it should open up for > > having more than one MAC. > > OK, how about adding a CONFIG_MACB_ADVERTISE(id)-option, where id is > the id of the MACB (passed to the macb_eth_initialize-function). This > makes it possible to add this without touching anything but the > macb-driver (i.e. without changing the macb_eth_initialize-prototype). > > In the config-files, one could then have: > #define CONFIG_MACB_ADVERTISE(id) ( \ > (id == 0) ? ( \ > ADVERTISE_ALL | ADVERTISE_CSMA \ > ) : ( \ > ADVERTISE_CSMA | ADVERTISE_10HALF | \ > ADVERTISE_10FULL\ > )) > > Or in the simple (and probably mose usual case (only one set of options > advertised): > #define CONFIG_MACB_ADVERTISE(id) ( \ > (ADVERTISE_CSMA | ADVERTISE_10HALF | ADVERTISE_10FULL) > > > This would require saving the id to the macb_device struct. If this is > unacceptable, it could be changed to using the regs-offset instead of > the id. > > Any thoughts about this? Sounds good to me. The board decides the id, so it makes sense to pass it back to the board code. Haavard ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v2 5/9] AVR32: macb - Disable 100mbps if clock is slow
On Thu, Jan 29, 2009 at 07:28, Hans-Christian Egtvedt wrote: > On Wed, 28 Jan 2009 15:40:49 -0800 > Ben Warren wrote: > >> Jean-Christophe PLAGNIOL-VILLARD wrote: >> > On 22:42 Wed 28 Jan , Haavard Skinnemoen wrote: >> > > > > >> >> As for a better name, how about CONFIG_MACB_ADVERTISE? >> >> >> > why not >> > >> I like it too. One of the common checkbox items, though: do any >> Atmel chips have more than one MACB, in which case this should be >> CONFIG_MACBx_ADVERTISE or something like that? >> > > Yes, AP7000 have two Ethernet MACs. And if I got this right you want to > make a generic config about it, so then I guess it should open up for > having more than one MAC. OK, how about adding a CONFIG_MACB_ADVERTISE(id)-option, where id is the id of the MACB (passed to the macb_eth_initialize-function). This makes it possible to add this without touching anything but the macb-driver (i.e. without changing the macb_eth_initialize-prototype). In the config-files, one could then have: #define CONFIG_MACB_ADVERTISE(id) ( \ (id == 0) ? ( \ ADVERTISE_ALL | ADVERTISE_CSMA \ ) : ( \ ADVERTISE_CSMA | ADVERTISE_10HALF | \ ADVERTISE_10FULL\ )) Or in the simple (and probably mose usual case (only one set of options advertised): #define CONFIG_MACB_ADVERTISE(id) ( \ (ADVERTISE_CSMA | ADVERTISE_10HALF | ADVERTISE_10FULL) This would require saving the id to the macb_device struct. If this is unacceptable, it could be changed to using the regs-offset instead of the id. Any thoughts about this? Best regards, Olav Morken ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v2 5/9] AVR32: macb - Disable 100mbps if clock is slow
Ben Warren wrote: > Jean-Christophe PLAGNIOL-VILLARD wrote: > > make sense > > so I'll put a 10Mpbs phy personnaly instead or a 10/100 that can be put in a > > 10 mode instead to avoid to manage it in the code > > > I haven't shopped for PHYs in a while, but imagine it's probably hard to > find one that's 10Mb only, and if so it's probably more expensive than > 10/100 Especially when the board really is _supposed_ to do 100Mbps just fine. > >> No need to disable autonegotiation -- you still want to select between > >> half an full duplex, for example. But you'll need to limit the > >> available options to the ones that actually work. > >> > > I do not mean the autoneg but to specify to the phy, if possible, to never > > accept the 100Mps instead of do it in the code > > > That's basically why the advertise register is r/w, so you can limit > autonegotiation through software and don't have to allocate pins for > strapping. Yeah, I thought the advertise register was the correct way of informing the phy about what modes you support... I suppose we could move the initialization of the advertise register to board code, but that's going to be a lot uglier since the board code would have to access the MACB hardware to drive the MDIO pins. Perhaps some boards don't need any initialization at all, but then again, isn't it safer to unconditionally write the correct value? And when we're going to write the register _anyway_, we might as well allow the board code to influence the value we're going to write. The more I think of this, the more I'm convinced we should have allowed that from the beginning. The current driver is making assumptions it shouldn't be making. > >> That said, I kind of like Ben's suggestion -- it's a more general > >> solution to all sorts of board/phy/chip/whatever limitations. > >> > >> As for a better name, how about CONFIG_MACB_ADVERTISE? > >> > > why not > > > I like it too. One of the common checkbox items, though: do any Atmel > chips have more than one MACB, in which case this should be > CONFIG_MACBx_ADVERTISE or something like that? Yes, AT32AP7000 has two MACBs, so that's probably a good idea. Better yet, make it CONFIG_MACB_ADVERTISE(macb) so that the board can distinguish between various instances if it has to, and the driver doesn't have to do a long sequence of #ifdefs to find the correct value. Haavard ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v2 5/9] AVR32: macb - Disable 100mbps if clock is slow
On Wed, 28 Jan 2009 15:40:49 -0800 Ben Warren wrote: > Jean-Christophe PLAGNIOL-VILLARD wrote: > > On 22:42 Wed 28 Jan , Haavard Skinnemoen wrote: > > > >> As for a better name, how about CONFIG_MACB_ADVERTISE? > >> > > why not > > > I like it too. One of the common checkbox items, though: do any > Atmel chips have more than one MACB, in which case this should be > CONFIG_MACBx_ADVERTISE or something like that? > Yes, AP7000 have two Ethernet MACs. And if I got this right you want to make a generic config about it, so then I guess it should open up for having more than one MAC. -- Best regards, Hans-Christian Egtvedt ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v2 5/9] AVR32: macb - Disable 100mbps if clock is slow
>> >>> > This patch makes it possible to limit the macb to 10 MBit for this > case. We are open for suggestions for other solutions. I guest you may need to disable the phy auto config mode and force him to be see as a 10Mbps phy evenif it's a 10/100 >>> No need to disable autonegotiation -- you still want to select between >>> half an full duplex, for example. But you'll need to limit the >>> available options to the ones that actually work. >>> >> I do not mean the autoneg but to specify to the phy, if possible, to never >> accept the 100Mps instead of do it in the code >> > That's basically why the advertise register is r/w, so you can limit > autonegotiation through software and don't have to allocate pins for > strapping. I've some phy/switch here that have on option to put them in 10M mode without have to manage it after even via the adverstise I've just guess maybe the one on the board could allow it too > I like it too. One of the common checkbox items, though: do any Atmel > chips have more than one MACB, in which case this should be > CONFIG_MACBx_ADVERTISE or something like that? on at91 actually not Best Regards, J. ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v2 5/9] AVR32: macb - Disable 100mbps if clock is slow
Jean-Christophe PLAGNIOL-VILLARD wrote: > On 22:42 Wed 28 Jan , Haavard Skinnemoen wrote: > >> Jean-Christophe PLAGNIOL-VILLARD wrote: >> On the EVK1100 board, the CPU (UC3A0512) is connected to the PHY via an RMII bus. This requires the CPU clock to be at least 50 MHz. Unfortunately, the chip on current EVK1100 boards may be unable to run at more than 50 MHz, and with the oscillator on the board, the closest frequency we can generate is 48 MHz. >>> IMHO It's a HW design error to not use the MII >>> >> Some people want to use the extra pins for other things... >> > make sense > so I'll put a 10Mpbs phy personnaly instead or a 10/100 that can be put in a > 10 mode instead to avoid to manage it in the code > I haven't shopped for PHYs in a while, but imagine it's probably hard to find one that's 10Mb only, and if so it's probably more expensive than 10/100 >> Unfortunately, there are quite a few boards with early engineering >> samples around, and they have various issues. The chips that are in >> production are capable of running fast enough to support RMII. >> >> This patch makes it possible to limit the macb to 10 MBit for this case. We are open for suggestions for other solutions. >>> I guest you may need to disable the phy auto config mode and force him to be >>> see as a 10Mbps phy evenif it's a 10/100 >>> >> No need to disable autonegotiation -- you still want to select between >> half an full duplex, for example. But you'll need to limit the >> available options to the ones that actually work. >> > I do not mean the autoneg but to specify to the phy, if possible, to never > accept the 100Mps instead of do it in the code > That's basically why the advertise register is r/w, so you can limit autonegotiation through software and don't have to allocate pins for strapping. >> That said, I kind of like Ben's suggestion -- it's a more general >> solution to all sorts of board/phy/chip/whatever limitations. >> >> As for a better name, how about CONFIG_MACB_ADVERTISE? >> > why not > I like it too. One of the common checkbox items, though: do any Atmel chips have more than one MACB, in which case this should be CONFIG_MACBx_ADVERTISE or something like that? > Best Regards, > J. > regards, Ben ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v2 5/9] AVR32: macb - Disable 100mbps if clock is slow
On 22:42 Wed 28 Jan , Haavard Skinnemoen wrote: > Jean-Christophe PLAGNIOL-VILLARD wrote: > > > On the EVK1100 board, the CPU (UC3A0512) is connected to the PHY via an > > > RMII bus. This requires the CPU clock to be at least 50 MHz. > > > Unfortunately, the chip on current EVK1100 boards may be unable to run > > > at more than 50 MHz, and with the oscillator on the board, the closest > > > frequency we can generate is 48 MHz. > > IMHO It's a HW design error to not use the MII > > Some people want to use the extra pins for other things... make sense so I'll put a 10Mpbs phy personnaly instead or a 10/100 that can be put in a 10 mode instead to avoid to manage it in the code > > Unfortunately, there are quite a few boards with early engineering > samples around, and they have various issues. The chips that are in > production are capable of running fast enough to support RMII. > > > > This patch makes it possible to limit the macb to 10 MBit for this > > > case. We are open for suggestions for other solutions. > > I guest you may need to disable the phy auto config mode and force him to be > > see as a 10Mbps phy evenif it's a 10/100 > > No need to disable autonegotiation -- you still want to select between > half an full duplex, for example. But you'll need to limit the > available options to the ones that actually work. I do not mean the autoneg but to specify to the phy, if possible, to never accept the 100Mps instead of do it in the code > > That said, I kind of like Ben's suggestion -- it's a more general > solution to all sorts of board/phy/chip/whatever limitations. > > As for a better name, how about CONFIG_MACB_ADVERTISE? why not Best Regards, J. ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v2 5/9] AVR32: macb - Disable 100mbps if clock is slow
Jean-Christophe PLAGNIOL-VILLARD wrote: > > On the EVK1100 board, the CPU (UC3A0512) is connected to the PHY via an > > RMII bus. This requires the CPU clock to be at least 50 MHz. > > Unfortunately, the chip on current EVK1100 boards may be unable to run > > at more than 50 MHz, and with the oscillator on the board, the closest > > frequency we can generate is 48 MHz. > IMHO It's a HW design error to not use the MII Some people want to use the extra pins for other things... Unfortunately, there are quite a few boards with early engineering samples around, and they have various issues. The chips that are in production are capable of running fast enough to support RMII. > > This patch makes it possible to limit the macb to 10 MBit for this > > case. We are open for suggestions for other solutions. > I guest you may need to disable the phy auto config mode and force him to be > see as a 10Mbps phy evenif it's a 10/100 No need to disable autonegotiation -- you still want to select between half an full duplex, for example. But you'll need to limit the available options to the ones that actually work. That said, I kind of like Ben's suggestion -- it's a more general solution to all sorts of board/phy/chip/whatever limitations. As for a better name, how about CONFIG_MACB_ADVERTISE? Haavard ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v2 5/9] AVR32: macb - Disable 100mbps if clock is slow
> >> + > >> +#ifdef CONFIG_MACB_FORCE10M > >> + printf("%s: 100Mbps is not supported on this board - forcing > >> 10Mbps.\n", > >> +netdev->name); > >> + > >> + adv &= ~ADVERTISE_100FULL; > >> + adv &= ~ADVERTISE_100HALF; > >> + adv &= ~ADVERTISE_100BASE4; > >> +#endif > >not a fan > >could you be more specific about the problem? > > > > Best Regards, > > J. > > > > On the EVK1100 board, the CPU (UC3A0512) is connected to the PHY via an > RMII bus. This requires the CPU clock to be at least 50 MHz. > Unfortunately, the chip on current EVK1100 boards may be unable to run > at more than 50 MHz, and with the oscillator on the board, the closest > frequency we can generate is 48 MHz. IMHO It's a HW design error to not use the MII > > This patch makes it possible to limit the macb to 10 MBit for this > case. We are open for suggestions for other solutions. I guest you may need to disable the phy auto config mode and force him to be see as a 10Mbps phy evenif it's a 10/100 Best Regards, J. ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v2 5/9] AVR32: macb - Disable 100mbps if clock is slow
Hi Gunnar, Gunnar Rangøy wrote: > On Fri, Jan 23, 2009 at 4:38 PM, Jean-Christophe PLAGNIOL-VILLARD > wrote: > >> On 12:56 Fri 23 Jan , Gunnar Rangoy wrote: >> >>> From: Olav Morken >>> >>> For 100mbps operation, the ethernet controller requires a 25 MHz clock >>> in MII mode, and a 50 MHz clock in RMII mode. If the clock is slower, >>> disable 100 Mbps mode. >>> >>> Signed-off-by: Gunnar Rangoy >>> Signed-off-by: Paul Driveklepp >>> Signed-off-by: Olav Morken >>> --- >>> drivers/net/macb.c | 12 +++- >>> 1 files changed, 11 insertions(+), 1 deletions(-) >>> >>> diff --git a/drivers/net/macb.c b/drivers/net/macb.c >>> index 08bebf7..d47a052 100644 >>> --- a/drivers/net/macb.c >>> +++ b/drivers/net/macb.c >>> @@ -297,7 +297,17 @@ static void macb_phy_reset(struct macb_device *macb) >>> int i; >>> u16 status, adv; >>> >>> - adv = ADVERTISE_CSMA | ADVERTISE_ALL; >>> + adv = ADVERTISE_CSMA | ADVERTISE_ALL ; >>> >> ?? >> > > Oops... Will fix this. > > >>> + >>> +#ifdef CONFIG_MACB_FORCE10M >>> + printf("%s: 100Mbps is not supported on this board - forcing >>> 10Mbps.\n", >>> +netdev->name); >>> + >>> + adv &= ~ADVERTISE_100FULL; >>> + adv &= ~ADVERTISE_100HALF; >>> + adv &= ~ADVERTISE_100BASE4; >>> +#endif >>> >>not a fan >>could you be more specific about the problem? >> >> Best Regards, >> J. >> >> > > On the EVK1100 board, the CPU (UC3A0512) is connected to the PHY via an > RMII bus. This requires the CPU clock to be at least 50 MHz. > Unfortunately, the chip on current EVK1100 boards may be unable to run > at more than 50 MHz, and with the oscillator on the board, the closest > frequency we can generate is 48 MHz. > > This patch makes it possible to limit the macb to 10 MBit for this > case. We are open for suggestions for other solutions. > > How about using a PHY capability override CONFIG. Something like this: #if defined(CONFIG_MACB_PHY_CAPAB)<-- insert better name here adv = ADVERTISE_CSMA | CONFIG_MACB_PHY_CAPAB; #else adv = ADVERTISE_CSMA | ADVERTISE_ALL #endif Just an idea... regards, Ben ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v2 5/9] AVR32: macb - Disable 100mbps if clock is slow
On Fri, Jan 23, 2009 at 4:38 PM, Jean-Christophe PLAGNIOL-VILLARD wrote: > On 12:56 Fri 23 Jan , Gunnar Rangoy wrote: >> From: Olav Morken >> >> For 100mbps operation, the ethernet controller requires a 25 MHz clock >> in MII mode, and a 50 MHz clock in RMII mode. If the clock is slower, >> disable 100 Mbps mode. >> >> Signed-off-by: Gunnar Rangoy >> Signed-off-by: Paul Driveklepp >> Signed-off-by: Olav Morken >> --- >> drivers/net/macb.c | 12 +++- >> 1 files changed, 11 insertions(+), 1 deletions(-) >> >> diff --git a/drivers/net/macb.c b/drivers/net/macb.c >> index 08bebf7..d47a052 100644 >> --- a/drivers/net/macb.c >> +++ b/drivers/net/macb.c >> @@ -297,7 +297,17 @@ static void macb_phy_reset(struct macb_device *macb) >> int i; >> u16 status, adv; >> >> - adv = ADVERTISE_CSMA | ADVERTISE_ALL; >> + adv = ADVERTISE_CSMA | ADVERTISE_ALL ; > ?? Oops... Will fix this. >> + >> +#ifdef CONFIG_MACB_FORCE10M >> + printf("%s: 100Mbps is not supported on this board - forcing >> 10Mbps.\n", >> +netdev->name); >> + >> + adv &= ~ADVERTISE_100FULL; >> + adv &= ~ADVERTISE_100HALF; >> + adv &= ~ADVERTISE_100BASE4; >> +#endif >not a fan >could you be more specific about the problem? > > Best Regards, > J. > On the EVK1100 board, the CPU (UC3A0512) is connected to the PHY via an RMII bus. This requires the CPU clock to be at least 50 MHz. Unfortunately, the chip on current EVK1100 boards may be unable to run at more than 50 MHz, and with the oscillator on the board, the closest frequency we can generate is 48 MHz. This patch makes it possible to limit the macb to 10 MBit for this case. We are open for suggestions for other solutions. -- Gunnar Rangøy, 99360699 ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v2 5/9] AVR32: macb - Disable 100mbps if clock is slow
On 12:56 Fri 23 Jan , Gunnar Rangoy wrote: > From: Olav Morken > > For 100mbps operation, the ethernet controller requires a 25 MHz clock > in MII mode, and a 50 MHz clock in RMII mode. If the clock is slower, > disable 100 Mbps mode. > > Signed-off-by: Gunnar Rangoy > Signed-off-by: Paul Driveklepp > Signed-off-by: Olav Morken > --- > drivers/net/macb.c | 12 +++- > 1 files changed, 11 insertions(+), 1 deletions(-) > > diff --git a/drivers/net/macb.c b/drivers/net/macb.c > index 08bebf7..d47a052 100644 > --- a/drivers/net/macb.c > +++ b/drivers/net/macb.c > @@ -297,7 +297,17 @@ static void macb_phy_reset(struct macb_device *macb) > int i; > u16 status, adv; > > - adv = ADVERTISE_CSMA | ADVERTISE_ALL; > + adv = ADVERTISE_CSMA | ADVERTISE_ALL ; ?? > + > +#ifdef CONFIG_MACB_FORCE10M > + printf("%s: 100Mbps is not supported on this board - forcing 10Mbps.\n", > +netdev->name); > + > + adv &= ~ADVERTISE_100FULL; > + adv &= ~ADVERTISE_100HALF; > + adv &= ~ADVERTISE_100BASE4; > +#endif not a fan could you be more specific about the problem? Best Regards, J. ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot