Re: [PATCH 05/11] m68k/atari: Add missing platform check before registering platform devices

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Michael,

On Sun, Mar 25, 2012 at 05:46, Michael Schmitz
<schmitzmic@xxxxxxxxxxxxxx> wrote:
On multi-platform kernels, the Atari platform devices should be registered
when running on Atari only. Else it may crash later.

Signed-off-by: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx>
---
 arch/m68k/atari/config.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/arch/m68k/atari/config.c b/arch/m68k/atari/config.c
index af78731..35fb81d 100644
--- a/arch/m68k/atari/config.c
+++ b/arch/m68k/atari/config.c
@@ -693,6 +693,9 @@ static struct platform_device
*atari_platform_devices[] __initdata = {
 int __init atari_platform_init(void)
 {
+       if (!MACH_IS_ATARI)
+               return -ENODEV;
+
       return platform_add_devices(atari_platform_devices,
ARRAY_SIZE(atari_platform_devices));
 }



How about this instead - probe for the EtherNAT config register, and
register devices only if found?

That's even better, but logically, it's an extra change on top, so I'd like
to keep it separate.

(may apply with a bit of fuzz)

Otherwise, Acked-by: Michael Schmitz <schmitz@xxxxxxxxxx>.

--- arch/m68k/atari/config.c.org    2012-03-25 16:02:12.000000000 +1300
+++ arch/m68k/atari/config.c    2012-03-25 13:37:21.000000000 +1300
@@ -753,7 +753,19 @@

int __init atari_platform_init(void)
{
-    return platform_add_devices(atari_platform_devices,
ARRAY_SIZE(atari_platform_devices));
+    if (MACH_IS_ATARI) {

I prefer the "if (!MACH_IS_ATARI) return -ENODEV;" at the top, as it
  - means less code to change if more platform devices are added,
  - means less source code to keep on your mental stack when reading the code,
  - decreases indentation for the rest of the function.

+        u8 ethernat_cr;
+        unsigned long enatc_phys = 0x80000023;
+        unsigned char *enatc_virt;
+       +        enatc_virt = (unsigned char *)ioremap(enatc_phys, 0xf);
+        if (hwreg_present(enatc_virt)) {
+            iounmap(enatc_virt);
+            return platform_add_devices(atari_platform_devices,
ARRAY_SIZE(atari_platform_devices));
+        }
+        iounmap(enatc_virt);
+    }
+    return -ENODEV;   }

arch_initcall(atari_platform_init);

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe linux-m68k" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Video for Linux]     [Yosemite News]     [Linux S/390]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux