Commit 2bed2660 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'devicetree-for-4.16' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux

Pull DeviceTree updates from Rob Herring:

 - Convert to use memblock_virt_alloc in DT code which supports
   bootmem arches. With this we can remove the arch specific
   early_init_dt_alloc_memory_arch() functions.

 - Enable running the DT unittests on UML

 - Use SPDX license tags on DT files

 - Fix early FDT kconfig ifdef logic

 - Clean-up unittest Makefile

 - Fix function comment for of_irq_parse_raw

 - Add missing documentation for linux,initrd-{start,end} properties

 - Clean-up of binding examples using uppercase hex

 - Add trivial devices W83773G and Infineon TLV493D-A1B6

 - Add missing STM32 SoC bindings

 - Various small binding doc fixes

* tag 'devicetree-for-4.16' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (23 commits)
  xtensa: remove arch specific early DT functions
  x86: remove arch specific early_init_dt_alloc_memory_arch
  nios2: remove arch specific early_init_dt_alloc_memory_arch
  mips: remove arch specific early_init_dt_alloc_memory_arch
  metag: remove arch specific early DT functions
  cris: remove arch specific early DT functions
  libfdt: remove unnecessary include directive from <linux/libfdt.h>
  of: unittest: refactor Makefile
  of/fdt: use memblock_virt_alloc for early alloc
  of: Use SPDX license tag for DT files
  of/fdt: Fix #ifdef dependency of early flattree declarations
  dt-bindings: h8300 clocksource: correct spelling of pulse
  dt-bindings: imx6q-pcie: Add required property for i.MX6SX
  mmc: Don't reference Linux-specific OF_GPIO_ACTIVE_LOW flag in DT binding
  dt-bindings: Use lower case hex in unit-addresses
  dt-bindings: display: panel: Fix compatible string for Toshiba LT089AC29000
  dt-bindings: Add Infineon TLV493D-A1B6
  dt-bindings: mailbox: ti,message-manager: Fix interrupt name error
  dt-bindings: chosen: Document linux,initrd-{start,end}
  dt-bindings: arm: document supported STM32 SoC family
  ...
parents eea43ed8 3a6fbcb2
...@@ -55,7 +55,7 @@ Note: child nodes can be added for auto probing from device tree. ...@@ -55,7 +55,7 @@ Note: child nodes can be added for auto probing from device tree.
Example: adding device info in dtsi file Example: adding device info in dtsi file
adc: adc@12D10000 { adc: adc@12d10000 {
compatible = "samsung,exynos-adc-v1"; compatible = "samsung,exynos-adc-v1";
reg = <0x12D10000 0x100>; reg = <0x12D10000 0x100>;
interrupts = <0 106 0>; interrupts = <0 106 0>;
...@@ -71,7 +71,7 @@ adc: adc@12D10000 { ...@@ -71,7 +71,7 @@ adc: adc@12D10000 {
Example: adding device info in dtsi file for Exynos3250 with additional sclk Example: adding device info in dtsi file for Exynos3250 with additional sclk
adc: adc@126C0000 { adc: adc@126c0000 {
compatible = "samsung,exynos3250-adc", "samsung,exynos-adc-v2; compatible = "samsung,exynos3250-adc", "samsung,exynos-adc-v2;
reg = <0x126C0000 0x100>; reg = <0x126C0000 0x100>;
interrupts = <0 137 0>; interrupts = <0 137 0>;
...@@ -87,7 +87,7 @@ adc: adc@126C0000 { ...@@ -87,7 +87,7 @@ adc: adc@126C0000 {
Example: Adding child nodes in dts file Example: Adding child nodes in dts file
adc@12D10000 { adc@12d10000 {
/* NTC thermistor is a hwmon device */ /* NTC thermistor is a hwmon device */
ncp15wb473@0 { ncp15wb473@0 {
......
...@@ -72,7 +72,7 @@ Optional nodes: ...@@ -72,7 +72,7 @@ Optional nodes:
- compatible: only "samsung,secure-firmware" is currently supported - compatible: only "samsung,secure-firmware" is currently supported
- reg: address of non-secure SYSRAM used for communication with firmware - reg: address of non-secure SYSRAM used for communication with firmware
firmware@203F000 { firmware@203f000 {
compatible = "samsung,secure-firmware"; compatible = "samsung,secure-firmware";
reg = <0x0203F000 0x1000>; reg = <0x0203F000 0x1000>;
}; };
STMicroelectronics STM32 Platforms Device Tree Bindings
Each device tree must specify which STM32 SoC it uses,
using one of the following compatible strings:
st,stm32f429
st,stm32f469
st,stm32f746
st,stm32h743
...@@ -120,3 +120,18 @@ e.g. ...@@ -120,3 +120,18 @@ e.g.
While this property does not represent a real hardware, the address While this property does not represent a real hardware, the address
and the size are expressed in #address-cells and #size-cells, and the size are expressed in #address-cells and #size-cells,
respectively, of the root node. respectively, of the root node.
linux,initrd-start and linux,initrd-end
---------------------------------------
These properties hold the physical start and end address of an initrd that's
loaded by the bootloader. Note that linux,initrd-start is inclusive, but
linux,initrd-end is exclusive.
e.g.
/ {
chosen {
linux,initrd-start = <0x82000000>;
linux,initrd-end = <0x82800000>;
};
};
...@@ -32,7 +32,7 @@ Example 1: Examples of clock controller nodes are listed below. ...@@ -32,7 +32,7 @@ Example 1: Examples of clock controller nodes are listed below.
#clock-cells = <1>; #clock-cells = <1>;
}; };
cmu_dmc: clock-controller@105C0000 { cmu_dmc: clock-controller@105c0000 {
compatible = "samsung,exynos3250-cmu-dmc"; compatible = "samsung,exynos3250-cmu-dmc";
reg = <0x105C0000 0x2000>; reg = <0x105C0000 0x2000>;
#clock-cells = <1>; #clock-cells = <1>;
......
...@@ -180,7 +180,7 @@ Example 2: UART controller node that consumes the clock generated by the ...@@ -180,7 +180,7 @@ Example 2: UART controller node that consumes the clock generated by the
peri clock controller. Refer to the standard clock bindings for peri clock controller. Refer to the standard clock bindings for
information about 'clocks' and 'clock-names' property. information about 'clocks' and 'clock-names' property.
serial@12C00000 { serial@12c00000 {
compatible = "samsung,exynos4210-uart"; compatible = "samsung,exynos4210-uart";
reg = <0x12C00000 0x100>; reg = <0x12C00000 0x100>;
interrupts = <0 146 0>; interrupts = <0 146 0>;
......
...@@ -41,7 +41,7 @@ Example 2: UART controller node that consumes the clock generated by the clock ...@@ -41,7 +41,7 @@ Example 2: UART controller node that consumes the clock generated by the clock
controller. Refer to the standard clock bindings for information controller. Refer to the standard clock bindings for information
about 'clocks' and 'clock-names' property. about 'clocks' and 'clock-names' property.
serial@12C20000 { serial@12c20000 {
compatible = "samsung,exynos4210-uart"; compatible = "samsung,exynos4210-uart";
reg = <0x12C00000 0x100>; reg = <0x12C00000 0x100>;
interrupts = <0 51 0>; interrupts = <0 51 0>;
......
...@@ -472,7 +472,7 @@ Example 2: Examples of clock controller nodes are listed below. ...@@ -472,7 +472,7 @@ Example 2: Examples of clock controller nodes are listed below.
Example 3: UART controller node that consumes the clock generated by the clock Example 3: UART controller node that consumes the clock generated by the clock
controller. controller.
serial_0: serial@14C10000 { serial_0: serial@14c10000 {
compatible = "samsung,exynos5433-uart"; compatible = "samsung,exynos5433-uart";
reg = <0x14C10000 0x100>; reg = <0x14C10000 0x100>;
interrupts = <0 421 0>; interrupts = <0 421 0>;
......
...@@ -75,7 +75,7 @@ Required properties: ...@@ -75,7 +75,7 @@ Required properties:
- clock-frequency: must be present in the i2c controller node. - clock-frequency: must be present in the i2c controller node.
Example: Example:
atecc508a@C0 { atecc508a@c0 {
compatible = "atmel,atecc508a"; compatible = "atmel,atecc508a";
reg = <0xC0>; reg = <0xC0>;
}; };
...@@ -20,7 +20,7 @@ Optional properties: ...@@ -20,7 +20,7 @@ Optional properties:
Example : NoC Probe nodes in Device Tree are listed below. Example : NoC Probe nodes in Device Tree are listed below.
nocp_mem0_0: nocp@10CA1000 { nocp_mem0_0: nocp@10ca1000 {
compatible = "samsung,exynos5420-nocp"; compatible = "samsung,exynos5420-nocp";
reg = <0x10CA1000 0x200>; reg = <0x10CA1000 0x200>;
}; };
...@@ -54,7 +54,7 @@ Video interfaces: ...@@ -54,7 +54,7 @@ Video interfaces:
Example: Example:
dsi@11C80000 { dsi@11c80000 {
compatible = "samsung,exynos4210-mipi-dsi"; compatible = "samsung,exynos4210-mipi-dsi";
reg = <0x11C80000 0x10000>; reg = <0x11C80000 0x10000>;
interrupts = <0 79 0>; interrupts = <0 79 0>;
......
Toshiba 8.9" WXGA (1280x768) TFT LCD panel Toshiba 8.9" WXGA (1280x768) TFT LCD panel
Required properties: Required properties:
- compatible: should be "toshiba,lt089ac29000.txt" - compatible: should be "toshiba,lt089ac29000"
- power-supply: as specified in the base binding - power-supply: as specified in the base binding
This binding is compatible with the simple-panel binding, which is specified This binding is compatible with the simple-panel binding, which is specified
......
...@@ -119,7 +119,7 @@ Example: ...@@ -119,7 +119,7 @@ Example:
/ { / {
... ...
vtg_main_slave: sti-vtg-main-slave@fe85A800 { vtg_main_slave: sti-vtg-main-slave@fe85a800 {
compatible = "st,vtg"; compatible = "st,vtg";
reg = <0xfe85A800 0x300>; reg = <0xfe85A800 0x300>;
interrupts = <GIC_SPI 175 IRQ_TYPE_NONE>; interrupts = <GIC_SPI 175 IRQ_TYPE_NONE>;
......
...@@ -15,7 +15,7 @@ Optional properties: ...@@ -15,7 +15,7 @@ Optional properties:
Example: Example:
dma: dma-controller@801C0000 { dma: dma-controller@801c0000 {
compatible = "stericsson,db8500-dma40", "stericsson,dma40"; compatible = "stericsson,db8500-dma40", "stericsson,dma40";
reg = <0x801C0000 0x1000 0x40010000 0x800>; reg = <0x801C0000 0x1000 0x40010000 0x800>;
reg-names = "base", "lcpa"; reg-names = "base", "lcpa";
......
...@@ -21,7 +21,7 @@ Documentation/devicetree/bindings/gpio/gpio.txt ...@@ -21,7 +21,7 @@ Documentation/devicetree/bindings/gpio/gpio.txt
Example: Example:
gpioa: gpio@FF140000 { gpioa: gpio@ff140000 {
compatible = "abilis,tb10x-gpio"; compatible = "abilis,tb10x-gpio";
interrupt-controller; interrupt-controller;
#interrupt-cells = <1>; #interrupt-cells = <1>;
......
...@@ -27,7 +27,7 @@ Optional properties: ...@@ -27,7 +27,7 @@ Optional properties:
Example: Example:
gpio1: stp@E100BB0 { gpio1: stp@e100bb0 {
compatible = "lantiq,gpio-stp-xway"; compatible = "lantiq,gpio-stp-xway";
reg = <0xE100BB0 0x40>; reg = <0xE100BB0 0x40>;
#gpio-cells = <2>; #gpio-cells = <2>;
......
...@@ -290,7 +290,7 @@ pins 50..69. ...@@ -290,7 +290,7 @@ pins 50..69.
Example 2: Example 2:
gpio_pio_i: gpio-controller@14B0 { gpio_pio_i: gpio-controller@14b0 {
#gpio-cells = <2>; #gpio-cells = <2>;
compatible = "fsl,qe-pario-bank-e", "fsl,qe-pario-bank"; compatible = "fsl,qe-pario-bank-e", "fsl,qe-pario-bank";
reg = <0x1480 0x18>; reg = <0x1480 0x18>;
......
...@@ -54,7 +54,7 @@ Optional properties: ...@@ -54,7 +54,7 @@ Optional properties:
Example: Example:
i2c@12CA0000 { i2c@12ca0000 {
compatible = "acme,some-i2c-device"; compatible = "acme,some-i2c-device";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
......
...@@ -11,7 +11,7 @@ Required properties: ...@@ -11,7 +11,7 @@ Required properties:
Examples: Examples:
lpi2c7: lpi2c7@40A50000 { lpi2c7: lpi2c7@40a50000 {
compatible = "fsl,imx8dv-lpi2c"; compatible = "fsl,imx8dv-lpi2c";
reg = <0x40A50000 0x10000>; reg = <0x40A50000 0x10000>;
interrupt-parent = <&intc>; interrupt-parent = <&intc>;
......
...@@ -45,7 +45,7 @@ Optional Properties specific to linux: ...@@ -45,7 +45,7 @@ Optional Properties specific to linux:
Example: Example:
keypad@100A0000 { keypad@100a0000 {
compatible = "samsung,s5pv210-keypad"; compatible = "samsung,s5pv210-keypad";
reg = <0x100A0000 0x100>; reg = <0x100A0000 0x100>;
interrupts = <173>; interrupts = <173>;
......
...@@ -66,7 +66,7 @@ Example: An example of touchscreen node ...@@ -66,7 +66,7 @@ Example: An example of touchscreen node
reg = <0x180a6000 0xc30>; reg = <0x180a6000 0xc30>;
}; };
touchscreen: touchscreen@180A6000 { touchscreen: touchscreen@180a6000 {
compatible = "brcm,iproc-touchscreen"; compatible = "brcm,iproc-touchscreen";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
......
...@@ -56,7 +56,7 @@ Examples: ...@@ -56,7 +56,7 @@ Examples:
iommus = <&sysmmu_gsc0>; iommus = <&sysmmu_gsc0>;
}; };
sysmmu_gsc0: sysmmu@13E80000 { sysmmu_gsc0: sysmmu@13e80000 {
compatible = "samsung,exynos-sysmmu"; compatible = "samsung,exynos-sysmmu";
reg = <0x13E80000 0x1000>; reg = <0x13E80000 0x1000>;
interrupt-parent = <&combiner>; interrupt-parent = <&combiner>;
......
...@@ -124,7 +124,7 @@ dsp { ...@@ -124,7 +124,7 @@ dsp {
}; };
/* AM33xx */ /* AM33xx */
mailbox: mailbox@480C8000 { mailbox: mailbox@480c8000 {
compatible = "ti,omap4-mailbox"; compatible = "ti,omap4-mailbox";
reg = <0x480C8000 0x200>; reg = <0x480C8000 0x200>;
interrupts = <77>; interrupts = <77>;
......
...@@ -20,9 +20,9 @@ Required properties: ...@@ -20,9 +20,9 @@ Required properties:
order referring to the transfer path. order referring to the transfer path.
- interrupt-names: Contains interrupt names matching the rx transfer path - interrupt-names: Contains interrupt names matching the rx transfer path
for a given SoC. Receive interrupts shall be of the for a given SoC. Receive interrupts shall be of the
format: "rx_<QID>_<PID>". format: "rx_<QID>".
For ti,k2g-message-manager, this shall contain: For ti,k2g-message-manager, this shall contain:
"rx_005_002", "rx_057_002" "rx_005", "rx_057"
- interrupts: Contains the interrupt information corresponding to - interrupts: Contains the interrupt information corresponding to
interrupt-names property. interrupt-names property.
......
...@@ -23,7 +23,7 @@ Optional: ...@@ -23,7 +23,7 @@ Optional:
Example: Example:
hdmicec: cec@100B0000 { hdmicec: cec@100b0000 {
compatible = "samsung,s5p-cec"; compatible = "samsung,s5p-cec";
reg = <0x100B0000 0x200>; reg = <0x100B0000 0x200>;
interrupts = <0 114 0>; interrupts = <0 114 0>;
......
...@@ -62,7 +62,7 @@ For more details see description of the SPI busses bindings ...@@ -62,7 +62,7 @@ For more details see description of the SPI busses bindings
Example: Example:
i2c@138A000000 { i2c@138a000000 {
... ...
s5c73m3@3c { s5c73m3@3c {
compatible = "samsung,s5c73m3"; compatible = "samsung,s5c73m3";
......
...@@ -138,7 +138,7 @@ from the corresponding HW reg. ...@@ -138,7 +138,7 @@ from the corresponding HW reg.
Example for aemif, davinci nand and nor flash chip select shown below. Example for aemif, davinci nand and nor flash chip select shown below.
memory-controller@21000A00 { memory-controller@21000a00 {
compatible = "ti,davinci-aemif"; compatible = "ti,davinci-aemif";
#address-cells = <2>; #address-cells = <2>;
#size-cells = <1>; #size-cells = <1>;
......
...@@ -41,7 +41,7 @@ Optional properties (all): ...@@ -41,7 +41,7 @@ Optional properties (all):
Example for I2C: Example for I2C:
i2c@12CA0000 { i2c@12ca0000 {
cros-ec@1e { cros-ec@1e {
reg = <0x1e>; reg = <0x1e>;
compatible = "google,cros-ec-i2c"; compatible = "google,cros-ec-i2c";
......
...@@ -67,10 +67,10 @@ logic applies to the "wp-inverted" property. ...@@ -67,10 +67,10 @@ logic applies to the "wp-inverted" property.
CD and WP lines can be implemented on the hardware in one of two ways: as GPIOs, CD and WP lines can be implemented on the hardware in one of two ways: as GPIOs,
specified in cd-gpios and wp-gpios properties, or as dedicated pins. Polarity of specified in cd-gpios and wp-gpios properties, or as dedicated pins. Polarity of
dedicated pins can be specified, using *-inverted properties. GPIO polarity can dedicated pins can be specified, using *-inverted properties. GPIO polarity can
also be specified using the OF_GPIO_ACTIVE_LOW flag. This creates an ambiguity also be specified using the GPIO_ACTIVE_LOW flag. This creates an ambiguity
in the latter case. We choose to use the XOR logic for GPIO CD and WP lines. in the latter case. We choose to use the XOR logic for GPIO CD and WP lines.
This means, the two properties are "superimposed," for example leaving the This means, the two properties are "superimposed," for example leaving the
OF_GPIO_ACTIVE_LOW flag clear and specifying the respective *-inverted GPIO_ACTIVE_LOW flag clear and specifying the respective *-inverted property
property results in a double-inversion and actually means the "normal" line property results in a double-inversion and actually means the "normal" line
polarity is in effect. polarity is in effect.
......
...@@ -23,7 +23,7 @@ Optional subnodes: ...@@ -23,7 +23,7 @@ Optional subnodes:
Example: Example:
mlc: flash@200A8000 { mlc: flash@200a8000 {
compatible = "nxp,lpc3220-mlc"; compatible = "nxp,lpc3220-mlc";
reg = <0x200A8000 0x11000>; reg = <0x200A8000 0x11000>;
interrupts = <11 0>; interrupts = <11 0>;
......
...@@ -61,7 +61,7 @@ file. ...@@ -61,7 +61,7 @@ file.
Examples: Examples:
mac: ethernet@4A100000 { mac: ethernet@4a100000 {
compatible = "ti,cpsw"; compatible = "ti,cpsw";
reg = <0x4A100000 0x1000>; reg = <0x4A100000 0x1000>;
interrupts = <55 0x4>; interrupts = <55 0x4>;
...@@ -91,7 +91,7 @@ Examples: ...@@ -91,7 +91,7 @@ Examples:
}; };
(or) (or)
mac: ethernet@4A100000 { mac: ethernet@4a100000 {
compatible = "ti,cpsw"; compatible = "ti,cpsw";
ti,hwmods = "cpgmac0"; ti,hwmods = "cpgmac0";
cpdma_channels = <8>; cpdma_channels = <8>;
......
...@@ -21,7 +21,7 @@ file. ...@@ -21,7 +21,7 @@ file.
Examples: Examples:
mdio: davinci_mdio@4A101000 { mdio: davinci_mdio@4a101000 {
compatible = "ti,davinci_mdio"; compatible = "ti,davinci_mdio";
reg = <0x4A101000 0x1000>; reg = <0x4A101000 0x1000>;
bus_freq = <1000000>; bus_freq = <1000000>;
...@@ -29,7 +29,7 @@ Examples: ...@@ -29,7 +29,7 @@ Examples:
(or) (or)
mdio: davinci_mdio@4A101000 { mdio: davinci_mdio@4a101000 {
compatible = "ti,davinci_mdio"; compatible = "ti,davinci_mdio";
ti,hwmods = "davinci_mdio"; ti,hwmods = "davinci_mdio";
bus_freq = <1000000>; bus_freq = <1000000>;
......
...@@ -136,7 +136,7 @@ Clock Properties: ...@@ -136,7 +136,7 @@ Clock Properties:
Example: Example:
ptp_clock@24E00 { ptp_clock@24e00 {
compatible = "fsl,etsec-ptp"; compatible = "fsl,etsec-ptp";
reg = <0x24E00 0xB0>; reg = <0x24E00 0xB0>;
interrupts = <12 0x8 13 0x8>; interrupts = <12 0x8 13 0x8>;
......
...@@ -41,6 +41,7 @@ Optional properties: ...@@ -41,6 +41,7 @@ Optional properties:
Additional required properties for imx6sx-pcie: Additional required properties for imx6sx-pcie:
- clock names: Must include the following additional entries: - clock names: Must include the following additional entries:
- "pcie_inbound_axi" - "pcie_inbound_axi"
- power-domains: Must be set to a phandle pointing to the PCIE_PHY power domain
Additional required properties for imx7d-pcie: Additional required properties for imx7d-pcie:
- power-domains: Must be set to a phandle pointing to PCIE_PHY power domain - power-domains: Must be set to a phandle pointing to PCIE_PHY power domain
......
...@@ -120,7 +120,7 @@ usb3phy@4a084400 { ...@@ -120,7 +120,7 @@ usb3phy@4a084400 {
"refclk"; "refclk";
}; };
sata_phy: phy@4A096000 { sata_phy: phy@4a096000 {
compatible = "ti,phy-pipe3-sata"; compatible = "ti,phy-pipe3-sata";
reg = <0x4A096000 0x80>, /* phy_rx */ reg = <0x4A096000 0x80>, /* phy_rx */
<0x4A096400 0x64>, /* phy_tx */ <0x4A096400 0x64>, /* phy_tx */
......
...@@ -49,7 +49,7 @@ explained in Documentation/devicetree/bindings/gpio/gpio.txt. ...@@ -49,7 +49,7 @@ explained in Documentation/devicetree/bindings/gpio/gpio.txt.
Example Example
------- -------
iomux: iomux@FF10601c { iomux: iomux@ff10601c {
compatible = "abilis,tb10x-iomux"; compatible = "abilis,tb10x-iomux";
reg = <0xFF10601c 0x4>; reg = <0xFF10601c 0x4>;
pctl_gpio_a: pctl-gpio-a { pctl_gpio_a: pctl-gpio-a {
...@@ -59,7 +59,7 @@ iomux: iomux@FF10601c { ...@@ -59,7 +59,7 @@ iomux: iomux@FF10601c {
abilis,function = "uart0"; abilis,function = "uart0";
}; };
}; };
uart@FF100000 { uart@ff100000 {
compatible = "snps,dw-apb-uart"; compatible = "snps,dw-apb-uart";
reg = <0xFF100000 0x100>; reg = <0xFF100000 0x100>;
clock-frequency = <166666666>; clock-frequency = <166666666>;
...@@ -69,7 +69,7 @@ uart@FF100000 { ...@@ -69,7 +69,7 @@ uart@FF100000 {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&pctl_uart0>; pinctrl-0 = <&pctl_uart0>;
}; };
gpioa: gpio@FF140000 { gpioa: gpio@ff140000 {
compatible = "abilis,tb10x-gpio"; compatible = "abilis,tb10x-gpio";
reg = <0xFF140000 0x1000>; reg = <0xFF140000 0x1000>;
gpio-controller; gpio-controller;
......
...@@ -152,7 +152,7 @@ resetn ...@@ -152,7 +152,7 @@ resetn
Example: Example:
-------- --------
pinctrl@18101C00 { pinctrl@18101c00 {
compatible = "img,pistachio-system-pinctrl"; compatible = "img,pistachio-system-pinctrl";
reg = <0x18101C00 0x400>; reg = <0x18101C00 0x400>;
......
...@@ -163,7 +163,7 @@ Valid values for xRX300 pin names: ...@@ -163,7 +163,7 @@ Valid values for xRX300 pin names:
io42-io43,io48-io61. io42-io43,io48-io61.
Example: Example:
gpio: pinmux@E100B10 { gpio: pinmux@e100b10 {
compatible = "lantiq,danube-pinctrl"; compatible = "lantiq,danube-pinctrl";
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&state_default>; pinctrl-0 = <&state_default>;
......
...@@ -81,7 +81,7 @@ Examples: ...@@ -81,7 +81,7 @@ Examples:
reg = <0 0x10005000 0 0x1000>; reg = <0 0x10005000 0 0x1000>;
}; };
syscfg_pctl_b: syscfg_pctl_b@1020C020 { syscfg_pctl_b: syscfg_pctl_b@1020c020 {
compatible = "mediatek,mt8135-pctl-b-syscfg", "syscon"; compatible = "mediatek,mt8135-pctl-b-syscfg", "syscon";
reg = <0 0x1020C020 0 0x1000>; reg = <0 0x1020C020 0 0x1000>;
}; };
......
...@@ -223,37 +223,37 @@ lac-portals { ...@@ -223,37 +223,37 @@ lac-portals {
reg = <0x9000 0x1000>; reg = <0x9000 0x1000>;
}; };
lportal10: lac-portal@A000 { lportal10: lac-portal@a000 {
compatible = "fsl,interlaken-lac-portal-v1.0"; compatible = "fsl,interlaken-lac-portal-v1.0";
fsl,liodn = <0x20E>; fsl,liodn = <0x20E>;
reg = <0xA000 0x1000>; reg = <0xA000 0x1000>;
}; };
lportal11: lac-portal@B000 { lportal11: lac-portal@b000 {
compatible = "fsl,interlaken-lac-portal-v1.0"; compatible = "fsl,interlaken-lac-portal-v1.0";
fsl,liodn = <0x20F>; fsl,liodn = <0x20F>;
reg = <0xB000 0x1000>; reg = <0xB000 0x1000>;
}; };
lportal12: lac-portal@C000 { lportal12: lac-portal@c000 {
compatible = "fsl,interlaken-lac-portal-v1.0"; compatible = "fsl,interlaken-lac-portal-v1.0";
fsl,liodn = <0x210>; fsl,liodn = <0x210>;
reg = <0xC000 0x1000>; reg = <0xC000 0x1000>;
}; };
lportal13: lac-portal@D000 { lportal13: lac-portal@d000 {
compatible = "fsl,interlaken-lac-portal-v1.0"; compatible = "fsl,interlaken-lac-portal-v1.0";
fsl,liodn = <0x211>; fsl,liodn = <0x211>;
reg = <0xD000 0x1000>; reg = <0xD000 0x1000>;
}; };
lportal14: lac-portal@E000 { lportal14: lac-portal@e000 {
compatible = "fsl,interlaken-lac-portal-v1.0"; compatible = "fsl,interlaken-lac-portal-v1.0";
fsl,liodn = <0x212>; fsl,liodn = <0x212>;
reg = <0xE000 0x1000>; reg = <0xE000 0x1000>;
}; };
lportal15: lac-portal@F000 { lportal15: lac-portal@f000 {
compatible = "fsl,interlaken-lac-portal-v1.0"; compatible = "fsl,interlaken-lac-portal-v1.0";
fsl,liodn = <0x213>; fsl,liodn = <0x213>;
reg = <0xF000 0x1000>; reg = <0xF000 0x1000>;
......
...@@ -10,7 +10,7 @@ Required properties: ...@@ -10,7 +10,7 @@ Required properties:
- clocks: Must contain an entry for peripheral clock. - clocks: Must contain an entry for peripheral clock.
Example: Example:
vrefbuf: regulator@58003C00 { vrefbuf: regulator@58003c00 {
compatible = "st,stm32-vrefbuf"; compatible = "st,stm32-vrefbuf";
reg = <0x58003C00 0x8>; reg = <0x58003C00 0x8>;
clocks = <&rcc VREF_CK>; clocks = <&rcc VREF_CK>;
......
...@@ -8,7 +8,7 @@ Required properties: ...@@ -8,7 +8,7 @@ Required properties:
Example: Example:
asc1: serial@E100C00 { asc1: serial@e100c00 {
compatible = "lantiq,asc"; compatible = "lantiq,asc";
reg = <0xE100C00 0x400>; reg = <0xE100C00 0x400>;
interrupt-parent = <&icu0>; interrupt-parent = <&icu0>;
......
...@@ -35,7 +35,7 @@ Optional Properties: ...@@ -35,7 +35,7 @@ Optional Properties:
Example: Example:
i2s_out: i2s-out@18100A00 { i2s_out: i2s-out@18100a00 {
compatible = "img,i2s-out"; compatible = "img,i2s-out";
reg = <0x18100A00 0x200>; reg = <0x18100A00 0x200>;
interrupts = <GIC_SHARED 13 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SHARED 13 IRQ_TYPE_LEVEL_HIGH>;
......
...@@ -29,7 +29,7 @@ Optional Properties: ...@@ -29,7 +29,7 @@ Optional Properties:
Example: Example:
parallel_out: parallel-out@18100C00 { parallel_out: parallel-out@18100c00 {
compatible = "img,parallel-out"; compatible = "img,parallel-out";
reg = <0x18100C00 0x100>; reg = <0x18100C00 0x100>;
interrupts = <GIC_SHARED 19 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SHARED 19 IRQ_TYPE_LEVEL_HIGH>;
......
...@@ -29,7 +29,7 @@ Optional Properties: ...@@ -29,7 +29,7 @@ Optional Properties:
Example: Example:
spdif_in: spdif-in@18100E00 { spdif_in: spdif-in@18100e00 {
compatible = "img,spdif-in"; compatible = "img,spdif-in";
reg = <0x18100E00 0x100>; reg = <0x18100E00 0x100>;
interrupts = <GIC_SHARED 20 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SHARED 20 IRQ_TYPE_LEVEL_HIGH>;
......
...@@ -29,7 +29,7 @@ Optional Properties: ...@@ -29,7 +29,7 @@ Optional Properties:
Example: Example:
spdif_out: spdif-out@18100D00 { spdif_out: spdif-out@18100d00 {
compatible = "img,spdif-out"; compatible = "img,spdif-out";
reg = <0x18100D00 0x100>; reg = <0x18100D00 0x100>;
interrupts = <GIC_SHARED 21 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SHARED 21 IRQ_TYPE_LEVEL_HIGH>;
......
...@@ -51,7 +51,7 @@ Optional properties: ...@@ -51,7 +51,7 @@ Optional properties:
Example: Example:
sti_uni_player1: sti-uni-player@8D81000 { sti_uni_player1: sti-uni-player@8d81000 {
compatible = "st,stih407-uni-player-hdmi"; compatible = "st,stih407-uni-player-hdmi";
#sound-dai-cells = <0>; #sound-dai-cells = <0>;
st,syscfg = <&syscfg_core>; st,syscfg = <&syscfg_core>;
...@@ -63,7 +63,7 @@ Example: ...@@ -63,7 +63,7 @@ Example:
st,tdm-mode = <1>; st,tdm-mode = <1>;
}; };
sti_uni_player2: sti-uni-player@8D82000 { sti_uni_player2: sti-uni-player@8d82000 {
compatible = "st,stih407-uni-player-pcm-out"; compatible = "st,stih407-uni-player-pcm-out";
#sound-dai-cells = <0>; #sound-dai-cells = <0>;
st,syscfg = <&syscfg_core>; st,syscfg = <&syscfg_core>;
...@@ -74,7 +74,7 @@ Example: ...@@ -74,7 +74,7 @@ Example:
dma-names = "tx"; dma-names = "tx";
}; };
sti_uni_player3: sti-uni-player@8D85000 { sti_uni_player3: sti-uni-player@8d85000 {
compatible = "st,stih407-uni-player-spdif"; compatible = "st,stih407-uni-player-spdif";
#sound-dai-cells = <0>; #sound-dai-cells = <0>;
st,syscfg = <&syscfg_core>; st,syscfg = <&syscfg_core>;
...@@ -85,7 +85,7 @@ Example: ...@@ -85,7 +85,7 @@ Example:
dma-names = "tx"; dma-names = "tx";
}; };
sti_uni_reader1: sti-uni-reader@8D84000 { sti_uni_reader1: sti-uni-reader@8d84000 {
compatible = "st,stih407-uni-reader-hdmi"; compatible = "st,stih407-uni-reader-hdmi";
#sound-dai-cells = <0>; #sound-dai-cells = <0>;
st,syscfg = <&syscfg_core>; st,syscfg = <&syscfg_core>;
......
...@@ -68,7 +68,7 @@ SPI_SOMI/SIMO+-----------------+ +----------- ...@@ -68,7 +68,7 @@ SPI_SOMI/SIMO+-----------------+ +-----------
Example of a NOR flash slave device (n25q032) connected to DaVinci Example of a NOR flash slave device (n25q032) connected to DaVinci
SPI controller device over the SPI bus. SPI controller device over the SPI bus.
spi0:spi@20BF0000 { spi0:spi@20bf0000 {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
compatible = "ti,dm6446-spi"; compatible = "ti,dm6446-spi";
......
...@@ -16,7 +16,7 @@ Optional properties: ...@@ -16,7 +16,7 @@ Optional properties:
Example: Example:
spi: spi@E100800 { spi: spi@e100800 {
compatible = "lantiq,xrx200-spi", "lantiq,xrx100-spi"; compatible = "lantiq,xrx200-spi", "lantiq,xrx100-spi";
reg = <0xE100800 0x100>; reg = <0xE100800 0x100>;
interrupt-parent = <&icu0>; interrupt-parent = <&icu0>;
......
...@@ -70,7 +70,7 @@ Following properties are mandatory (depending on SoC): ...@@ -70,7 +70,7 @@ Following properties are mandatory (depending on SoC):
Example 1): Example 1):
tmu@100C0000 { tmu@100c0000 {
compatible = "samsung,exynos4412-tmu"; compatible = "samsung,exynos4412-tmu";
interrupt-parent = <&combiner>; interrupt-parent = <&combiner>;
reg = <0x100C0000 0x100>; reg = <0x100C0000 0x100>;
......
...@@ -252,7 +252,7 @@ ocp { ...@@ -252,7 +252,7 @@ ocp {
/* /*
* A simple IC with a single bandgap temperature sensor. * A simple IC with a single bandgap temperature sensor.
*/ */
bandgap0: bandgap@0000ED00 { bandgap0: bandgap@0000ed00 {
... ...
#thermal-sensor-cells = <0>; #thermal-sensor-cells = <0>;
}; };
...@@ -330,7 +330,7 @@ ocp { ...@@ -330,7 +330,7 @@ ocp {
/* /*
* A simple IC with several bandgap temperature sensors. * A simple IC with several bandgap temperature sensors.
*/ */
bandgap0: bandgap@0000ED00 { bandgap0: bandgap@0000ed00 {
... ...
#thermal-sensor-cells = <1>; #thermal-sensor-cells = <1>;
}; };
...@@ -458,7 +458,7 @@ ocp { ...@@ -458,7 +458,7 @@ ocp {
/* /*
* A simple IC with a single bandgap temperature sensor. * A simple IC with a single bandgap temperature sensor.
*/ */
bandgap0: bandgap@0000ED00 { bandgap0: bandgap@0000ed00 {
... ...
#thermal-sensor-cells = <0>; #thermal-sensor-cells = <0>;
}; };
......
* Renesas H8/300 Timer Pluse Unit * Renesas H8/300 Timer Pulse Unit
The TPU is a 16bit timer/counter with configurable clock inputs and The TPU is a 16bit timer/counter with configurable clock inputs and
programmable compare match. programmable compare match.
......
...@@ -51,7 +51,7 @@ Example 2: In this example, the timer interrupts are connected to two separate ...@@ -51,7 +51,7 @@ Example 2: In this example, the timer interrupts are connected to two separate
interrupt controllers. Hence, an interrupt-map is created to map interrupt controllers. Hence, an interrupt-map is created to map
the interrupts to the respective interrupt controllers. the interrupts to the respective interrupt controllers.
mct@101C0000 { mct@101c0000 {
compatible = "samsung,exynos4210-mct"; compatible = "samsung,exynos4210-mct";
reg = <0x101C0000 0x800>; reg = <0x101C0000 0x800>;
interrupt-parent = <&mct_map>; interrupt-parent = <&mct_map>;
......
...@@ -63,6 +63,7 @@ fsl,sgtl5000 SGTL5000: Ultra Low-Power Audio Codec ...@@ -63,6 +63,7 @@ fsl,sgtl5000 SGTL5000: Ultra Low-Power Audio Codec
gmt,g751 G751: Digital Temperature Sensor and Thermal Watchdog with Two-Wire Interface gmt,g751 G751: Digital Temperature Sensor and Thermal Watchdog with Two-Wire Interface
infineon,slb9635tt Infineon SLB9635 (Soft-) I2C TPM (old protocol, max 100khz) infineon,slb9635tt Infineon SLB9635 (Soft-) I2C TPM (old protocol, max 100khz)
infineon,slb9645tt Infineon SLB9645 I2C TPM (new protocol, max 400khz) infineon,slb9645tt Infineon SLB9645 I2C TPM (new protocol, max 400khz)
infineon,tlv493d-a1b6 Infineon TLV493D-A1B6 I2C 3D Magnetic Sensor
isil,isl1208 Intersil ISL1208 Low Power RTC with Battery Backed SRAM isil,isl1208 Intersil ISL1208 Low Power RTC with Battery Backed SRAM
isil,isl1218 Intersil ISL1218 Low Power RTC with Battery Backed SRAM isil,isl1218 Intersil ISL1218 Low Power RTC with Battery Backed SRAM
isil,isl12022 Intersil ISL12022 Real-time Clock isil,isl12022 Intersil ISL12022 Real-time Clock
...@@ -151,6 +152,7 @@ national,lm85 Temperature sensor with integrated fan control ...@@ -151,6 +152,7 @@ national,lm85 Temperature sensor with integrated fan control
national,lm92 ±0.33°C Accurate, 12-Bit + Sign Temperature Sensor and Thermal Window Comparator with Two-Wire Interface national,lm92 ±0.33°C Accurate, 12-Bit + Sign Temperature Sensor and Thermal Window Comparator with Two-Wire Interface
nuvoton,npct501 i2c trusted platform module (TPM) nuvoton,npct501 i2c trusted platform module (TPM)
nuvoton,npct601 i2c trusted platform module (TPM2) nuvoton,npct601 i2c trusted platform module (TPM2)
nuvoton,w83773g Nuvoton Temperature Sensor
nxp,pca9556 Octal SMBus and I2C registered interface nxp,pca9556 Octal SMBus and I2C registered interface
nxp,pca9557 8-bit I2C-bus and SMBus I/O port with reset nxp,pca9557 8-bit I2C-bus and SMBus I/O port with reset
nxp,pcf2127 Real-time clock nxp,pcf2127 Real-time clock
......
...@@ -10,7 +10,7 @@ Optional properties: ...@@ -10,7 +10,7 @@ Optional properties:
Example: Example:
watchdog@4003C000 { watchdog@4003c000 {
compatible = "nxp,pnx4008-wdt"; compatible = "nxp,pnx4008-wdt";
reg = <0x4003C000 0x1000>; reg = <0x4003C000 0x1000>;
timeout-sec = <10>; timeout-sec = <10>;
......
...@@ -25,7 +25,7 @@ Optional properties: ...@@ -25,7 +25,7 @@ Optional properties:
Example: Example:
watchdog@101D0000 { watchdog@101d0000 {
compatible = "samsung,exynos5250-wdt"; compatible = "samsung,exynos5250-wdt";
reg = <0x101D0000 0x100>; reg = <0x101D0000 0x100>;
interrupts = <0 42 0>; interrupts = <0 42 0>;
......
# SPDX-License-Identifier: GPL-2.0
# $Id: Makefile,v 1.12 2004/10/19 13:07:43 starvik Exp $
#
# Makefile for the linux kernel.
#
CPPFLAGS_vmlinux.lds := -DDRAM_VIRTUAL_BASE=0x$(CONFIG_ETRAX_DRAM_VIRTUAL_BASE)
extra-y := vmlinux.lds
obj-y := process.o traps.o irq.o ptrace.o setup.o time.o sys_cris.o
obj-y += devicetree.o
obj-y += stacktrace.o
obj-$(CONFIG_MODULES) += crisksyms.o
obj-$(CONFIG_MODULES) += module.o
obj-$(CONFIG_SYSTEM_PROFILER) += profile.o
clean:
// SPDX-License-Identifier: GPL-2.0
#include <linux/init.h>
#include <linux/bootmem.h>
#include <linux/printk.h>
void __init early_init_dt_add_memory_arch(u64 base, u64 size)
{
pr_err("%s(%llx, %llx)\n",
__func__, base, size);
}
void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
{
return alloc_bootmem_align(size, align);
}
...@@ -14,26 +14,12 @@ ...@@ -14,26 +14,12 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/export.h> #include <linux/export.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/bootmem.h>
#include <linux/memblock.h>
#include <linux/of.h>
#include <linux/of_fdt.h> #include <linux/of_fdt.h>
#include <asm/setup.h> #include <asm/setup.h>
#include <asm/page.h> #include <asm/page.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
void __init early_init_dt_add_memory_arch(u64 base, u64 size)
{
pr_err("%s(%llx, %llx)\n",
__func__, base, size);
}
void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
{
return alloc_bootmem_align(size, align);
}
static const void * __init arch_get_next_mach(const char *const **match) static const void * __init arch_get_next_mach(const char *const **match)
{ {
static const struct machine_desc *mdesc = __arch_info_begin; static const struct machine_desc *mdesc = __arch_info_begin;
......
...@@ -44,11 +44,6 @@ void __init early_init_dt_add_memory_arch(u64 base, u64 size) ...@@ -44,11 +44,6 @@ void __init early_init_dt_add_memory_arch(u64 base, u64 size)
return add_memory_region(base, size, BOOT_MEM_RAM); return add_memory_region(base, size, BOOT_MEM_RAM);
} }
void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
{
return __alloc_bootmem(size, align, __pa(MAX_DMA_ADDRESS));
}
int __init early_init_dt_reserve_memory_arch(phys_addr_t base, int __init early_init_dt_reserve_memory_arch(phys_addr_t base,
phys_addr_t size, bool nomap) phys_addr_t size, bool nomap)
{ {
......
...@@ -42,11 +42,6 @@ void __init early_init_dt_add_memory_arch(u64 base, u64 size) ...@@ -42,11 +42,6 @@ void __init early_init_dt_add_memory_arch(u64 base, u64 size)
} }
void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
{
return alloc_bootmem_align(size, align);
}
int __init early_init_dt_reserve_memory_arch(phys_addr_t base, phys_addr_t size, int __init early_init_dt_reserve_memory_arch(phys_addr_t base, phys_addr_t size,
bool nomap) bool nomap)
{ {
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
/* /*
* Architecture specific OF callbacks. * Architecture specific OF callbacks.
*/ */
#include <linux/bootmem.h>
#include <linux/export.h> #include <linux/export.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
...@@ -39,11 +38,6 @@ void __init early_init_dt_add_memory_arch(u64 base, u64 size) ...@@ -39,11 +38,6 @@ void __init early_init_dt_add_memory_arch(u64 base, u64 size)
BUG(); BUG();
} }
void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
{
return __alloc_bootmem(size, align, __pa(MAX_DMA_ADDRESS));
}
void __init add_dtb(u64 data) void __init add_dtb(u64 data)
{ {
initial_dtb = data + offsetof(struct setup_data, data); initial_dtb = data + offsetof(struct setup_data, data);
......
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/proc_fs.h> #include <linux/proc_fs.h>
#include <linux/screen_info.h> #include <linux/screen_info.h>
#include <linux/bootmem.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/percpu.h> #include <linux/percpu.h>
#include <linux/cpu.h> #include <linux/cpu.h>
...@@ -220,17 +219,6 @@ static int __init xtensa_dt_io_area(unsigned long node, const char *uname, ...@@ -220,17 +219,6 @@ static int __init xtensa_dt_io_area(unsigned long node, const char *uname,
} }
#endif #endif
void __init early_init_dt_add_memory_arch(u64 base, u64 size)
{
size &= PAGE_MASK;
memblock_add(base, size);
}
void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
{
return __alloc_bootmem(size, align, 0);
}
void __init early_init_devtree(void *params) void __init early_init_devtree(void *params)
{ {
early_init_dt_scan(params); early_init_dt_scan(params);
......
# SPDX-License-Identifier: GPL-2.0
config DTC config DTC
bool bool
...@@ -13,7 +14,8 @@ if OF ...@@ -13,7 +14,8 @@ if OF
config OF_UNITTEST config OF_UNITTEST
bool "Device Tree runtime unit tests" bool "Device Tree runtime unit tests"
depends on OF_IRQ depends on !SPARC
select IRQ_DOMAIN
select OF_EARLY_FLATTREE select OF_EARLY_FLATTREE
select OF_RESOLVE select OF_RESOLVE
help help
...@@ -61,7 +63,7 @@ config OF_DYNAMIC ...@@ -61,7 +63,7 @@ config OF_DYNAMIC
config OF_ADDRESS config OF_ADDRESS
def_bool y def_bool y
depends on !SPARC && HAS_IOMEM depends on !SPARC && (HAS_IOMEM || UML)
select OF_ADDRESS_PCI if PCI select OF_ADDRESS_PCI if PCI
config OF_ADDRESS_PCI config OF_ADDRESS_PCI
......
// SPDX-License-Identifier: GPL-2.0
#define pr_fmt(fmt) "OF: " fmt #define pr_fmt(fmt) "OF: " fmt
#include <linux/device.h> #include <linux/device.h>
......
// SPDX-License-Identifier: GPL-2.0+
/* /*
* Procedures for creating, accessing and interpreting the device tree. * Procedures for creating, accessing and interpreting the device tree.
* *
...@@ -11,11 +12,6 @@ ...@@ -11,11 +12,6 @@
* *
* Reconsolidated from arch/x/kernel/prom.c by Stephen Rothwell and * Reconsolidated from arch/x/kernel/prom.c by Stephen Rothwell and
* Grant Likely. * Grant Likely.
*
* 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.
*/ */
#define pr_fmt(fmt) "OF: " fmt #define pr_fmt(fmt) "OF: " fmt
......
// SPDX-License-Identifier: GPL-2.0
#include <linux/string.h> #include <linux/string.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/of.h> #include <linux/of.h>
......
// SPDX-License-Identifier: GPL-2.0
/* /*
* Support for dynamic device trees. * Support for dynamic device trees.
* *
......
// SPDX-License-Identifier: GPL-2.0
/* /*
* Functions for working with the Flattened Device Tree data format * Functions for working with the Flattened Device Tree data format
* *
* Copyright 2009 Benjamin Herrenschmidt, IBM Corp * Copyright 2009 Benjamin Herrenschmidt, IBM Corp
* benh@kernel.crashing.org * benh@kernel.crashing.org
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* version 2 as published by the Free Software Foundation.
*/ */
#define pr_fmt(fmt) "OF: fdt: " fmt #define pr_fmt(fmt) "OF: fdt: " fmt
...@@ -14,6 +11,7 @@ ...@@ -14,6 +11,7 @@
#include <linux/crc32.h> #include <linux/crc32.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/initrd.h> #include <linux/initrd.h>
#include <linux/bootmem.h>
#include <linux/memblock.h> #include <linux/memblock.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/of.h> #include <linux/of.h>
...@@ -1183,14 +1181,6 @@ int __init __weak early_init_dt_reserve_memory_arch(phys_addr_t base, ...@@ -1183,14 +1181,6 @@ int __init __weak early_init_dt_reserve_memory_arch(phys_addr_t base,
return memblock_reserve(base, size); return memblock_reserve(base, size);
} }
/*
* called from unflatten_device_tree() to bootstrap devicetree itself
* Architectures can override this definition if memblock isn't used
*/
void * __init __weak early_init_dt_alloc_memory_arch(u64 size, u64 align)
{
return __va(memblock_alloc(size, align));
}
#else #else
void __init __weak early_init_dt_add_memory_arch(u64 base, u64 size) void __init __weak early_init_dt_add_memory_arch(u64 base, u64 size)
{ {
...@@ -1209,13 +1199,12 @@ int __init __weak early_init_dt_reserve_memory_arch(phys_addr_t base, ...@@ -1209,13 +1199,12 @@ int __init __weak early_init_dt_reserve_memory_arch(phys_addr_t base,
&base, &size, nomap ? " (nomap)" : ""); &base, &size, nomap ? " (nomap)" : "");
return -ENOSYS; return -ENOSYS;
} }
#endif
void * __init __weak early_init_dt_alloc_memory_arch(u64 size, u64 align) static void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
{ {
WARN_ON(1); return memblock_virt_alloc(size, align);
return NULL;
} }
#endif
bool __init early_init_dt_verify(void *params) bool __init early_init_dt_verify(void *params)
{ {
......
// SPDX-License-Identifier: GPL-2.0+
/* /*
* FDT Address translation based on u-boot fdt_support.c which in turn was * FDT Address translation based on u-boot fdt_support.c which in turn was
* based on the kernel unflattened DT address translation code. * based on the kernel unflattened DT address translation code.
...@@ -6,11 +7,6 @@ ...@@ -6,11 +7,6 @@
* Gerald Van Baren, Custom IDEAS, vanbaren@cideas.com * Gerald Van Baren, Custom IDEAS, vanbaren@cideas.com
* *
* Copyright 2010-2011 Freescale Semiconductor, Inc. * Copyright 2010-2011 Freescale Semiconductor, Inc.
*
* 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, or (at your option)
* any later version.
*/ */
#define pr_fmt(fmt) "OF: fdt: " fmt #define pr_fmt(fmt) "OF: fdt: " fmt
......
// SPDX-License-Identifier: GPL-2.0+
/* /*
* Derived from arch/i386/kernel/irq.c * Derived from arch/i386/kernel/irq.c
* Copyright (C) 1992 Linus Torvalds * Copyright (C) 1992 Linus Torvalds
...@@ -8,11 +9,6 @@ ...@@ -8,11 +9,6 @@
* Adapted for Power Macintosh by Paul Mackerras * Adapted for Power Macintosh by Paul Mackerras
* Copyright (C) 1996 Paul Mackerras (paulus@cs.anu.edu.au) * Copyright (C) 1996 Paul Mackerras (paulus@cs.anu.edu.au)
* *
* 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.
*
* This file contains the code used to make IRQ descriptions in the * This file contains the code used to make IRQ descriptions in the
* device tree to actual irq numbers on an interrupt controller * device tree to actual irq numbers on an interrupt controller
* driver. * driver.
...@@ -83,9 +79,8 @@ EXPORT_SYMBOL_GPL(of_irq_find_parent); ...@@ -83,9 +79,8 @@ EXPORT_SYMBOL_GPL(of_irq_find_parent);
/** /**
* of_irq_parse_raw - Low level interrupt tree parsing * of_irq_parse_raw - Low level interrupt tree parsing
* @parent: the device interrupt parent
* @addr: address specifier (start of "reg" property of the device) in be32 format * @addr: address specifier (start of "reg" property of the device) in be32 format
* @out_irq: structure of_irq updated by this function * @out_irq: structure of_phandle_args updated by this function
* *
* Returns 0 on success and a negative number on error * Returns 0 on success and a negative number on error
* *
......
// SPDX-License-Identifier: GPL-2.0
#include <linux/of.h> #include <linux/of.h>
#include <linux/slab.h> #include <linux/slab.h>
...@@ -161,4 +162,3 @@ void __of_detach_node_sysfs(struct device_node *np) ...@@ -161,4 +162,3 @@ void __of_detach_node_sysfs(struct device_node *np)
/* finally remove the kobj_init ref */ /* finally remove the kobj_init ref */
of_node_put(np); of_node_put(np);
} }
// SPDX-License-Identifier: GPL-2.0
/* /*
* OF NUMA Parsing support. * OF NUMA Parsing support.
* *
* Copyright (C) 2015 - 2016 Cavium Inc. * Copyright (C) 2015 - 2016 Cavium Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#define pr_fmt(fmt) "OF: NUMA: " fmt #define pr_fmt(fmt) "OF: NUMA: " fmt
......
/* SPDX-License-Identifier: GPL-2.0+ */
#ifndef _LINUX_OF_PRIVATE_H #ifndef _LINUX_OF_PRIVATE_H
#define _LINUX_OF_PRIVATE_H #define _LINUX_OF_PRIVATE_H
/* /*
...@@ -5,11 +6,6 @@ ...@@ -5,11 +6,6 @@
* *
* Paul Mackerras August 1996. * Paul Mackerras August 1996.
* Copyright (C) 1996-2005 Paul Mackerras. * Copyright (C) 1996-2005 Paul Mackerras.
*
* 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.
*/ */
/** /**
......
// SPDX-License-Identifier: GPL-2.0+
/* /*
* Device tree based initialization code for reserved memory. * Device tree based initialization code for reserved memory.
* *
...@@ -6,11 +7,6 @@ ...@@ -6,11 +7,6 @@
* http://www.samsung.com * http://www.samsung.com
* Author: Marek Szyprowski <m.szyprowski@samsung.com> * Author: Marek Szyprowski <m.szyprowski@samsung.com>
* Author: Josh Cartwright <joshc@codeaurora.org> * Author: Josh Cartwright <joshc@codeaurora.org>
*
* 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 optional) any later version of the license.
*/ */
#define pr_fmt(fmt) "OF: reserved mem: " fmt #define pr_fmt(fmt) "OF: reserved mem: " fmt
......
// SPDX-License-Identifier: GPL-2.0
/* /*
* Functions for working with device tree overlays * Functions for working with device tree overlays
* *
* Copyright (C) 2012 Pantelis Antoniou <panto@antoniou-consulting.com> * Copyright (C) 2012 Pantelis Antoniou <panto@antoniou-consulting.com>
* Copyright (C) 2012 Texas Instruments Inc. * Copyright (C) 2012 Texas Instruments Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* version 2 as published by the Free Software Foundation.
*/ */
#define pr_fmt(fmt) "OF: overlay: " fmt #define pr_fmt(fmt) "OF: overlay: " fmt
......
// SPDX-License-Identifier: GPL-2.0+
/* pdt.c: OF PROM device tree support code. /* pdt.c: OF PROM device tree support code.
* *
* Paul Mackerras August 1996. * Paul Mackerras August 1996.
...@@ -8,11 +9,6 @@ ...@@ -8,11 +9,6 @@
* *
* Adapted for sparc by David S. Miller davem@davemloft.net * Adapted for sparc by David S. Miller davem@davemloft.net
* Adapted for multiple architectures by Andres Salomon <dilinger@queued.net> * Adapted for multiple architectures by Andres Salomon <dilinger@queued.net>
*
* 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/kernel.h>
......
// SPDX-License-Identifier: GPL-2.0+
/* /*
* Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corp. * Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corp.
* <benh@kernel.crashing.org> * <benh@kernel.crashing.org>
* and Arnd Bergmann, IBM Corp. * and Arnd Bergmann, IBM Corp.
* Merged from powerpc/kernel/of_platform.c and * Merged from powerpc/kernel/of_platform.c and
* sparc{,64}/kernel/of_device.c by Stephen Rothwell * sparc{,64}/kernel/of_device.c by Stephen Rothwell
*
* 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.
*
*/ */
#define pr_fmt(fmt) "OF: " fmt #define pr_fmt(fmt) "OF: " fmt
......
// SPDX-License-Identifier: GPL-2.0+
/* /*
* drivers/of/property.c - Procedures for accessing and interpreting * drivers/of/property.c - Procedures for accessing and interpreting
* Devicetree properties and graphs. * Devicetree properties and graphs.
...@@ -16,11 +17,6 @@ ...@@ -16,11 +17,6 @@
* *
* Reconsolidated from arch/x/kernel/prom.c by Stephen Rothwell and * Reconsolidated from arch/x/kernel/prom.c by Stephen Rothwell and
* Grant Likely. * Grant Likely.
*
* 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.
*/ */
#define pr_fmt(fmt) "OF: " fmt #define pr_fmt(fmt) "OF: " fmt
......
// SPDX-License-Identifier: GPL-2.0
/* /*
* Functions for dealing with DT resolution * Functions for dealing with DT resolution
* *
* Copyright (C) 2012 Pantelis Antoniou <panto@antoniou-consulting.com> * Copyright (C) 2012 Pantelis Antoniou <panto@antoniou-consulting.com>
* Copyright (C) 2012 Texas Instruments Inc. * Copyright (C) 2012 Texas Instruments Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* version 2 as published by the Free Software Foundation.
*/ */
#define pr_fmt(fmt) "OF: resolver: " fmt #define pr_fmt(fmt) "OF: resolver: " fmt
......
...@@ -2,19 +2,12 @@ ...@@ -2,19 +2,12 @@
DTC_FLAGS_testcases := -Wno-interrupts_property DTC_FLAGS_testcases := -Wno-interrupts_property
obj-y += testcases.dtb.o obj-y += testcases.dtb.o
targets += testcases.dtb testcases.dtb.S obj-$(CONFIG_OF_OVERLAY) += overlay.dtb.o \
overlay_bad_phandle.dtb.o \
overlay_bad_symbol.dtb.o \
overlay_base.dtb.o
ifdef CONFIG_OF_OVERLAY targets += $(foreach suffix, dtb dtb.S, $(patsubst %.dtb.o,%.$(suffix),$(obj-y)))
obj-y += overlay.dtb.o
obj-y += overlay_bad_phandle.dtb.o
obj-y += overlay_bad_symbol.dtb.o
obj-y += overlay_base.dtb.o
targets += overlay.dtb overlay.dtb.S
targets += overlay_bad_phandle.dtb overlay_bad_phandle.dtb.S
targets += overlay_bad_symbol.dtb overlay_bad_symbol.dtb.S
targets += overlay_base.dtb overlay_base.dtb.S
# enable creation of __symbols__ node # enable creation of __symbols__ node
DTC_FLAGS_overlay := -@ DTC_FLAGS_overlay := -@
...@@ -22,8 +15,6 @@ DTC_FLAGS_overlay_bad_phandle := -@ ...@@ -22,8 +15,6 @@ DTC_FLAGS_overlay_bad_phandle := -@
DTC_FLAGS_overlay_bad_symbol := -@ DTC_FLAGS_overlay_bad_symbol := -@
DTC_FLAGS_overlay_base := -@ DTC_FLAGS_overlay_base := -@
endif
.PRECIOUS: \ .PRECIOUS: \
$(obj)/%.dtb.S \ $(obj)/%.dtb.S \
$(obj)/%.dtb $(obj)/%.dtb
// SPDX-License-Identifier: GPL-2.0
/dts-v1/; /dts-v1/;
/plugin/; /plugin/;
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#define pr_fmt(fmt) "### dt-test ### " fmt #define pr_fmt(fmt) "### dt-test ### " fmt
#include <linux/bootmem.h>
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/err.h> #include <linux/err.h>
#include <linux/errno.h> #include <linux/errno.h>
...@@ -2053,6 +2054,11 @@ static struct overlay_info overlays[] = { ...@@ -2053,6 +2054,11 @@ static struct overlay_info overlays[] = {
static struct device_node *overlay_base_root; static struct device_node *overlay_base_root;
static void * __init dt_alloc_memory(u64 size, u64 align)
{
return memblock_virt_alloc(size, align);
}
/* /*
* Create base device tree for the overlay unittest. * Create base device tree for the overlay unittest.
* *
...@@ -2092,8 +2098,7 @@ void __init unittest_unflatten_overlay_base(void) ...@@ -2092,8 +2098,7 @@ void __init unittest_unflatten_overlay_base(void)
return; return;
} }
info->data = early_init_dt_alloc_memory_arch(size, info->data = dt_alloc_memory(size, roundup_pow_of_two(FDT_V17_SIZE));
roundup_pow_of_two(FDT_V17_SIZE));
if (!info->data) { if (!info->data) {
pr_err("alloc for dtb 'overlay_base' failed"); pr_err("alloc for dtb 'overlay_base' failed");
return; return;
...@@ -2102,7 +2107,7 @@ void __init unittest_unflatten_overlay_base(void) ...@@ -2102,7 +2107,7 @@ void __init unittest_unflatten_overlay_base(void)
memcpy(info->data, info->dtb_begin, size); memcpy(info->data, info->dtb_begin, size);
__unflatten_device_tree(info->data, NULL, &info->np_overlay, __unflatten_device_tree(info->data, NULL, &info->np_overlay,
early_init_dt_alloc_memory_arch, true); dt_alloc_memory, true);
overlay_base_root = info->np_overlay; overlay_base_root = info->np_overlay;
} }
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
#define _INCLUDE_LIBFDT_H_ #define _INCLUDE_LIBFDT_H_
#include <linux/libfdt_env.h> #include <linux/libfdt_env.h>
#include "../../scripts/dtc/libfdt/fdt.h"
#include "../../scripts/dtc/libfdt/libfdt.h" #include "../../scripts/dtc/libfdt/libfdt.h"
#endif /* _INCLUDE_LIBFDT_H_ */ #endif /* _INCLUDE_LIBFDT_H_ */
/* SPDX-License-Identifier: GPL-2.0+ */
#ifndef _LINUX_OF_H #ifndef _LINUX_OF_H
#define _LINUX_OF_H #define _LINUX_OF_H
/* /*
...@@ -9,11 +10,6 @@ ...@@ -9,11 +10,6 @@
* Updates for PPC64 by Peter Bergner & David Engebretsen, IBM Corp. * Updates for PPC64 by Peter Bergner & David Engebretsen, IBM Corp.
* Updates for SPARC64 by David S. Miller * Updates for SPARC64 by David S. Miller
* Derived from PowerPC and Sparc prom.h files by Stephen Rothwell, IBM Corp. * Derived from PowerPC and Sparc prom.h files by Stephen Rothwell, IBM Corp.
*
* 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/types.h> #include <linux/types.h>
#include <linux/bitops.h> #include <linux/bitops.h>
......
/* SPDX-License-Identifier: GPL-2.0 */
/* /*
* OF helpers for DMA request / controller * OF helpers for DMA request / controller
* *
* Based on of_gpio.h * Based on of_gpio.h
* *
* Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/ */
#ifndef __LINUX_OF_DMA_H #ifndef __LINUX_OF_DMA_H
......
/* SPDX-License-Identifier: GPL-2.0 */
/* /*
* Definitions for working with the Flattened Device Tree data format * Definitions for working with the Flattened Device Tree data format
* *
* Copyright 2009 Benjamin Herrenschmidt, IBM Corp * Copyright 2009 Benjamin Herrenschmidt, IBM Corp
* benh@kernel.crashing.org * benh@kernel.crashing.org
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* version 2 as published by the Free Software Foundation.
*/ */
#ifndef _LINUX_OF_FDT_H #ifndef _LINUX_OF_FDT_H
...@@ -47,6 +44,12 @@ extern void *initial_boot_params; ...@@ -47,6 +44,12 @@ extern void *initial_boot_params;
extern char __dtb_start[]; extern char __dtb_start[];
extern char __dtb_end[]; extern char __dtb_end[];
/* Other Prototypes */
extern u64 of_flat_dt_translate_address(unsigned long node);
extern void of_fdt_limit_memory(int limit);
#endif /* CONFIG_OF_FLATTREE */
#ifdef CONFIG_OF_EARLY_FLATTREE
/* For scanning the flat device-tree at boot time */ /* For scanning the flat device-tree at boot time */
extern int of_scan_flat_dt(int (*it)(unsigned long node, const char *uname, extern int of_scan_flat_dt(int (*it)(unsigned long node, const char *uname,
int depth, void *data), int depth, void *data),
...@@ -77,7 +80,6 @@ extern void early_init_dt_add_memory_arch(u64 base, u64 size); ...@@ -77,7 +80,6 @@ extern void early_init_dt_add_memory_arch(u64 base, u64 size);
extern int early_init_dt_mark_hotplug_memory_arch(u64 base, u64 size); extern int early_init_dt_mark_hotplug_memory_arch(u64 base, u64 size);
extern int early_init_dt_reserve_memory_arch(phys_addr_t base, phys_addr_t size, extern int early_init_dt_reserve_memory_arch(phys_addr_t base, phys_addr_t size,
bool no_map); bool no_map);
extern void * early_init_dt_alloc_memory_arch(u64 size, u64 align);
extern u64 dt_mem_next_cell(int s, const __be32 **cellp); extern u64 dt_mem_next_cell(int s, const __be32 **cellp);
/* Early flat tree scan hooks */ /* Early flat tree scan hooks */
...@@ -97,16 +99,14 @@ extern void unflatten_device_tree(void); ...@@ -97,16 +99,14 @@ extern void unflatten_device_tree(void);
extern void unflatten_and_copy_device_tree(void); extern void unflatten_and_copy_device_tree(void);
extern void early_init_devtree(void *); extern void early_init_devtree(void *);
extern void early_get_first_memblock_info(void *, phys_addr_t *); extern void early_get_first_memblock_info(void *, phys_addr_t *);
extern u64 of_flat_dt_translate_address(unsigned long node); #else /* CONFIG_OF_EARLY_FLATTREE */
extern void of_fdt_limit_memory(int limit);
#else /* CONFIG_OF_FLATTREE */
static inline int early_init_dt_scan_chosen_stdout(void) { return -ENODEV; } static inline int early_init_dt_scan_chosen_stdout(void) { return -ENODEV; }
static inline void early_init_fdt_scan_reserved_mem(void) {} static inline void early_init_fdt_scan_reserved_mem(void) {}
static inline void early_init_fdt_reserve_self(void) {} static inline void early_init_fdt_reserve_self(void) {}
static inline const char *of_flat_dt_get_machine_name(void) { return NULL; } static inline const char *of_flat_dt_get_machine_name(void) { return NULL; }
static inline void unflatten_device_tree(void) {} static inline void unflatten_device_tree(void) {}
static inline void unflatten_and_copy_device_tree(void) {} static inline void unflatten_and_copy_device_tree(void) {}
#endif /* CONFIG_OF_FLATTREE */ #endif /* CONFIG_OF_EARLY_FLATTREE */
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
#endif /* _LINUX_OF_FDT_H */ #endif /* _LINUX_OF_FDT_H */
/* SPDX-License-Identifier: GPL-2.0+ */
/* /*
* OF helpers for the GPIO API * OF helpers for the GPIO API
* *
* Copyright (c) 2007-2008 MontaVista Software, Inc. * Copyright (c) 2007-2008 MontaVista Software, Inc.
* *
* Author: Anton Vorontsov <avorontsov@ru.mvista.com> * Author: Anton Vorontsov <avorontsov@ru.mvista.com>
*
* 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.
*/ */
#ifndef __LINUX_OF_GPIO_H #ifndef __LINUX_OF_GPIO_H
......
/* SPDX-License-Identifier: GPL-2.0 */
/* /*
* OF graph binding parsing helpers * OF graph binding parsing helpers
* *
...@@ -6,10 +7,6 @@ ...@@ -6,10 +7,6 @@
* *
* Copyright (C) 2012 Renesas Electronics Corp. * Copyright (C) 2012 Renesas Electronics Corp.
* Author: Guennadi Liakhovetski <g.liakhovetski@gmx.de> * Author: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of version 2 of the GNU General Public License as
* published by the Free Software Foundation.
*/ */
#ifndef __LINUX_OF_GRAPH_H #ifndef __LINUX_OF_GRAPH_H
#define __LINUX_OF_GRAPH_H #define __LINUX_OF_GRAPH_H
......
/* SPDX-License-Identifier: GPL-2.0+ */
/* /*
* Definitions for building a device tree by calling into the * Definitions for building a device tree by calling into the
* Open Firmware PROM. * Open Firmware PROM.
* *
* Copyright (C) 2010 Andres Salomon <dilinger@queued.net> * Copyright (C) 2010 Andres Salomon <dilinger@queued.net>
*
* 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.
*/ */
#ifndef _LINUX_OF_PDT_H #ifndef _LINUX_OF_PDT_H
......
/* SPDX-License-Identifier: GPL-2.0+ */
#ifndef _LINUX_OF_PLATFORM_H #ifndef _LINUX_OF_PLATFORM_H
#define _LINUX_OF_PLATFORM_H #define _LINUX_OF_PLATFORM_H
/* /*
* Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corp. * Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corp.
* <benh@kernel.crashing.org> * <benh@kernel.crashing.org>
*
* 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/device.h> #include <linux/device.h>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment