diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-05-07 11:33:29 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-05-07 11:33:29 -0400 |
commit | 76787cf4af9b833353a4cc22364234632b2062d2 (patch) | |
tree | a2a49b333b20c7d267bedf290bc65f13099ab6ca | |
parent | 75bc37fefc4471e718ba8e651aa74673d4e0a9eb (diff) | |
parent | f130307054a59ca21d2396f386be77ebd2e8ca96 (diff) |
Merge tag 'devicetree-fixes-for-4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux
Pull DeviceTree fixes from Rob Herring:
- fix path to display timing binding
- fix some typos in interrupt-names and clock-names
- fix a resource leak on overlay removal
- add missing documentation for R8A77965 DMA, serial, and net
- cleanup sunxi pinctrl description
- add Kieback & Peter GmbH vendor prefix
* tag 'devicetree-fixes-for-4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux:
dt-bindings: panel: lvds: Fix path to display timing bindings
dt-bindings: mvebu-uart: DT fix s/interrupts-names/interrupt-names/
dt-bindings: meson-uart: DT fix s/clocks-names/clock-names/
of: overlay: Stop leaking resources on overlay removal
dtc: checks: drop warning for missing PCI bridge bus-range
dt-bindings: dmaengine: rcar-dmac: document R8A77965 support
dt-bindings: serial: sh-sci: Add support for r8a77965 (H)SCIF
dt-bindings: net: ravb: Add support for r8a77965 SoC
dt-bindings: pinctrl: sunxi: Fix reference to driver
doc: Add vendor prefix for Kieback & Peter GmbH
9 files changed, 40 insertions, 16 deletions
diff --git a/Documentation/devicetree/bindings/display/panel/panel-common.txt b/Documentation/devicetree/bindings/display/panel/panel-common.txt index 557fa765adcb..5d2519af4bb5 100644 --- a/Documentation/devicetree/bindings/display/panel/panel-common.txt +++ b/Documentation/devicetree/bindings/display/panel/panel-common.txt | |||
@@ -38,7 +38,7 @@ Display Timings | |||
38 | require specific display timings. The panel-timing subnode expresses those | 38 | require specific display timings. The panel-timing subnode expresses those |
39 | timings as specified in the timing subnode section of the display timing | 39 | timings as specified in the timing subnode section of the display timing |
40 | bindings defined in | 40 | bindings defined in |
41 | Documentation/devicetree/bindings/display/display-timing.txt. | 41 | Documentation/devicetree/bindings/display/panel/display-timing.txt. |
42 | 42 | ||
43 | 43 | ||
44 | Connectivity | 44 | Connectivity |
diff --git a/Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt b/Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt index aadfb236d53a..61315eaa7660 100644 --- a/Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt +++ b/Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt | |||
@@ -26,6 +26,7 @@ Required Properties: | |||
26 | - "renesas,dmac-r8a7794" (R-Car E2) | 26 | - "renesas,dmac-r8a7794" (R-Car E2) |
27 | - "renesas,dmac-r8a7795" (R-Car H3) | 27 | - "renesas,dmac-r8a7795" (R-Car H3) |
28 | - "renesas,dmac-r8a7796" (R-Car M3-W) | 28 | - "renesas,dmac-r8a7796" (R-Car M3-W) |
29 | - "renesas,dmac-r8a77965" (R-Car M3-N) | ||
29 | - "renesas,dmac-r8a77970" (R-Car V3M) | 30 | - "renesas,dmac-r8a77970" (R-Car V3M) |
30 | - "renesas,dmac-r8a77980" (R-Car V3H) | 31 | - "renesas,dmac-r8a77980" (R-Car V3H) |
31 | 32 | ||
diff --git a/Documentation/devicetree/bindings/net/renesas,ravb.txt b/Documentation/devicetree/bindings/net/renesas,ravb.txt index c306f55d335b..890526dbfc26 100644 --- a/Documentation/devicetree/bindings/net/renesas,ravb.txt +++ b/Documentation/devicetree/bindings/net/renesas,ravb.txt | |||
@@ -18,6 +18,7 @@ Required properties: | |||
18 | 18 | ||
19 | - "renesas,etheravb-r8a7795" for the R8A7795 SoC. | 19 | - "renesas,etheravb-r8a7795" for the R8A7795 SoC. |
20 | - "renesas,etheravb-r8a7796" for the R8A7796 SoC. | 20 | - "renesas,etheravb-r8a7796" for the R8A7796 SoC. |
21 | - "renesas,etheravb-r8a77965" for the R8A77965 SoC. | ||
21 | - "renesas,etheravb-r8a77970" for the R8A77970 SoC. | 22 | - "renesas,etheravb-r8a77970" for the R8A77970 SoC. |
22 | - "renesas,etheravb-r8a77980" for the R8A77980 SoC. | 23 | - "renesas,etheravb-r8a77980" for the R8A77980 SoC. |
23 | - "renesas,etheravb-r8a77995" for the R8A77995 SoC. | 24 | - "renesas,etheravb-r8a77995" for the R8A77995 SoC. |
diff --git a/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt index ed5eb547afc8..64bc5c2a76da 100644 --- a/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt | |||
@@ -56,9 +56,9 @@ pins it needs, and how they should be configured, with regard to muxer | |||
56 | configuration, drive strength and pullups. If one of these options is | 56 | configuration, drive strength and pullups. If one of these options is |
57 | not set, its actual value will be unspecified. | 57 | not set, its actual value will be unspecified. |
58 | 58 | ||
59 | This driver supports the generic pin multiplexing and configuration | 59 | Allwinner A1X Pin Controller supports the generic pin multiplexing and |
60 | bindings. For details on each properties, you can refer to | 60 | configuration bindings. For details on each properties, you can refer to |
61 | ./pinctrl-bindings.txt. | 61 | ./pinctrl-bindings.txt. |
62 | 62 | ||
63 | Required sub-node properties: | 63 | Required sub-node properties: |
64 | - pins | 64 | - pins |
diff --git a/Documentation/devicetree/bindings/serial/renesas,sci-serial.txt b/Documentation/devicetree/bindings/serial/renesas,sci-serial.txt index a006ea4d065f..106808b55b6d 100644 --- a/Documentation/devicetree/bindings/serial/renesas,sci-serial.txt +++ b/Documentation/devicetree/bindings/serial/renesas,sci-serial.txt | |||
@@ -43,6 +43,8 @@ Required properties: | |||
43 | - "renesas,hscif-r8a7795" for R8A7795 (R-Car H3) HSCIF compatible UART. | 43 | - "renesas,hscif-r8a7795" for R8A7795 (R-Car H3) HSCIF compatible UART. |
44 | - "renesas,scif-r8a7796" for R8A7796 (R-Car M3-W) SCIF compatible UART. | 44 | - "renesas,scif-r8a7796" for R8A7796 (R-Car M3-W) SCIF compatible UART. |
45 | - "renesas,hscif-r8a7796" for R8A7796 (R-Car M3-W) HSCIF compatible UART. | 45 | - "renesas,hscif-r8a7796" for R8A7796 (R-Car M3-W) HSCIF compatible UART. |
46 | - "renesas,scif-r8a77965" for R8A77965 (R-Car M3-N) SCIF compatible UART. | ||
47 | - "renesas,hscif-r8a77965" for R8A77965 (R-Car M3-N) HSCIF compatible UART. | ||
46 | - "renesas,scif-r8a77970" for R8A77970 (R-Car V3M) SCIF compatible UART. | 48 | - "renesas,scif-r8a77970" for R8A77970 (R-Car V3M) SCIF compatible UART. |
47 | - "renesas,hscif-r8a77970" for R8A77970 (R-Car V3M) HSCIF compatible UART. | 49 | - "renesas,hscif-r8a77970" for R8A77970 (R-Car V3M) HSCIF compatible UART. |
48 | - "renesas,scif-r8a77980" for R8A77980 (R-Car V3H) SCIF compatible UART. | 50 | - "renesas,scif-r8a77980" for R8A77980 (R-Car V3H) SCIF compatible UART. |
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt index b5f978a4cac6..a38d8bfae19c 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.txt +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt | |||
@@ -182,6 +182,7 @@ karo Ka-Ro electronics GmbH | |||
182 | keithkoep Keith & Koep GmbH | 182 | keithkoep Keith & Koep GmbH |
183 | keymile Keymile GmbH | 183 | keymile Keymile GmbH |
184 | khadas Khadas | 184 | khadas Khadas |
185 | kiebackpeter Kieback & Peter GmbH | ||
185 | kinetic Kinetic Technologies | 186 | kinetic Kinetic Technologies |
186 | kingnovel Kingnovel Technology Co., Ltd. | 187 | kingnovel Kingnovel Technology Co., Ltd. |
187 | kosagi Sutajio Ko-Usagi PTE Ltd. | 188 | kosagi Sutajio Ko-Usagi PTE Ltd. |
diff --git a/Documentation/devicetree/overlay-notes.txt b/Documentation/devicetree/overlay-notes.txt index a4feb6dde8cd..725fb8d255c1 100644 --- a/Documentation/devicetree/overlay-notes.txt +++ b/Documentation/devicetree/overlay-notes.txt | |||
@@ -98,6 +98,14 @@ Finally, if you need to remove all overlays in one-go, just call | |||
98 | of_overlay_remove_all() which will remove every single one in the correct | 98 | of_overlay_remove_all() which will remove every single one in the correct |
99 | order. | 99 | order. |
100 | 100 | ||
101 | In addition, there is the option to register notifiers that get called on | ||
102 | overlay operations. See of_overlay_notifier_register/unregister and | ||
103 | enum of_overlay_notify_action for details. | ||
104 | |||
105 | Note that a notifier callback is not supposed to store pointers to a device | ||
106 | tree node or its content beyond OF_OVERLAY_POST_REMOVE corresponding to the | ||
107 | respective node it received. | ||
108 | |||
101 | Overlay DTS Format | 109 | Overlay DTS Format |
102 | ------------------ | 110 | ------------------ |
103 | 111 | ||
diff --git a/drivers/of/overlay.c b/drivers/of/overlay.c index b35fe88f1851..7baa53e5b1d7 100644 --- a/drivers/of/overlay.c +++ b/drivers/of/overlay.c | |||
@@ -102,12 +102,28 @@ static DEFINE_IDR(ovcs_idr); | |||
102 | 102 | ||
103 | static BLOCKING_NOTIFIER_HEAD(overlay_notify_chain); | 103 | static BLOCKING_NOTIFIER_HEAD(overlay_notify_chain); |
104 | 104 | ||
105 | /** | ||
106 | * of_overlay_notifier_register() - Register notifier for overlay operations | ||
107 | * @nb: Notifier block to register | ||
108 | * | ||
109 | * Register for notification on overlay operations on device tree nodes. The | ||
110 | * reported actions definied by @of_reconfig_change. The notifier callback | ||
111 | * furthermore receives a pointer to the affected device tree node. | ||
112 | * | ||
113 | * Note that a notifier callback is not supposed to store pointers to a device | ||
114 | * tree node or its content beyond @OF_OVERLAY_POST_REMOVE corresponding to the | ||
115 | * respective node it received. | ||
116 | */ | ||
105 | int of_overlay_notifier_register(struct notifier_block *nb) | 117 | int of_overlay_notifier_register(struct notifier_block *nb) |
106 | { | 118 | { |
107 | return blocking_notifier_chain_register(&overlay_notify_chain, nb); | 119 | return blocking_notifier_chain_register(&overlay_notify_chain, nb); |
108 | } | 120 | } |
109 | EXPORT_SYMBOL_GPL(of_overlay_notifier_register); | 121 | EXPORT_SYMBOL_GPL(of_overlay_notifier_register); |
110 | 122 | ||
123 | /** | ||
124 | * of_overlay_notifier_register() - Unregister notifier for overlay operations | ||
125 | * @nb: Notifier block to unregister | ||
126 | */ | ||
111 | int of_overlay_notifier_unregister(struct notifier_block *nb) | 127 | int of_overlay_notifier_unregister(struct notifier_block *nb) |
112 | { | 128 | { |
113 | return blocking_notifier_chain_unregister(&overlay_notify_chain, nb); | 129 | return blocking_notifier_chain_unregister(&overlay_notify_chain, nb); |
@@ -671,17 +687,13 @@ static void free_overlay_changeset(struct overlay_changeset *ovcs) | |||
671 | of_node_put(ovcs->fragments[i].overlay); | 687 | of_node_put(ovcs->fragments[i].overlay); |
672 | } | 688 | } |
673 | kfree(ovcs->fragments); | 689 | kfree(ovcs->fragments); |
674 | |||
675 | /* | 690 | /* |
676 | * TODO | 691 | * There should be no live pointers into ovcs->overlay_tree and |
677 | * | 692 | * ovcs->fdt due to the policy that overlay notifiers are not allowed |
678 | * would like to: kfree(ovcs->overlay_tree); | 693 | * to retain pointers into the overlay devicetree. |
679 | * but can not since drivers may have pointers into this data | ||
680 | * | ||
681 | * would like to: kfree(ovcs->fdt); | ||
682 | * but can not since drivers may have pointers into this data | ||
683 | */ | 694 | */ |
684 | 695 | kfree(ovcs->overlay_tree); | |
696 | kfree(ovcs->fdt); | ||
685 | kfree(ovcs); | 697 | kfree(ovcs); |
686 | } | 698 | } |
687 | 699 | ||
diff --git a/scripts/dtc/checks.c b/scripts/dtc/checks.c index c07ba4da9e36..815eaf140ab5 100644 --- a/scripts/dtc/checks.c +++ b/scripts/dtc/checks.c | |||
@@ -787,10 +787,9 @@ static void check_pci_bridge(struct check *c, struct dt_info *dti, struct node * | |||
787 | FAIL(c, dti, node, "incorrect #size-cells for PCI bridge"); | 787 | FAIL(c, dti, node, "incorrect #size-cells for PCI bridge"); |
788 | 788 | ||
789 | prop = get_property(node, "bus-range"); | 789 | prop = get_property(node, "bus-range"); |
790 | if (!prop) { | 790 | if (!prop) |
791 | FAIL(c, dti, node, "missing bus-range for PCI bridge"); | ||
792 | return; | 791 | return; |
793 | } | 792 | |
794 | if (prop->val.len != (sizeof(cell_t) * 2)) { | 793 | if (prop->val.len != (sizeof(cell_t) * 2)) { |
795 | FAIL_PROP(c, dti, node, prop, "value must be 2 cells"); | 794 | FAIL_PROP(c, dti, node, prop, "value must be 2 cells"); |
796 | return; | 795 | return; |