1. 18 5月, 2015 1 次提交
  2. 23 11月, 2014 4 次提交
    • J
      irqdomain: Introduce helper function irq_domain_add_hierarchy() · afb7da83
      Jiang Liu 提交于
      Introduce helper function irq_domain_add_hierarchy(), which creates
      a linear irqdomain if parameter 'size' is not zero, otherwise creates
      a tree irqdomain.
      Signed-off-by: NJiang Liu <jiang.liu@linux.intel.com>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: Bjorn Helgaas <bhelgaas@google.com>
      Cc: Grant Likely <grant.likely@linaro.org>
      Cc: Marc Zyngier <marc.zyngier@arm.com>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Cc: Yingjoe Chen <yingjoe.chen@mediatek.com>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Matthias Brugger <matthias.bgg@gmail.com>
      Link: http://lkml.kernel.org/r/1416061447-9472-5-git-send-email-jiang.liu@linux.intel.comSigned-off-by: NThomas Gleixner <tglx@linutronix.de>
      afb7da83
    • J
      irqdomain: Implement a method to automatically call parent domains alloc/free · 36d72731
      Jiang Liu 提交于
      Add a flags to irq_domain.flags to control whether the irqdomain core
      should automatically call parent irqdomain's alloc/free callbacks. It
      help to reduce hierarchy irqdomains users' code size.
      Signed-off-by: NJiang Liu <jiang.liu@linux.intel.com>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: Bjorn Helgaas <bhelgaas@google.com>
      Cc: Grant Likely <grant.likely@linaro.org>
      Cc: Marc Zyngier <marc.zyngier@arm.com>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Cc: Yingjoe Chen <yingjoe.chen@mediatek.com>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Matthias Brugger <matthias.bgg@gmail.com>
      Link: http://lkml.kernel.org/r/1416061447-9472-4-git-send-email-jiang.liu@linux.intel.comSigned-off-by: NThomas Gleixner <tglx@linutronix.de>
      36d72731
    • J
      genirq: Introduce helper irq_domain_set_info() to reduce duplicated code · 1b537708
      Jiang Liu 提交于
      Signed-off-by: NJiang Liu <jiang.liu@linux.intel.com>
      Cc: Bjorn Helgaas <bhelgaas@google.com>
      Cc: Grant Likely <grant.likely@linaro.org>
      Cc: Marc Zyngier <marc.zyngier@arm.com>
      Cc: Yingjoe Chen <yingjoe.chen@mediatek.com>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      1b537708
    • J
      irqdomain: Introduce new interfaces to support hierarchy irqdomains · f8264e34
      Jiang Liu 提交于
      We plan to use hierarchy irqdomain to suppport CPU vector assignment,
      interrupt remapping controller, IO-APIC controller, MSI interrupt
      and hypertransport interrupt etc on x86 platforms. So extend irqdomain
      interfaces to support hierarchy irqdomain.
      
      There are already many clients of current irqdomain interfaces.
      To minimize the changes, we choose to introduce new version 2 interfaces
      to support hierarchy instead of extending existing irqdomain interfaces.
      
      According to Thomas's suggestion, the most important design decision is
      to build hierarchy struct irq_data to support hierarchy irqdomain, so
      hierarchy irqdomain related data could be saved in struct irq_data.
      With support of hierarchy irq_data, we could also support stacked
      irq_chips. This is most useful in case of set_affinity().
      
      The new hierarchy irqdomain introduces following interfaces:
      1) irq_domain_alloc_irqs()/irq_domain_free_irqs(): allocate/release IRQ
         and related resources.
      2) __irq_domain_alloc_irqs(): a special version to support legacy IRQs.
      3) irq_domain_activate_irq()/irq_domain_deactivate_irq(): program
         interrupt controllers to activate/deactivate interrupt.
      
      There are also several help functions to ease irqdomain implemenations:
      1) irq_domain_get_irq_data(): get irq_data associated with a specific
         irqdomain.
      2) irq_domain_set_hwirq_and_chip(): save irqdomain specific data into
         irq_data.
      3) irq_domain_alloc_irqs_parent()/irq_domain_free_irqs_parent(): invoke
         parent irqdomain's alloc/free callbacks.
      
      We also changed irq_startup()/irq_shutdown() to invoke
      irq_domain_activate_irq()/irq_domain_deactivate_irq() to program
      interrupt controller when start/stop interrupts.
      
      [ tglx: Folded parts of the later patch series in ]
      Signed-off-by: NJiang Liu <jiang.liu@linux.intel.com>
      Cc: Bjorn Helgaas <bhelgaas@google.com>
      Cc: Grant Likely <grant.likely@linaro.org>
      Cc: Marc Zyngier <marc.zyngier@arm.com>
      Cc: Yingjoe Chen <yingjoe.chen@mediatek.com>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      f8264e34
  3. 22 6月, 2014 1 次提交
  4. 24 6月, 2013 3 次提交
    • G
      irqdomain: make irq_linear_revmap() a fast path again · d3dcb436
      Grant Likely 提交于
      Over the years, irq_linear_revmap() gained tests and checks to make sure
      callers were using it safely, which while important, also make it less
      of a fast path. After the irqdomain refactoring done recently, it is now
      possible to make irq_linear_revmap() a fast path again. This patch moves
      irq_linear_revmap() to the header file and makes it a static inline so
      that interrupt controller drivers using a linear mapping can decode the
      virq from a hwirq in just a couple of instructions.
      Signed-off-by: NGrant Likely <grant.likely@linaro.org>
      d3dcb436
    • G
      irqdomain: remove irq_domain_generate_simple() · 56a3d5ac
      Grant Likely 提交于
      Nobody calls it; remove the function
      Signed-off-by: NGrant Likely <grant.likely@linaro.org>
      56a3d5ac
    • G
      irqdomain: Refactor irq_domain_associate_many() · ddaf144c
      Grant Likely 提交于
      Originally, irq_domain_associate_many() was designed to unwind the
      mapped irqs on a failure of any individual association. However, that
      proved to be a problem with certain IRQ controllers. Some of them only
      support a subset of irqs, and will fail when attempting to map a
      reserved IRQ. In those cases we want to map as many IRQs as possible, so
      instead it is better for irq_domain_associate_many() to make a
      best-effort attempt to map irqs, but not fail if any or all of them
      don't succeed. If a caller really cares about how many irqs got
      associated, then it should instead go back and check that all of the
      irqs is cares about were mapped.
      
      The original design open-coded the individual association code into the
      body of irq_domain_associate_many(), but with no longer needing to
      unwind associations, the code becomes simpler to split out
      irq_domain_associate() to contain the bulk of the logic, and
      irq_domain_associate_many() to be a simple loop wrapper.
      
      This patch also adds a new error check to the associate path to make
      sure it isn't called for an irq larger than the controller can handle,
      and adds locking so that the irq_domain_mutex is held while setting up a
      new association.
      
      v3: Fixup missing change to irq_domain_add_tree()
      v2: Fixup x86 warning. irq_domain_associate_many() no longer returns an
          error code, but reports errors to the printk log directly. In the
          majority of cases we don't actually want to fail if there is a
          problem, but rather log it and still try to boot the system.
      Signed-off-by: NGrant Likely <grant.likely@linaro.org>
      
      irqdomain: Fix flubbed irq_domain_associate_many refactoring
      
      commit d39046ec72, "irqdomain: Refactor irq_domain_associate_many()" was
      missing the following hunk which causes a boot failure on anything using
      irq_domain_add_tree() to allocate an irq domain.
      Signed-off-by: NGrant Likely <grant.likely@linaro.org>
      Cc: Michael Neuling <mikey@neuling.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
      Cc: Thomas Gleixner <tglx@linutronix.de>,
      Cc: Stephen Rothwell <sfr@canb.auug.org.au>
      ddaf144c
  5. 10 6月, 2013 5 次提交
    • G
      irqdomain: Clean up aftermath of irq_domain refactoring · fa40f377
      Grant Likely 提交于
      After refactoring the irqdomain code, there are a number of API
      functions that are merely empty wrappers around core code. Drop those
      wrappers out of the C file and replace them with static inlines in the
      header.
      Signed-off-by: NGrant Likely <grant.likely@linaro.org>
      fa40f377
    • G
      irqdomain: Eliminate revmap type · 1aa0dd94
      Grant Likely 提交于
      The NOMAP irq_domain type is only used by a handful of interrupt
      controllers and it unnecessarily complicates the code by adding special
      cases on how to look up mappings and different revmap functions are used
      for each type which need to validate the correct type is passed to it
      before performing the reverse map. Eliminating the revmap_type and
      making a single reverse mapping function simplifies the code. It also
      shouldn't be any slower than having separate revmap functions because
      the type of the revmap needed to be checked anyway.
      
      The linear and tree revmap types were already merged in a previous
      patch. This patch rolls the NOMAP or direct mapping behaviour into the
      same domain code making is possible for an irq domain to do any mapping
      type; linear, tree or direct; and that the mapping will be transparent
      to the interrupt controller driver.
      
      With this change, direct mappings will get stored in the linear or tree
      mapping for consistency. Reverse mapping from the hwirq to virq will go
      through the normal lookup process. However, any controller using a
      direct mapping can take advantage of knowing that hwirq==virq for any
      mapped interrupts skip doing a revmap lookup when handling IRQs.
      Signed-off-by: NGrant Likely <grant.likely@linaro.org>
      1aa0dd94
    • G
      irqdomain: merge linear and tree reverse mappings. · cef5075c
      Grant Likely 提交于
      Keeping them separate makes irq_domain more complex and adds a lot of
      code (as proven by the diffstat).  Merging them simplifies the whole
      scheme.  This change makes it so both the tree and linear methods can be
      used by the same irq_domain instance.  If the hwirq is less than the
      ->linear_size, then the linear map is used to reverse map the hwirq.
      Otherwise the radix tree is used.  The test for which map to use is no
      more expensive that the existing code, so the performance of fast path
      is preserved.
      
      It also means that complex interrupt controllers can use both the
      linear map and a tree in the same domain.  This may be useful for an
      interrupt controller with a base set of core irqs and a large number
      of GPIOs which might be used as irqs.  The linear map could cover the
      core irqs, and the tree used for thas irqs.  The linear map could
      cover the core irqs, and the tree used for the gpios.
      
      v2: Drop reorganization of revmap data
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Rob Herring <rob.herring@calxeda.com>
      cef5075c
    • G
      irqdomain: Add a name field · 0bb4afb4
      Grant Likely 提交于
      This patch adds a name field to the irq_domain structure to help mere
      mortals understand the mappings between irq domains and virqs. It also
      converts a number of places that have open-coded some kind of fudging
      an irqdomain name to use the new field. This means a more consistent
      display of names in irq domain log messages and debugfs output.
      Signed-off-by: NGrant Likely <grant.likely@linaro.org>
      0bb4afb4
    • G
      irqdomain: Replace LEGACY mapping with LINEAR · 9bbf877d
      Grant Likely 提交于
      The LEGACY mapping unnecessarily complicates the irqdomain code and
      can easily be implemented with a linear mapping.  By ripping it out
      and replacing it with the LINEAR mapping the object size of
      irqdomain.c shrinks by about 330 bytes (ARMv7) which offsets the
      additional allocation required by the linear map.  It also makes it
      possible for current LEGACY map users to pre-allocate irq_descs for a
      subset of the hwirqs and dynamically allocate the rest as needed.
      Signed-off-by: NGrant Likely <grant.likely@linaro.org>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Rob Herring <rob.herring@calxeda.com>
      9bbf877d
  6. 29 5月, 2013 1 次提交
    • T
      genirq: Generic chip: Add linear irq domain support · 088f40b7
      Thomas Gleixner 提交于
      Provide infrastructure for irq chip implementations which work on
      linear irq domains.
      
      - Interface to allocate multiple generic chips which are associated to
        the irq domain.
      
      - Interface to get the generic chip pointer for a particular hardware
        interrupt in the domain.
      
      - irq domain mapping function to install the chip for a particular
        interrupt.
      
      Note: This lacks a removal function for now.
      
      [ Sebastian Hesselbarth: Mask cache and pointer math fixups ]
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
      Cc: Andrew Lunn <andrew@lunn.ch>
      Cc: Russell King - ARM Linux <linux@arm.linux.org.uk>
      Cc: Jason Cooper <jason@lakedaemon.net>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Jean-Francois Moine <moinejf@free.fr>
      Cc: devicetree-discuss@lists.ozlabs.org
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
      Cc: Gregory Clement <gregory.clement@free-electrons.com>
      Cc: Gerlando Falauto <gerlando.falauto@keymile.com>
      Cc: Rob Landley <rob@landley.net>
      Acked-by: NGrant Likely <grant.likely@linaro.org>
      Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
      Cc: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
      Link: http://lkml.kernel.org/r/20130506142539.450634298@linutronix.deSigned-off-by: NThomas Gleixner <tglx@linutronix.de>
      088f40b7
  7. 11 7月, 2012 3 次提交
    • G
      irqdomain: Eliminate dedicated radix lookup functions · d6b0d1f7
      Grant Likely 提交于
      In preparation to remove the slow revmap path, eliminate the public
      radix revmap lookup functions.  This simplifies the code and makes the
      slowpath removal patch a lot simpler.
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Rob Herring <rob.herring@calxeda.com>
      d6b0d1f7
    • G
      irqdomain: Support for static IRQ mapping and association. · 98aa468e
      Grant Likely 提交于
      This adds a new strict mapping API for supporting creation of linux IRQs
      at existing positions within the domain. The new routines are as follows:
      
      For dynamic allocation and insertion to specified ranges:
      
      	- irq_create_identity_mapping()
      	- irq_create_strict_mappings()
      
      These will allocate and associate a range of linux IRQs at the specified
      location. This can be used by controllers that have their own static linux IRQ
      definitions to map a hwirq range to, as well as for platforms that wish to
      establish 1:1 identity mapping between linux and hwirq space.
      
      For insertion to specified ranges by platforms that do their own irq_desc
      management:
      
      	- irq_domain_associate()
      	- irq_domain_associate_many()
      
      These in turn call back in to the domain's ->map() routine, for further
      processing by the platform. Disassociation of IRQs get handled through
      irq_dispose_mapping() as normal.
      
      With these in place it should be possible to begin migration of legacy IRQ
      domains to linear ones, without requiring special handling for static vs
      dynamic IRQ definitions in DT vs non-DT paths. This also makes it possible
      for domains with static mappings to adopt whichever tree model best fits
      their needs, rather than simply restricting them to linear revmaps.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      [grant.likely: Reorganized irq_domain_associate{,_many} to have all logic in one place]
      [grant.likely: Add error checking for unallocated irq_descs at associate time]
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Rob Herring <rob.herring@calxeda.com>
      98aa468e
    • M
      irq_domain: Standardise legacy/linear domain selection · 781d0f46
      Mark Brown 提交于
      A large proportion of interrupt controllers that support legacy mappings
      do so because non-DT systems need to use fixed IRQ numbers when registering
      devices via buses but can otherwise use a linear mapping. The interrupt
      controller itself typically is not affected by the mapping used and best
      practice is to use a linear mapping where possible so drivers frequently
      select at runtime depending on if a legacy range has been allocated to
      them.
      
      Standardise this behaviour by providing irq_domain_register_simple() which
      will allocate a linear mapping unless a positive first_irq is provided in
      which case it will fall back to a legacy mapping. This helps make best
      practice for irq_domain adoption clearer.
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      781d0f46
  8. 20 5月, 2012 2 次提交
  9. 12 4月, 2012 1 次提交
    • G
      irq_domain: Move irq_virq_count into NOMAP revmap · 6fa6c8e2
      Grant Likely 提交于
      This patch replaces the old global setting of irq_virq_count that is only
      used by the NOMAP mapping and instead uses a revmap_data property so that
      the maximum NOMAP allocation can be set per NOMAP irq_domain.
      
      There is exactly one user of irq_virq_count in-tree right now: PS3.
      Also, irq_virq_count is only useful for the NOMAP mapping.  So,
      instead of having a single global irq_virq_count values, this change
      drops it entirely and added a max_irq argument to irq_domain_add_nomap().
      That makes it a property of an individual nomap irq domain instead of
      a global system settting.
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      Tested-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      6fa6c8e2
  10. 11 4月, 2012 1 次提交
  11. 27 2月, 2012 1 次提交
    • G
      irq_domain: Centralize definition of irq_dispose_mapping() · d593f25f
      Grant Likely 提交于
      Several architectures define their own empty irq_dispose_mapping().  Since
      the irq_domain code is centralized now, there is little need to do so.  This
      patch removes them and creates a new empty copy when !CONFIG_IRQ_DOMAIN is
      selected.
      
      The patch also means that IRQ_DOMAIN becomes selectable on all architectures.
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Jonas Bonn <jonas@southpole.se>
      Cc: sparclinux@vger.kernel.org
      Cc: linux@lists.openrisc.net
      d593f25f
  12. 16 2月, 2012 7 次提交
    • G
      irq_domain: constify irq_domain_ops · a18dc81b
      Grant Likely 提交于
      Make irq_domain_ops pointer a constant to make it safer for multiple
      instances to share the same ops pointer and change the irq_domain code
      so that it does not modify the ops.
      
      v4: Fix mismatched type reference in powerpc code
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: NOlof Johansson <olof@lixom.net>
      a18dc81b
    • G
      irq_domain: Create common xlate functions that device drivers can use · 16b2e6e2
      Grant Likely 提交于
      Rather than having each interrupt controller driver creating its own barely
      unique .xlate function for irq_domain, create a library of translators which
      any driver can use directly.
      
      v5: - Remove irq_domain_xlate_pci().  It was incorrect.
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Mark Salter <msalter@redhat.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: NOlof Johansson <olof@lixom.net>
      16b2e6e2
    • G
      irq_domain: Remove irq_domain_add_simple() · 6b783f7c
      Grant Likely 提交于
      irq_domain_add_simple() was a stop-gap measure until complete irq_domain
      support was complete.  This patch removes the irq_domain_add_simple()
      interface.
      
      This patch also drops the explicit irq_domain initialization performed
      by the mach-versatile code because the versatile interrupt controller
      already has irq_domain support built into it.  This was a bug that was
      hanging around quietly for a while, but with the full irq_domain which
      actually verifies that irq_domain ranges are available it would cause
      the registration to fail and the system wouldn't boot.
      
      v4: Fixed number of irqs in mx5 gpio code
      v2: Updated to pass in host_data pointer on irq_domain allocation.
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Cc: Russell King <linux@arm.linux.org.uk>
      Tested-by: NOlof Johansson <olof@lixom.net>
      6b783f7c
    • G
      irq_domain: Remove 'new' irq_domain in favour of the ppc one · 75294957
      Grant Likely 提交于
      This patch removes the simplistic implementation of irq_domains and enables
      the powerpc infrastructure for all irq_domain users.  The powerpc
      infrastructure includes support for complex mappings between Linux and
      hardware irq numbers, and can manage allocation of irq_descs.
      
      This patch also converts the few users of irq_domain_add()/irq_domain_del()
      to call irq_domain_add_legacy() instead.
      
      v3: Fix bug that set up too many irqs in translation range.
      v2: Fix removal of irq_alloc_descs() call in gic driver
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: NOlof Johansson <olof@lixom.net>
      75294957
    • G
      irq_domain: Add support for base irq and hwirq in legacy mappings · 1bc04f2c
      Grant Likely 提交于
      Add support for a legacy mapping where irq = (hwirq - first_hwirq + first_irq)
      so that a controller driver can allocate a fixed range of irq_descs and use
      a simple calculation to translate back and forth between linux and hw irq
      numbers.  This is needed to use an irq_domain with many of the ARM interrupt
      controller drivers that manage their own irq_desc allocations.  Ultimately
      the goal is to migrate those drivers to use the linear revmap, but doing it
      this way allows each driver to be converted separately which makes the
      migration path easier.
      
      This patch generalizes the IRQ_DOMAIN_MAP_LEGACY method to use
      (first_irq-first_hwirq) as the offset between hwirq and linux irq number,
      and adds checks to make sure that the hwirq number does not exceed range
      assigned to the controller.
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: NOlof Johansson <olof@lixom.net>
      1bc04f2c
    • G
      irq_domain: Replace irq_alloc_host() with revmap-specific initializers · a8db8cf0
      Grant Likely 提交于
      Each revmap type has different arguments for setting up the revmap.
      This patch splits up the generator functions so that each revmap type
      can do its own setup and the user doesn't need to keep track of how
      each revmap type handles the arguments.
      
      This patch also adds a host_data argument to the generators.  There are
      cases where the host_data pointer will be needed before the function returns.
      ie. the legacy map calls the .map callback for each irq before returning.
      
      v2: - Add void *host_data argument to irq_domain_add_*() functions
          - fixed failure to compile
          - Moved IRQ_DOMAIN_MAP_* defines into irqdomain.c
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: NOlof Johansson <olof@lixom.net>
      a8db8cf0
    • G
      irq_domain: Move irq_domain code from powerpc to kernel/irq · cc79ca69
      Grant Likely 提交于
      This patch only moves the code.  It doesn't make any changes, and the
      code is still only compiled for powerpc.  Follow-on patches will generalize
      the code for other architectures.
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: NOlof Johansson <olof@lixom.net>
      cc79ca69
  13. 15 2月, 2012 1 次提交
    • G
      irq_domain: Make irq_domain structure match powerpc's irq_host · 7bb69bad
      Grant Likely 提交于
      Part of the series to unify the irq remapping mechanisms in the
      kernel.  A follow up patch will copy the powerpc implementation into
      kernel/irq/irqdomain.c, which will be a lot easier if the structures
      are identical.
      
      Where they differ, I've chose to use the powerpc names since there is
      a lot more code using those names.
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      Cc: Rob Herring <rob.herring@calxeda.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Milton Miller <miltonm@bga.com>
      Tested-by: NOlof Johansson <olof@lixom.net>
      7bb69bad
  14. 24 12月, 2011 1 次提交
  15. 31 10月, 2011 1 次提交
  16. 20 9月, 2011 1 次提交
  17. 28 7月, 2011 2 次提交
    • G
      dt/irq: add irq_domain_generate_simple() helper · 7e713301
      Grant Likely 提交于
      irq_domain_generate_simple() is an easy way to generate an irq translation
      domain for simple irq controllers.  It assumes a flat 1:1 mapping from
      hardware irq number to an offset of the first linux irq number assigned
      to the controller
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      7e713301
    • G
      irq: add irq_domain translation infrastructure · 08a543ad
      Grant Likely 提交于
      This patch adds irq_domain infrastructure for translating from
      hardware irq numbers to linux irqs.  This is particularly important
      for architectures adding device tree support because the current
      implementation (excluding PowerPC and SPARC) cannot handle
      translation for more than a single interrupt controller.  irq_domain
      supports device tree translation for any number of interrupt
      controllers.
      
      This patch converts x86, Microblaze, ARM and MIPS to use irq_domain
      for device tree irq translation.  x86 is untested beyond compiling it,
      irq_domain is enabled for MIPS and Microblaze, but the old behaviour is
      preserved until the core code is modified to actually register an
      irq_domain yet.  On ARM it works and is required for much of the new
      ARM device tree board support.
      
      PowerPC has /not/ been converted to use this new infrastructure.  It
      is still missing some features before it can replace the virq
      infrastructure already in powerpc (see documentation on
      irq_domain_map/unmap for details).  Followup patches will add the
      missing pieces and migrate PowerPC to use irq_domain.
      
      SPARC has its own method of managing interrupts from the device tree
      and is unaffected by this change.
      Acked-by: NRalf Baechle <ralf@linux-mips.org>
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      08a543ad