[Kgdb-bugreport] [PATCH] Make MPSC KGDB driver work for PowerPC kernels
Status: Beta
Brought to you by:
jwessel
From: Sergei S. <ssh...@ru...> - 2007-11-13 18:34:51
|
The mpsc_kgdb.c driver can only work with the old PPC kernels -- make it also work for the PowerPC kernels as well... --- The patch is against the linux_2_6_24_uprev branch... arch/powerpc/sysdev/mv64x60_dev.c | 8 ++++++++ drivers/serial/mpsc_kgdb.c | 16 +++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) Index: linux-2.6/arch/powerpc/sysdev/mv64x60_dev.c =================================================================== --- linux-2.6.orig/arch/powerpc/sysdev/mv64x60_dev.c +++ linux-2.6/arch/powerpc/sysdev/mv64x60_dev.c @@ -30,6 +30,7 @@ */ static int __init mv64x60_mpsc_register_shared_pdev(struct device_node *np) { + extern void kgdbmpsc_set_shared_dev(struct platform_device *); struct platform_device *pdev; struct resource r[2]; struct mpsc_shared_pdata pdata; @@ -75,6 +76,9 @@ static int __init mv64x60_mpsc_register_ if (err) goto error; +#ifdef CONFIG_KGDB_MPSC + kgdbmpsc_set_shared_dev(pdev); +#endif return 0; error: @@ -85,6 +89,7 @@ error: static int __init mv64x60_mpsc_device_setup(struct device_node *np, int id) { + extern void kgdbmpsc_set_mpsc_dev(struct platform_device *, int); struct resource r[5]; struct mpsc_pdata pdata; struct platform_device *pdev; @@ -195,6 +200,9 @@ static int __init mv64x60_mpsc_device_se if (err) goto error; +#ifdef CONFIG_KGDB_MPSC + kgdbmpsc_set_mpsc_dev(pdev, id); +#endif return 0; error: Index: linux-2.6/drivers/serial/mpsc_kgdb.c =================================================================== --- linux-2.6.orig/drivers/serial/mpsc_kgdb.c +++ linux-2.6/drivers/serial/mpsc_kgdb.c @@ -273,6 +273,7 @@ static void __init kgdbmpsc_local_exit(v MPSC_BASE_ORDER, mpsc_base); } +#ifdef COFNIG_PPC static void __init kgdbmpsc_update_pdata(struct platform_device *pdev) { @@ -307,11 +308,24 @@ static int __init kgdbmpsc_pdev_init(voi } postcore_initcall(kgdbmpsc_pdev_init); +#else +void kgdbmpsc_set_shared_dev(struct platform_device *pdev) +{ + memcpy(&shared_dev, pdev, sizeof(struct platform_device)); +} -static int __init kgdbmpsc_init_io(void) +void kgdbmpsc_set_mpsc_dev(struct platform_device *pdev, int id) { + if (id == kgdbmpsc_ttyMM) + memcpy(&mpsc_dev, pdev, sizeof(struct platform_device)); +} +#endif /* CONFIG_PPC */ +static int __init kgdbmpsc_init_io(void) +{ +#ifdef COFNIG_PPC kgdbmpsc_pdev_init(); +#endif if (kgdbmpsc_local_init()) { kgdbmpsc_local_exit(); |