Merge tag 'devicetree-for-4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/robh...
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 6 Nov 2015 20:17:09 +0000 (12:17 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 6 Nov 2015 20:17:09 +0000 (12:17 -0800)
Pull DeviceTree updates from Rob Herring:
 "A fairly large (by DT standards) pull request this time with the
  majority being some overdue moving DT binding docs around to
  consolidate similar bindings.

   - DT binding doc consolidation moving similar bindings to common
     locations.  The majority of these are display related which were
     scattered in video/, fb/, drm/, gpu/, and panel/ directories.

   - Add new config option, CONFIG_OF_ALL_DTBS, to enable building all
     dtbs in the tree for most arches with dts files (except powerpc for
     now).

   - OF_IRQ=n fixes for user enabled CONFIG_OF.

   - of_node_put ref counting fixes from Julia Lawall.

   - Common DT binding for wakeup-source and deprecation of all similar
     bindings.

   - DT binding for PXA LCD controller.

   - Allow ignoring failed PCI resource translations in order to ignore
     64-bit addresses on non-LPAE 32-bit kernels.

   - Support setting the NUMA node from DT instead of only from parent
     device.

   - Couple of earlycon DT parsing fixes for address and options"

* tag 'devicetree-for-4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (45 commits)
  MAINTAINERS: update DT binding doc locations
  devicetree: add Sigma Designs vendor prefix
  of: simplify arch_find_n_match_cpu_physical_id() function
  Documentation: arm: Fixed typo in socfpga fpga mgr example
  Documentation: devicetree: fix reference to legacy wakeup properties
  Documentation: devicetree: standardize/consolidate on "wakeup-source" property
  drivers: of: removing assignment of 0 to static variable
  xtensa: enable building of all dtbs
  mips: enable building of all dtbs
  metag: enable building of all dtbs
  metag: use common make variables for dtb builds
  h8300: enable building of all dtbs
  arm64: enable building of all dtbs
  arm: enable building of all dtbs
  arc: enable building of all dtbs
  arc: use common make variables for dtb builds
  of: add config option to enable building of all dtbs
  of/fdt: fix error checking for earlycon address
  of/overlay: add missing of_node_put
  of/platform: add missing of_node_put
  ...

1  2 
Documentation/devicetree/bindings/input/gpio-keys-polled.txt
Documentation/devicetree/bindings/interrupt-controller/arm,gic.txt
Documentation/devicetree/bindings/leds/backlight/pm8941-wled.txt
Documentation/devicetree/bindings/mmc/mmc.txt
Documentation/devicetree/bindings/vendor-prefixes.txt
MAINTAINERS
arch/arm/boot/dts/Makefile
drivers/of/irq.c
drivers/of/of_pci.c
include/linux/of_irq.h

index 0000000,2da059a..cc56021
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,152 +1,168 @@@
 -      "arm,gic-400"
+ * ARM Generic Interrupt Controller
+ ARM SMP cores are often associated with a GIC, providing per processor
+ interrupts (PPI), shared processor interrupts (SPI) and software
+ generated interrupts (SGI).
+ Primary GIC is attached directly to the CPU and typically has PPIs and SGIs.
+ Secondary GICs are cascaded into the upward interrupt controller and do not
+ have PPIs or SGIs.
+ Main node required properties:
+ - compatible : should be one of:
 -      "arm,cortex-a9-gic"
++      "arm,arm1176jzf-devchip-gic"
++      "arm,arm11mp-gic"
+       "arm,cortex-a15-gic"
 -      "arm,arm11mp-gic"
+       "arm,cortex-a7-gic"
 -      "arm,arm1176jzf-devchip-gic"
++      "arm,cortex-a9-gic"
++      "arm,gic-400"
++      "arm,pl390"
+       "brcm,brahma-b15-gic"
+       "qcom,msm-8660-qgic"
+       "qcom,msm-qgic2"
+ - interrupt-controller : Identifies the node as an interrupt controller
+ - #interrupt-cells : Specifies the number of cells needed to encode an
+   interrupt source.  The type shall be a <u32> and the value shall be 3.
+   The 1st cell is the interrupt type; 0 for SPI interrupts, 1 for PPI
+   interrupts.
+   The 2nd cell contains the interrupt number for the interrupt type.
+   SPI interrupts are in the range [0-987].  PPI interrupts are in the
+   range [0-15].
+   The 3rd cell is the flags, encoded as follows:
+       bits[3:0] trigger type and level flags.
+               1 = low-to-high edge triggered
+               2 = high-to-low edge triggered (invalid for SPIs)
+               4 = active high level-sensitive
+               8 = active low level-sensitive (invalid for SPIs).
+       bits[15:8] PPI interrupt cpu mask.  Each bit corresponds to each of
+       the 8 possible cpus attached to the GIC.  A bit set to '1' indicated
+       the interrupt is wired to that CPU.  Only valid for PPI interrupts.
+       Also note that the configurability of PPI interrupts is IMPLEMENTATION
+       DEFINED and as such not guaranteed to be present (most SoC available
+       in 2014 seem to ignore the setting of this flag and use the hardware
+       default value).
+ - reg : Specifies base physical address(s) and size of the GIC registers. The
+   first region is the GIC distributor register base and size. The 2nd region is
+   the GIC cpu interface register base and size.
+ Optional
+ - interrupts  : Interrupt source of the parent interrupt controller on
+   secondary GICs, or VGIC maintenance interrupt on primary GIC (see
+   below).
+ - cpu-offset  : per-cpu offset within the distributor and cpu interface
+   regions, used when the GIC doesn't have banked registers. The offset is
+   cpu-offset * cpu-nr.
++- clocks        : List of phandle and clock-specific pairs, one for each entry
++  in clock-names.
++- clock-names   : List of names for the GIC clock input(s). Valid clock names
++  depend on the GIC variant:
++      "ic_clk" (for "arm,arm11mp-gic")
++      "PERIPHCLKEN" (for "arm,cortex-a15-gic")
++      "PERIPHCLK", "PERIPHCLKEN" (for "arm,cortex-a9-gic")
++      "clk" (for "arm,gic-400")
++      "gclk" (for "arm,pl390")
++
++- power-domains : A phandle and PM domain specifier as defined by bindings of
++                the power controller specified by phandle, used when the GIC
++                is part of a Power or Clock Domain.
++
++
+ Example:
+       intc: interrupt-controller@fff11000 {
+               compatible = "arm,cortex-a9-gic";
+               #interrupt-cells = <3>;
+               #address-cells = <1>;
+               interrupt-controller;
+               reg = <0xfff11000 0x1000>,
+                     <0xfff10100 0x100>;
+       };
+ * GIC virtualization extensions (VGIC)
+ For ARM cores that support the virtualization extensions, additional
+ properties must be described (they only exist if the GIC is the
+ primary interrupt controller).
+ Required properties:
+ - reg : Additional regions specifying the base physical address and
+   size of the VGIC registers. The first additional region is the GIC
+   virtual interface control register base and size. The 2nd additional
+   region is the GIC virtual cpu interface register base and size.
+ - interrupts : VGIC maintenance interrupt.
+ Example:
+       interrupt-controller@2c001000 {
+               compatible = "arm,cortex-a15-gic";
+               #interrupt-cells = <3>;
+               interrupt-controller;
+               reg = <0x2c001000 0x1000>,
+                     <0x2c002000 0x1000>,
+                     <0x2c004000 0x2000>,
+                     <0x2c006000 0x2000>;
+               interrupts = <1 9 0xf04>;
+       };
+ * GICv2m extension for MSI/MSI-x support (Optional)
+ Certain revisions of GIC-400 supports MSI/MSI-x via V2M register frame(s).
+ This is enabled by specifying v2m sub-node(s).
+ Required properties:
+ - compatible      : The value here should contain "arm,gic-v2m-frame".
+ - msi-controller    : Identifies the node as an MSI controller.
+ - reg             : GICv2m MSI interface register base and size
+ Optional properties:
+ - arm,msi-base-spi  : When the MSI_TYPER register contains an incorrect
+                     value, this property should contain the SPI base of
+                     the MSI frame, overriding the HW value.
+ - arm,msi-num-spis  : When the MSI_TYPER register contains an incorrect
+                     value, this property should contain the number of
+                     SPIs assigned to the frame, overriding the HW value.
+ Example:
+       interrupt-controller@e1101000 {
+               compatible = "arm,gic-400";
+               #interrupt-cells = <3>;
+               #address-cells = <2>;
+               #size-cells = <2>;
+               interrupt-controller;
+               interrupts = <1 8 0xf04>;
+               ranges = <0 0 0 0xe1100000 0 0x100000>;
+               reg = <0x0 0xe1110000 0 0x01000>,
+                     <0x0 0xe112f000 0 0x02000>,
+                     <0x0 0xe1140000 0 0x10000>,
+                     <0x0 0xe1160000 0 0x10000>;
+               v2m0: v2m@0x8000 {
+                       compatible = "arm,gic-v2m-frame";
+                       msi-controller;
+                       reg = <0x0 0x80000 0 0x1000>;
+               };
+               ....
+               v2mN: v2m@0x9000 {
+                       compatible = "arm,gic-v2m-frame";
+                       msi-controller;
+                       reg = <0x0 0x90000 0 0x1000>;
+               };
+       };
index 0000000,424f844..e5b294d
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,40 +1,42 @@@
+ Binding for Qualcomm PM8941 WLED driver
+ Required properties:
+ - compatible: should be "qcom,pm8941-wled"
+ - reg: slave address
+ Optional properties:
++- default-brightness: brightness value on boot, value from: 0-4095
++      default: 2048
+ - label: The name of the backlight device
+ - qcom,cs-out: bool; enable current sink output
+ - qcom,cabc: bool; enable content adaptive backlight control
+ - qcom,ext-gen: bool; use externally generated modulator signal to dim
+ - qcom,current-limit: mA; per-string current limit; value from 0 to 25
+       default: 20mA
+ - qcom,current-boost-limit: mA; boost current limit; one of:
+       105, 385, 525, 805, 980, 1260, 1400, 1680
+       default: 805mA
+ - qcom,switching-freq: kHz; switching frequency; one of:
+       600, 640, 685, 738, 800, 872, 960, 1066, 1200, 1371,
+       1600, 1920, 2400, 3200, 4800, 9600,
+       default: 1600kHz
+ - qcom,ovp: V; Over-voltage protection limit; one of:
+       27, 29, 32, 35
+       default: 29V
+ - qcom,num-strings: #; number of led strings attached; value from 1 to 3
+       default: 2
+ Example:
+ pm8941-wled@d800 {
+       compatible = "qcom,pm8941-wled";
+       reg = <0xd800>;
+       label = "backlight";
+       qcom,cs-out;
+       qcom,current-limit = <20>;
+       qcom,current-boost-limit = <805>;
+       qcom,switching-freq = <1600>;
+       qcom,ovp = <29>;
+       qcom,num-strings = <2>;
+ };
@@@ -194,8 -192,8 +195,9 @@@ sbs        Smart Battery Syste
  schindler     Schindler
  seagate       Seagate Technology PLC
  semtech       Semtech Corporation
 +sgx   SGX Sensortech
  sharp Sharp Corporation
+ sigma Sigma Designs, Inc.
  sil   Silicon Image
  silabs        Silicon Laboratories
  siliconmitus  Silicon Mitus, Inc.
diff --cc MAINTAINERS
@@@ -3663,16 -3617,8 +3663,16 @@@ M:    Philipp Zabel <p.zabel@pengutronix.d
  L:    dri-devel@lists.freedesktop.org
  S:    Maintained
  F:    drivers/gpu/drm/imx/
- F:    Documentation/devicetree/bindings/drm/imx/
+ F:    Documentation/devicetree/bindings/display/imx/
  
 +DRM DRIVERS FOR GMA500 (Poulsbo, Moorestown and derivative chipsets)
 +M:    Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
 +L:    dri-devel@lists.freedesktop.org
 +T:    git git://github.com/patjak/drm-gma500
 +S:    Maintained
 +F:    drivers/gpu/drm/gma500
 +F:    include/drm/gma500*
 +
  DRM DRIVERS FOR NVIDIA TEGRA
  M:    Thierry Reding <thierry.reding@gmail.com>
  M:    Terje Bergström <tbergstrom@nvidia.com>
Simple merge
Simple merge
Simple merge
@@@ -46,11 -46,7 +46,12 @@@ extern int of_irq_get(struct device_nod
  extern int of_irq_get_byname(struct device_node *dev, const char *name);
  extern int of_irq_to_resource_table(struct device_node *dev,
                struct resource *res, int nr_irqs);
 +extern struct irq_domain *of_msi_get_domain(struct device *dev,
 +                                          struct device_node *np,
 +                                          enum irq_domain_bus_token token);
 +extern struct irq_domain *of_msi_map_get_device_domain(struct device *dev,
 +                                                     u32 rid);
+ extern void of_msi_configure(struct device *dev, struct device_node *np);
  #else
  static inline int of_irq_count(struct device_node *dev)
  {
@@@ -69,47 -65,25 +70,43 @@@ static inline int of_irq_to_resource_ta
  {
        return 0;
  }
 +static inline struct irq_domain *of_msi_get_domain(struct device *dev,
 +                                                 struct device_node *np,
 +                                                 enum irq_domain_bus_token token)
 +{
 +      return NULL;
 +}
 +static inline struct irq_domain *of_msi_map_get_device_domain(struct device *dev,
 +                                                            u32 rid)
 +{
 +      return NULL;
 +}
+ static inline void of_msi_configure(struct device *dev, struct device_node *np)
+ {
+ }
  #endif
  
- #if defined(CONFIG_OF)
+ #if defined(CONFIG_OF_IRQ) || defined(CONFIG_SPARC)
  /*
   * irq_of_parse_and_map() is used by all OF enabled platforms; but SPARC
   * implements it differently.  However, the prototype is the same for all,
   * so declare it here regardless of the CONFIG_OF_IRQ setting.
   */
  extern unsigned int irq_of_parse_and_map(struct device_node *node, int index);
- extern struct device_node *of_irq_find_parent(struct device_node *child);
- extern void of_msi_configure(struct device *dev, struct device_node *np);
 +u32 of_msi_map_rid(struct device *dev, struct device_node *msi_np, u32 rid_in);
  
- #else /* !CONFIG_OF */
+ #else /* !CONFIG_OF && !CONFIG_SPARC */
  static inline unsigned int irq_of_parse_and_map(struct device_node *dev,
                                                int index)
  {
        return 0;
  }
- static inline void *of_irq_find_parent(struct device_node *child)
- {
-       return NULL;
- }
 +
 +static inline u32 of_msi_map_rid(struct device *dev,
 +                               struct device_node *msi_np, u32 rid_in)
 +{
 +      return rid_in;
 +}
  #endif /* !CONFIG_OF */
  
  #endif /* __OF_IRQ_H */