Message ID | Pine.LNX.4.64.0810240059170.9657@axis700.grange (mailing list archive) |
---|---|
State | Accepted, archived |
Commit | 22e181ba7f09197dd6f35a48013cb86289644eb6 |
Delegated to: | Kumar Gala |
Headers | show |
On Fri, 2008-10-24 at 01:05 +0200, Guennadi Liakhovetski wrote: > i2c is broken on linkstation / kurobox machines since at least 2.6.27. Fix > it. Also remove CONFIG_SERIAL_OF_PLATFORM, which, if enabled, breaks the > serial console after the "console handover: boot [udbg0] -> real [ttyS1]" > message. > > Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> You may want to use udbg_printf() to track down what's up. There's some fishy code there indeed, what happens is that the legacy serial code creates a platform device at boot time. Then, the of_serial attaches to the device node for the same device and tries to register it. It's supposed to "detect" that it's the same device but yeah, it may be buggy, I've seen problems with it in the past, among others, I think it can lose some state. In the meantime, removing SERIAL_OF_PLATFORM is a good solution. Ben.
On Fri, 24 Oct 2008, Benjamin Herrenschmidt wrote: > On Fri, 2008-10-24 at 01:05 +0200, Guennadi Liakhovetski wrote: > > i2c is broken on linkstation / kurobox machines since at least 2.6.27. Fix > > it. Also remove CONFIG_SERIAL_OF_PLATFORM, which, if enabled, breaks the > > serial console after the "console handover: boot [udbg0] -> real [ttyS1]" > > message. > > > > Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> > > You may want to use udbg_printf() to track down what's up. There's some > fishy code there indeed, what happens is that the legacy serial code > creates a platform device at boot time. Then, the of_serial attaches to > the device node for the same device and tries to register it. It's > supposed to "detect" that it's the same device but yeah, it may be > buggy, I've seen problems with it in the past, among others, I think it > can lose some state. > > In the meantime, removing SERIAL_OF_PLATFORM is a good solution. > > Ben. I think, this needs an acked-by for -stable. Thanks Guennadi --- Guennadi Liakhovetski, Ph.D. Freelance Open-Source Software Developer
On Oct 23, 2008, at 6:05 PM, Guennadi Liakhovetski wrote: > i2c is broken on linkstation / kurobox machines since at least > 2.6.27. Fix > it. Also remove CONFIG_SERIAL_OF_PLATFORM, which, if enabled, breaks > the > serial console after the "console handover: boot [udbg0] -> real > [ttyS1]" > message. > > Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> > > --- > > No, I do not really understand why I have to remove > CONFIG_SERIAL_OF_PLATFORM now after adding a call to > of_platform_bus_probe(), but it works this way. It must have > something to > do with the legacy serial driver... If accepted in this form, I'll > also > forward it to stable. > > diff --git applied to merge. - k
On Tue, Oct 28, 2008 at 9:58 AM, Kumar Gala <galak@kernel.crashing.org> wrote: > > On Oct 23, 2008, at 6:05 PM, Guennadi Liakhovetski wrote: > >> i2c is broken on linkstation / kurobox machines since at least 2.6.27. Fix >> it. Also remove CONFIG_SERIAL_OF_PLATFORM, which, if enabled, breaks the >> serial console after the "console handover: boot [udbg0] -> real [ttyS1]" >> message. >> >> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> >> >> --- >> >> No, I do not really understand why I have to remove >> CONFIG_SERIAL_OF_PLATFORM now after adding a call to >> of_platform_bus_probe(), but it works this way. It must have something to >> do with the legacy serial driver... If accepted in this form, I'll also >> forward it to stable. >> >> diff --git > > > applied to merge. Did you change the comment? I2C wasn't broken, the bus definition was broken. > > - k >
diff --git a/arch/powerpc/configs/linkstation_defconfig b/arch/powerpc/configs/linkstation_defconfig index 6fc4c21..d0846ec 100644 --- a/arch/powerpc/configs/linkstation_defconfig +++ b/arch/powerpc/configs/linkstation_defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.27-rc4 -# Thu Aug 21 00:52:05 2008 +# Linux kernel version: 2.6.27 +# Fri Oct 24 00:42:39 2008 # # CONFIG_PPC64 is not set @@ -934,7 +934,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4 CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y # CONFIG_SERIAL_JSM is not set -CONFIG_SERIAL_OF_PLATFORM=y +# CONFIG_SERIAL_OF_PLATFORM is not set CONFIG_UNIX98_PTYS=y CONFIG_LEGACY_PTYS=y CONFIG_LEGACY_PTY_COUNT=256 @@ -1211,7 +1211,6 @@ CONFIG_USB_STORAGE=m # CONFIG_USB_STORAGE_ALAUDA is not set # CONFIG_USB_STORAGE_ONETOUCH is not set # CONFIG_USB_STORAGE_KARMA is not set -# CONFIG_USB_STORAGE_SIERRA is not set # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set # CONFIG_USB_LIBUSUAL is not set diff --git a/arch/powerpc/platforms/embedded6xx/linkstation.c b/arch/powerpc/platforms/embedded6xx/linkstation.c index eb5d74e..2ca7be6 100644 --- a/arch/powerpc/platforms/embedded6xx/linkstation.c +++ b/arch/powerpc/platforms/embedded6xx/linkstation.c @@ -13,6 +13,7 @@ #include <linux/kernel.h> #include <linux/initrd.h> #include <linux/mtd/physmap.h> +#include <linux/of_platform.h> #include <asm/time.h> #include <asm/prom.h> @@ -54,6 +55,19 @@ static struct mtd_partition linkstation_physmap_partitions[] = { }, }; +static __initdata struct of_device_id of_bus_ids[] = { + { .type = "soc", }, + { .compatible = "simple-bus", }, + {}, +}; + +static int __init declare_of_platform_devices(void) +{ + of_platform_bus_probe(NULL, of_bus_ids, NULL); + return 0; +} +machine_device_initcall(linkstation, declare_of_platform_devices); + static int __init linkstation_add_bridge(struct device_node *dev) { #ifdef CONFIG_PCI
i2c is broken on linkstation / kurobox machines since at least 2.6.27. Fix it. Also remove CONFIG_SERIAL_OF_PLATFORM, which, if enabled, breaks the serial console after the "console handover: boot [udbg0] -> real [ttyS1]" message. Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> --- No, I do not really understand why I have to remove CONFIG_SERIAL_OF_PLATFORM now after adding a call to of_platform_bus_probe(), but it works this way. It must have something to do with the legacy serial driver... If accepted in this form, I'll also forward it to stable.