All of lore.kernel.org
 help / color / mirror / Atom feed
From: Albert Herranz <albert_herranz@yahoo.es>
To: Grant Likely <grant.likely@secretlab.ca>
Cc: linuxppc-dev@lists.ozlabs.org
Subject: Re: [RFC PATCH 18/19] powerpc: wii: platform support
Date: Mon, 23 Nov 2009 21:21:46 +0100	[thread overview]
Message-ID: <4B0AEEDA.6070203@yahoo.es> (raw)
In-Reply-To: <fa686aa40911221545x6590b92gab4a1a9a48e9d920@mail.gmail.com>

Grant Likely wrote:
> On Sun, Nov 22, 2009 at 3:01 PM, Albert Herranz <albert_herranz@yahoo.es> wrote:
>> Add platform support for the Nintendo Wii video game console.
>>
>> Signed-off-by: Albert Herranz <albert_herranz@yahoo.es>
>> ---
>> +static int wii_setup_hw_resets(void)
>> +{
>> +       struct device_node *np;
>> +       struct resource res;
>> +       int error = -ENODEV;
>> +
>> +       np = of_find_compatible_node(NULL, NULL, HW_RESETS_OF_COMPATIBLE);
>> +       if (!np) {
>> +               pr_err("no compatible node found for %s\n",
>> +                      HW_RESETS_OF_COMPATIBLE);
>> +               goto out;
>> +       }
>> +       error = of_address_to_resource(np, 0, &res);
>> +       if (error) {
>> +               pr_err("no valid reg found for %s\n", np->name);
>> +               goto out_put;
>> +       }
>> +
>> +       hw_resets = ioremap(res.start, res.end - res.start + 1);
> 
> Or you could use of_iomap() to cut out some code.
> 

Thanks. I'll have a look at it.

>> +       if (hw_resets) {
>> +               pr_info("hw_resets at 0x%08x mapped to 0x%p\n",
>> +                       res.start, hw_resets);
>> +       }
>> +
>> +out_put:
>> +       of_node_put(np);
>> +out:
>> +       return error;
>> +}
>> +
>> +static int wii_setup_hw_gpio(void)
>> +{
>> +       struct device_node *np;
>> +       struct resource res;
>> +       const char *path;
>> +       int error = -ENODEV;
>> +
>> +       np = of_find_node_by_name(NULL, "aliases");
>> +       if (!np) {
>> +               pr_err("unable to find node %s\n", "aliases");
>> +               goto out;
>> +       }
>> +
>> +       path = of_get_property(np, HW_GPIO_ALIAS, NULL);
>> +       of_node_put(np);
>> +       if (!path) {
>> +               pr_err("alias %s unknown\n", HW_GPIO_ALIAS);
>> +               goto out;
>> +       }
>> +
>> +       np = of_find_node_by_path(path);
>> +       if (!np) {
>> +               pr_err("node for alias %s unknown\n", HW_GPIO_ALIAS);
>> +               goto out;
>> +       }
>> +       error = of_address_to_resource(np, 0, &res);
>> +       if (error) {
>> +               pr_err("no valid reg found for %s\n", np->name);
>> +               goto out_put;
>> +       }
>> +
>> +       hw_gpio = ioremap(res.start, res.end - res.start + 1);
>> +       if (hw_gpio) {
>> +               pr_info("hw_gpio at 0x%08x mapped to 0x%p\n",
>> +                       res.start, hw_gpio);
>> +       }
>> +
>> +out_put:
>> +       of_node_put(np);
>> +out:
>> +       return error;
>> +}
>> +
>> +static void wii_setup(void)
>> +{
>> +       wii_setup_hw_resets();
>> +       wii_setup_hw_gpio();
>> +}
>> +
>> +static void wii_restart(char *cmd)
>> +{
>> +       local_irq_disable();
>> +
>> +       if (hw_resets) {
>> +               /* clear the system reset pin to cause a reset */
>> +               clear_bit(0, hw_resets);
>> +       }
>> +       wii_spin();
>> +}
>> +
>> +static void wii_power_off(void)
>> +{
>> +       local_irq_disable();
>> +
>> +       if (hw_gpio) {
>> +               /* make sure that the poweroff GPIO is configured as output */
>> +               out_be32(hw_gpio + HW_GPIO_DIR,
>> +                        in_be32(hw_gpio + HW_GPIO_DIR) | HW_GPIO_SHUTDOWN);
>> +
>> +               /* drive the poweroff GPIO high */
>> +               out_be32(hw_gpio + HW_GPIO_OUT,
>> +                        in_be32(hw_gpio + HW_GPIO_OUT) | HW_GPIO_SHUTDOWN);
>> +       }
>> +       wii_spin();
>> +}
>> +
>> +#else
>> +
>> +static void wii_setup(void)
>> +{
>> +}
>> +
>> +static void wii_restart(char *cmd)
>> +{
>> +       wii_spin();
>> +}
>> +
>> +static void wii_power_off(void)
>> +{
>> +       wii_spin();
>> +}
>> +
>> +#endif /* CONFIG_STARLET_MINI */
>> +
>> +static void wii_halt(void)
>> +{
>> +       if (ppc_md.restart)
>> +               ppc_md.restart(NULL);
>> +       wii_spin();
>> +}
>> +
>> +static void wii_show_cpuinfo(struct seq_file *m)
>> +{
>> +       seq_printf(m, "vendor\t\t: IBM\n");
>> +       seq_printf(m, "machine\t\t: Nintendo Wii\n");
>> +}
> 
> Drop show_cpuinfo() hook.
> 

Yup.

>> +static int wii_discover_ipc_flavour(void)
>> +{
>> +       struct mipc_infohdr *hdrp;
>> +       int error;
>> +
>> +       error = mipc_infohdr_get(&hdrp);
>> +       if (!error) {
>> +               mipc_infohdr_put(hdrp);
>> +               starlet_ipc_flavour = STARLET_IPC_MINI;
>> +               wii_setup();
>> +               ppc_md.restart = wii_restart;
>> +               ppc_md.power_off = wii_power_off;
>> +       }
>> +
>> +       return 0;
>> +}
>> +
>> +static void __init wii_setup_arch(void)
>> +{
>> +       ug_udbg_init();
>> +       wii_discover_ipc_flavour();
>> +}
>> +
>> +static void __init wii_init_early(void)
>> +{
>> +}
>> +
>> +static int __init wii_probe(void)
>> +{
>> +       unsigned long dt_root;
>> +
>> +       dt_root = of_get_flat_dt_root();
>> +       if (!of_flat_dt_is_compatible(dt_root, "nintendo,wii"))
>> +               return 0;
>> +
>> +       return 1;
>> +}
>> +
>> +static void wii_shutdown(void)
>> +{
>> +       flipper_quiesce();
>> +}
>> +
>> +#ifdef CONFIG_KEXEC
>> +static int wii_machine_kexec_prepare(struct kimage *image)
>> +{
>> +       return 0;
>> +}
>> +
>> +static void wii_machine_kexec(struct kimage *image)
>> +{
>> +       default_machine_kexec(image);
>> +}
> 
> Drop unnecessary hooks.  If no kexec hook it offered, then
> default_machine_kexec() gets called anyway.
> 

Yes, at this stage I can get rid of those functions and add them later when they get actual code.
Thanks.

>> +#endif /* CONFIG_KEXEC */
> 
>> +
>> +define_machine(wii) {
>> +       .name                   = "wii",
>> +       .probe                  = wii_probe,
>> +       .setup_arch             = wii_setup_arch,
>> +       .init_early             = wii_init_early,
>> +       .show_cpuinfo           = wii_show_cpuinfo,
>> +       .halt                   = wii_halt,
>> +       .init_IRQ               = flipper_pic_probe,
>> +       .get_irq                = flipper_pic_get_irq,
>> +       .calibrate_decr         = generic_calibrate_decr,
>> +       .progress               = udbg_progress,
>> +       .machine_shutdown       = wii_shutdown,
>> +#ifdef CONFIG_KEXEC
>> +       .machine_kexec_prepare  = wii_machine_kexec_prepare,
>> +       .machine_kexec          = wii_machine_kexec,
>> +#endif
>> +};
>> +
>> diff --git a/arch/powerpc/platforms/embedded6xx/wii_dev.c b/arch/powerpc/platforms/embedded6xx/wii_dev.c
>> new file mode 100644
>> index 0000000..903063e
>> --- /dev/null
>> +++ b/arch/powerpc/platforms/embedded6xx/wii_dev.c
>> @@ -0,0 +1,47 @@
>> +/*
>> + * arch/powerpc/platforms/embedded6xx/wii_dev.c
>> + *
>> + * Nintendo Wii platform device setup.
>> + * Copyright (C) 2008-2009 The GameCube Linux Team
>> + * Copyright (C) 2008,2009 Albert Herranz
>> + *
>> + * 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.
>> + *
>> + */
>> +
>> +#include <linux/kernel.h>
>> +#include <linux/init.h>
>> +#include <linux/of_platform.h>
>> +
>> +#include <asm/machdep.h>
>> +
>> +static struct of_device_id wii_of_bus[] = {
>> +       { .compatible = "nintendo,hollywood", },
>> +#ifdef CONFIG_STARLET_MINI
>> +       { .compatible = "twiizers,starlet-mini-ipc", },
>> +#endif
>> +       { },
>> +};
>> +
>> +static int __init wii_device_probe(void)
>> +{
>> +       struct device_node *np;
>> +
>> +       if (!machine_is(wii))
>> +               return 0;
>> +
>> +       of_platform_bus_probe(NULL, wii_of_bus, NULL);
>> +
>> +       np = of_find_compatible_node(NULL, NULL, "nintendo,hollywood-mem2");
>> +       if (np) {
>> +               of_platform_device_create(np, NULL, NULL);
>> +               of_node_put(np);
>> +       }
>> +
>> +       return 0;
>> +}
>> +device_initcall(wii_device_probe);
> 
> Why is this split into a separate file?  (Same comment goes for the
> Gamecube version).  Just roll all the platform support into a single
> file since there is no shared code.
> 

I'll do that too. Thanks.

Cheers,
Albert

  reply	other threads:[~2009-11-23 20:21 UTC|newest]

Thread overview: 181+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-22 22:01 [RFC PATCH 00/19] powerpc: nintendo gamecube and wii support Albert Herranz
2009-11-22 22:01 ` [RFC PATCH 01/19] powerpc: gamecube/wii: usbgecko bootwrapper console support Albert Herranz
2009-11-22 22:01   ` [RFC PATCH 02/19] powerpc: gamecube: device tree Albert Herranz
2009-11-22 22:01     ` [RFC PATCH 03/19] powerpc: gamecube: bootwrapper bits Albert Herranz
2009-11-22 22:01       ` [RFC PATCH 04/19] powerpc: wii: device tree Albert Herranz
2009-11-22 22:01         ` [RFC PATCH 05/19] powerpc: wii: bootwrapper bits Albert Herranz
2009-11-22 22:01           ` [RFC PATCH 06/19] powerpc: gamecube/wii: introduce GAMECUBE_COMMON Albert Herranz
2009-11-22 22:01             ` [RFC PATCH 07/19] powerpc: gamecube/wii: declare as non-coherent platforms Albert Herranz
2009-11-22 22:01               ` [RFC PATCH 08/19] powerpc: gamecube/wii: do not include PCI support Albert Herranz
2009-11-22 22:01                 ` [RFC PATCH 09/19] powerpc: gamecube/wii: udbg support for usbgecko Albert Herranz
2009-11-22 22:01                   ` [RFC PATCH 10/19] powerpc: gamecube/wii: early debugging using usbgecko Albert Herranz
2009-11-22 22:01                     ` [RFC PATCH 11/19] powerpc: gamecube/wii: flipper interrupt controller support Albert Herranz
2009-11-22 22:01                       ` [RFC PATCH 12/19] powerpc: gamecube: platform support Albert Herranz
2009-11-22 22:01                         ` [RFC PATCH 13/19] powerpc: gamecube: default config Albert Herranz
2009-11-22 22:01                           ` [RFC PATCH 14/19] powerpc: allow ioremap within reserved fake ram regions Albert Herranz
2009-11-22 22:01                             ` [RFC PATCH 15/19] powerpc: broadway processor support Albert Herranz
2009-11-22 22:01                               ` [RFC PATCH 16/19] powerpc: wii: hollywood interrupt controller support Albert Herranz
2009-11-22 22:01                                 ` [RFC PATCH 17/19] powerpc: wii: bootmii starlet 'mini' firmware support Albert Herranz
2009-11-22 22:01                                   ` [RFC PATCH 18/19] powerpc: wii: platform support Albert Herranz
2009-11-22 22:01                                     ` [RFC PATCH 19/19] powerpc: wii: default config Albert Herranz
2009-11-22 23:45                                     ` [RFC PATCH 18/19] powerpc: wii: platform support Grant Likely
2009-11-23 20:21                                       ` Albert Herranz [this message]
2009-11-24 22:24                                     ` Segher Boessenkool
2009-11-25 17:58                                       ` Albert Herranz
2009-11-26 22:05                                         ` Segher Boessenkool
2009-11-22 22:48                                   ` [RFC PATCH 17/19] powerpc: wii: bootmii starlet 'mini' firmware support Arnd Bergmann
2009-11-23 19:21                                     ` Albert Herranz
2009-11-24 22:13                                   ` Segher Boessenkool
2009-11-25 17:47                                     ` Albert Herranz
2009-11-26 22:00                                       ` Segher Boessenkool
2009-11-22 23:40                                 ` [RFC PATCH 16/19] powerpc: wii: hollywood interrupt controller support Grant Likely
2009-11-23 20:18                                   ` Albert Herranz
2009-11-24 21:54                                 ` Segher Boessenkool
2009-11-25 17:27                                   ` Albert Herranz
2009-11-26  5:23                                 ` Benjamin Herrenschmidt
2009-11-26 15:42                                   ` Albert Herranz
2009-11-26 21:13                                     ` Benjamin Herrenschmidt
2009-11-26 23:03                                   ` Segher Boessenkool
2009-11-22 23:38                               ` [RFC PATCH 15/19] powerpc: broadway processor support Grant Likely
2009-11-23 20:16                                 ` Albert Herranz
2009-11-22 23:36                             ` [RFC PATCH 14/19] powerpc: allow ioremap within reserved fake ram regions Grant Likely
2009-11-23 20:16                               ` Albert Herranz
2009-11-23 20:41                                 ` Grant Likely
2009-11-23 23:45                                 ` Michael Ellerman
2009-11-24 17:09                                   ` Albert Herranz
2009-11-25  0:38                                     ` Michael Ellerman
2009-11-26  5:22                                     ` Benjamin Herrenschmidt
2009-11-26 15:35                                       ` Albert Herranz
2009-11-26 21:13                                         ` Benjamin Herrenschmidt
2009-11-22 23:34                         ` [RFC PATCH 12/19] powerpc: gamecube: platform support Grant Likely
2009-11-23 20:02                           ` Albert Herranz
2009-11-24 21:39                         ` Segher Boessenkool
2009-11-25 17:24                           ` Albert Herranz
2009-11-26 21:53                             ` Segher Boessenkool
2009-11-26 22:07                               ` Albert Herranz
2009-11-27  0:09                                 ` Segher Boessenkool
2009-11-27 21:35                                   ` Benjamin Herrenschmidt
2009-11-28  3:56                                     ` Grant Likely
2009-11-28  3:56                                       ` Grant Likely
2009-11-22 23:28                       ` [RFC PATCH 11/19] powerpc: gamecube/wii: flipper interrupt controller support Grant Likely
2009-11-23 19:59                         ` Albert Herranz
2009-11-26  5:18                         ` Benjamin Herrenschmidt
2009-11-26 15:33                           ` Albert Herranz
2009-11-26 21:12                             ` Benjamin Herrenschmidt
2009-11-26 23:00                           ` Segher Boessenkool
2009-11-26 23:38                             ` Benjamin Herrenschmidt
2009-11-24 21:30                       ` Segher Boessenkool
2009-11-25 17:13                         ` Albert Herranz
2009-11-26 21:52                           ` Segher Boessenkool
2009-11-26 22:05                             ` Albert Herranz
2009-11-27  0:06                               ` Segher Boessenkool
2009-11-27 12:17                                 ` Segher Boessenkool
2009-11-27 17:27                                   ` Albert Herranz
2009-11-27 21:34                                     ` Benjamin Herrenschmidt
2009-11-28  2:04                                       ` Segher Boessenkool
2009-11-28  2:26                                         ` Benjamin Herrenschmidt
2009-11-26  5:18                       ` Benjamin Herrenschmidt
2009-11-26 15:30                         ` Albert Herranz
2009-11-26 21:10                           ` Benjamin Herrenschmidt
2009-11-22 22:27                     ` [RFC PATCH 10/19] powerpc: gamecube/wii: early debugging using usbgecko Arnd Bergmann
2009-11-23 19:10                       ` Albert Herranz
2009-11-23 22:13                         ` Arnd Bergmann
2009-11-26  5:14                       ` Benjamin Herrenschmidt
2009-11-26 22:54                         ` Segher Boessenkool
2009-11-26 23:27                           ` Benjamin Herrenschmidt
2009-11-24  0:54                     ` Segher Boessenkool
2009-11-24 18:19                       ` Albert Herranz
2009-11-22 23:22                   ` [RFC PATCH 09/19] powerpc: gamecube/wii: udbg support for usbgecko Grant Likely
2009-11-24  0:49                   ` Segher Boessenkool
2009-11-24 18:08                     ` Albert Herranz
2009-11-24 21:19                       ` Segher Boessenkool
2009-11-25 17:07                         ` Albert Herranz
2009-11-26  5:12                   ` Benjamin Herrenschmidt
2009-11-26 15:28                     ` Albert Herranz
2009-11-26 21:02                       ` Benjamin Herrenschmidt
2009-11-26 23:12                       ` Segher Boessenkool
2009-11-22 23:21                 ` [RFC PATCH 08/19] powerpc: gamecube/wii: do not include PCI support Grant Likely
2009-11-26  5:10                   ` Benjamin Herrenschmidt
2009-11-22 22:20               ` [RFC PATCH 07/19] powerpc: gamecube/wii: declare as non-coherent platforms Arnd Bergmann
2009-11-23 19:06                 ` Albert Herranz
2009-11-26  5:09               ` Benjamin Herrenschmidt
2009-11-22 23:20             ` [RFC PATCH 06/19] powerpc: gamecube/wii: introduce GAMECUBE_COMMON Grant Likely
2009-11-23 19:56               ` Albert Herranz
2009-11-24  0:35             ` Segher Boessenkool
2009-11-24 18:03               ` Albert Herranz
2009-11-24 21:15                 ` Segher Boessenkool
2009-11-24 22:33                   ` Arnd Bergmann
2009-11-25 17:06                   ` Albert Herranz
2009-11-26  5:08                 ` Benjamin Herrenschmidt
2009-11-26 15:22                   ` Albert Herranz
2009-11-27 12:12                   ` Segher Boessenkool
2009-11-22 23:19           ` [RFC PATCH 05/19] powerpc: wii: bootwrapper bits Grant Likely
2009-11-24  0:33           ` Segher Boessenkool
2009-11-24 17:56             ` Albert Herranz
2009-11-24 21:13               ` Segher Boessenkool
2009-11-22 23:18         ` [RFC PATCH 04/19] powerpc: wii: device tree Grant Likely
2009-11-23 19:54           ` Albert Herranz
2009-11-23 20:36             ` Grant Likely
2009-11-23 21:55               ` Albert Herranz
2009-11-25 16:57             ` Segher Boessenkool
2009-11-25 18:09               ` Albert Herranz
2009-11-25 17:49         ` Segher Boessenkool
2009-11-25 18:34           ` Albert Herranz
2009-11-26  4:58             ` Benjamin Herrenschmidt
2009-11-26 15:19               ` Albert Herranz
2009-11-26  4:51           ` Benjamin Herrenschmidt
2009-11-26 15:18             ` Albert Herranz
2009-11-26 21:01               ` Benjamin Herrenschmidt
2009-11-26 21:38                 ` Albert Herranz
2009-11-26 22:37                   ` Benjamin Herrenschmidt
2009-11-27  0:16                     ` Segher Boessenkool
2009-11-27  0:15                       ` Benjamin Herrenschmidt
2009-11-26 23:25                 ` Segher Boessenkool
2009-11-26 22:50             ` Segher Boessenkool
2009-11-26 23:02               ` Albert Herranz
2009-11-26  4:45         ` Benjamin Herrenschmidt
2009-11-26 15:09           ` Albert Herranz
2009-11-26 20:48             ` Benjamin Herrenschmidt
2009-11-26 21:20               ` Albert Herranz
2009-11-26 23:17               ` Segher Boessenkool
2009-11-26 22:45           ` Segher Boessenkool
2009-11-22 23:11       ` [RFC PATCH 03/19] powerpc: gamecube: bootwrapper bits Grant Likely
2009-11-24  0:08       ` Segher Boessenkool
2009-11-24 17:38         ` Albert Herranz
2009-11-24 21:00           ` Segher Boessenkool
2009-11-24 23:45             ` Albert Herranz
2009-11-25 16:53               ` Segher Boessenkool
2009-11-26  4:36             ` Benjamin Herrenschmidt
2009-11-26  8:17               ` Gabriel Paubert
2009-11-26  8:46                 ` Benjamin Herrenschmidt
2009-11-26 23:06                 ` Segher Boessenkool
2009-11-26  4:35           ` Benjamin Herrenschmidt
2009-11-26 22:23             ` Segher Boessenkool
2009-11-22 23:02     ` [RFC PATCH 02/19] powerpc: gamecube: device tree Grant Likely
2009-11-23 19:44       ` Albert Herranz
2009-11-23 20:19         ` Grant Likely
2009-11-23 20:25           ` Albert Herranz
2009-11-24 22:53           ` Segher Boessenkool
2009-11-26  4:23           ` Benjamin Herrenschmidt
2009-11-27 12:09             ` Segher Boessenkool
2009-11-24 22:36       ` Segher Boessenkool
2009-11-26  4:23         ` Benjamin Herrenschmidt
2009-11-26 22:15           ` Segher Boessenkool
2009-11-26 22:38             ` Benjamin Herrenschmidt
2009-11-27  0:18               ` Segher Boessenkool
2009-11-26  4:21       ` Benjamin Herrenschmidt
2009-11-26  4:38         ` Grant Likely
2009-11-26  5:29           ` Benjamin Herrenschmidt
2009-11-26  5:51             ` Grant Likely
2009-11-26 22:30         ` Segher Boessenkool
2009-11-25 18:00     ` Segher Boessenkool
2009-11-25 18:43       ` Albert Herranz
2009-11-27 12:07         ` Segher Boessenkool
2009-11-26  4:27       ` Benjamin Herrenschmidt
2009-11-26 22:19         ` Segher Boessenkool
2009-11-22 22:50   ` [RFC PATCH 01/19] powerpc: gamecube/wii: usbgecko bootwrapper console support Grant Likely
2009-11-26  4:12   ` Benjamin Herrenschmidt
2009-11-22 22:48 ` [RFC PATCH 00/19] powerpc: nintendo gamecube and wii support Grant Likely
2009-11-22 22:49 ` Arnd Bergmann
2009-11-23 19:22   ` Albert Herranz
2009-11-23  5:13 ` Wolfram Sang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4B0AEEDA.6070203@yahoo.es \
    --to=albert_herranz@yahoo.es \
    --cc=grant.likely@secretlab.ca \
    --cc=linuxppc-dev@lists.ozlabs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.