1. 20 9月, 2012 3 次提交
    • S
      ARM: bcm2835: add stub clock driver · 75fabc3f
      Simon Arlott 提交于
      This patch adds a minimal stub clock driver for the BCM2835. Its sole
      purpose is to allow the PL011 AMBA clk_get() API calls to provide
      something that looks enough like a clock that the driver probes and
      operates correctly.
      
      This patch was extracted from git://github.com/lp0/linux.git branch
      rpi-split as of 2012/09/08, and modified as follows:
      
      * Reworked to call clk_register_fixed_rate(), and clk_register_clkdev()
        rather than using static data to represent the clocks.
      * Moved implementation to drivers/clk/.
      * Modified .dev_id for UART clocks to match UART DT node names.
      * s/bcm2708/bcm2835/.
      * Modified device tree vendor prefix.
      Signed-off-by: NChris Boot <bootc@bootc.net>
      Signed-off-by: NSimon Arlott <simon@fire.lp0.eu>
      Signed-off-by: NDom Cobley <popcornmix@gmail.com>
      Signed-off-by: NDom Cobley <dc4@broadcom.com>
      Signed-off-by: NStephen Warren <swarren@wwwdotorg.org>
      Acked-by: NMike Turquette <mturquette@linaro.org>
      75fabc3f
    • S
      ARM: bcm2835: add system timer · ee4af569
      Simon Arlott 提交于
      The System Timer peripheral provides four 32-bit timer channels and a
      single 64-bit free running counter. Each channel has an output compare
      register, which is compared against the 32 least significant bits of the
      free running counter values, and generates an interrupt.
      
      Timer 3 is used as the Linux timer.
      
      The BCM2835 also contains an SP804-based timer module. However, it
      apparently has significant differences from the standard SP804 IP block,
      and Broadcom's documentation recommends using the system timer instead.
      
      This patch was extracted from git://github.com/lp0/linux.git branch
      rpi-split as of 2012/09/08, and modified as follows:
      
      * s/bcm2708/bcm2835/.
      * Modified device tree vendor prefix.
      * Moved to drivers/clocksource/. This looks like the desired location for
        such code now.
      * Added DT binding docs.
      * Moved struct sys_timer bcm2835_timer into time.c to encapsulate it more.
      * Simplified bcm2835_time_init() to find one matching node and operate on
        it, rather than looping over all matching nodes. This seems more
        consistent with other clocksource code.
      * Simplified bcm2835_time_init() using of_iomap().
      * Renamed struct bcm2835_timer.index to match_mask to better represent its
        purpose.
      * s/printk(PR_INFO/pr_info(/
      Signed-off-by: NChris Boot <bootc@bootc.net>
      Signed-off-by: NSimon Arlott <simon@fire.lp0.eu>
      Signed-off-by: NDom Cobley <popcornmix@gmail.com>
      Signed-off-by: NDom Cobley <dc4@broadcom.com>
      Signed-off-by: NStephen Warren <swarren@wwwdotorg.org>
      Acked-by: NArnd Bergmann <arnd@arndb.de>
      ee4af569
    • S
      ARM: bcm2835: add interrupt controller driver · 89214f00
      Simon Arlott 提交于
      The BCM2835 contains a custom interrupt controller, which supports 72
      interrupt sources using a 2-level register scheme. The interrupt
      controller, or the HW block containing it, is referred to occasionally
      as "armctrl" in the SoC documentation, hence the symbol naming in the
      code.
      
      This patch was extracted from git://github.com/lp0/linux.git branch
      rpi-split as of 2012/09/08, and modified as follows:
      
      * s/bcm2708/bcm2835/.
      * Modified device tree vendor prefix.
      * Moved implementation to drivers/irchip/.
      * Added devicetree documentation, and hence removed list of IRQs from
        bcm2835.dtsi.
      * Changed shift in MAKE_HWIRQ() and HWIRQ_BANK() from 8 to 5 to reduce
        the size of the hwirq space, and pass the total size of the hwirq space
        to irq_domain_add_linear(), rather than just the number of valid hwirqs;
        the two are different due to the hwirq space being sparse.
      * Added the interrupt controller DT node to the top-level of the DT,
        rather than nesting it inside a /axi node. Hence, changed the reg value
        since /axi had a ranges property. This seems simpler to me, but I'm not
        sure if everyone will like this change or not.
      * Don't set struct irq_domain_ops.map = irq_domain_simple_map, hence
        removing the need to patch include/linux/irqdomain.h or
        kernel/irq/irqdomain.c.
      * Simplified armctrl_of_init() using of_iomap().
      * Removed unused IS_VALID_BANK()/IS_VALID_IRQ() macros.
      * Renamed armctrl_handle_irq() to prevent possible symbol clashes.
      * Made armctrl_of_init() static.
      * Removed comment "Each bank is registered as a separate interrupt
        controller" since this is no longer true.
      * Removed FSF address from license header.
      * Added my name to copyright header.
      Signed-off-by: NChris Boot <bootc@bootc.net>
      Signed-off-by: NSimon Arlott <simon@fire.lp0.eu>
      Signed-off-by: NDom Cobley <popcornmix@gmail.com>
      Signed-off-by: NDom Cobley <dc4@broadcom.com>
      Signed-off-by: NStephen Warren <swarren@wwwdotorg.org>
      Acked-by: NArnd Bergmann <arnd@arndb.de>
      89214f00
  2. 19 9月, 2012 4 次提交
  3. 17 9月, 2012 1 次提交
  4. 16 9月, 2012 1 次提交
    • M
      mfd: core: Push irqdomain mapping out into devices · 0848c94f
      Mark Brown 提交于
      Currently the MFD core supports remapping MFD cell interrupts using an
      irqdomain but only if the MFD is being instantiated using device tree
      and only if the device tree bindings use the pattern of registering IPs
      in the device tree with compatible properties.  This will be actively
      harmful for drivers which support non-DT platforms and use this pattern
      for their DT bindings as it will mean that the core will silently change
      remapping behaviour and it is also limiting for drivers which don't do
      DT with this particular pattern.  There is also a potential fragility if
      there are interrupts not associated with MFD cells and all the cells are
      omitted from the device tree for some reason.
      
      Instead change the code to take an IRQ domain as an optional argument,
      allowing drivers to take the decision about the parent domain for their
      interrupts.  The one current user of this feature is ab8500-core, it has
      the domain lookup pushed out into the driver.
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      Signed-off-by: NSamuel Ortiz <sameo@linux.intel.com>
      0848c94f
  5. 14 9月, 2012 13 次提交
  6. 13 9月, 2012 2 次提交
  7. 12 9月, 2012 1 次提交
    • R
      i2c: pnx: Fix read transactions of >= 2 bytes · c076ada4
      Roland Stigge 提交于
      On transactions with n>=2 bytes, the controller actually wrongly clocks in n+1
      bytes. This is caused by the (wrong) assumption that RFE in the Status Register
      is 1 iff there is no byte already ordered (via a dummy TX byte). This lead to
      the implementation of synchronized byte ordering, e.g.:
      
      Dummy-TX - RX - Dummy-TX - RX - ...
      
      But since RFE actually stays high after some Dummy-TX, it rather looks like:
      
      Dummy-TX - Dummy-TX - RX - Dummy-TX - RX - (RX)
      
      The last RX byte is clocked in by the bus controller, but ignored by the kernel
      when filling the userspace buffer.
      
      This patch fixes the issue by asking for RX via Dummy-TX asynchronously.
      Introducing a separate counter for TX bytes.
      Signed-off-by: NRoland Stigge <stigge@antcom.de>
      Signed-off-by: NWolfram Sang <w.sang@pengutronix.de>
      c076ada4
  8. 11 9月, 2012 3 次提交
  9. 08 9月, 2012 3 次提交
  10. 07 9月, 2012 8 次提交
  11. 06 9月, 2012 1 次提交