1. 10 11月, 2011 1 次提交
    • S
      arm/tegra: Don't create duplicate gpio and pinmux devices · 4b91b6fb
      Stephen Warren 提交于
      *_pinmux_init() register the GPIO and pinmux devices so that they're ready
      before any other device needs them.
      
      *_pinmux_init() are also called by board-dt.c in order to set up the GPIO
      and pinmux configurations. In this case, if we register the devices, they
      end up being probed once due to this registration, and a second time due
      to a device-tree node (or vice-versa). The second probe fails since the
      memory regions are already requested. Besides, we don't actually want the
      duplicated devices.
      
      To avoid this duplicate registration, modify *_pinmux_init() to check
      whether it's running on a DT machine. If not, register the pinmux devices.
      If so, don't register them.
      
      Finally, modify board-dt.c to call the *_pinmux_init() after all devices have
      been instantiated from device-tree. This allows the GPIO and pinmux devices
      to be instantiated and initialized before calling functions to configure the
      hardware.
      
      This has one disadvantage: The pinmux and GPIO initialization now happens
      after /all/ devices are instantiated, rather than after just gpio and
      pinmux but before anything else. So the correct HW configuration is not
      in place when e.g. the SD/MMC device is probed. Long-term, this should be
      solved by doing both:
      
      a) Initializing the HW state from DT nodes during GPIO and pinmux device
         probe.
      b) Using the deferred driver probe mechanism, so that drivers can defer
         their probe until after the gpio and pinmux drivers have probed.
      
      v2: s/int is_dt/bool is_dt/
      v3: Use of_machine_is_compatible inside *_pinmux_init() rather than passing
      an explicit parameter into the function from outside.
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      4b91b6fb
  2. 08 11月, 2011 28 次提交
  3. 07 11月, 2011 11 次提交