* [GIT PULL 6/8] ARM: DT updates for v4.9
From: Arnd Bergmann @ 2016-10-08 0:33 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <3637015.LRn5VyhPVM@wuerfel>
The following changes since commit 3eab887a55424fc2c27553b7bfe32330df83f7b8:
Linux 4.8-rc4 (2016-08-28 15:04:33 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git tags/armsoc-dt
for you to fetch changes up to adff807988f92d4646c50b601936e340a92d5455:
Merge tag 'berlin-dt-for-v4.9-1' of git://git.infradead.org/users/hesselba/linux-berlin into next/dt (2016-10-02 22:20:39 -0700)
----------------------------------------------------------------
ARM: DT updates for v4.9
These are as usual a very large number of mostly boring updates to
enable devices in existing machines, or to fix minor bugs. Notably,
an ongoing treewide effort to fix warnings caused by an update to the
device tree compiler. These are enabled with "make W=1" at the moment
but can hopefully become the default once all issues have been addressed.
No new SoC platform is added this time around (Armada 395 and Orion
mv88f5181 are slight variations of existing ones), but a significant
number of new dts files are added, which I list by platform:
- Allwinner: Empire Electronix M712 and iNet d978 Rev2 tablets;
Orange Pi PC Plus, Orange Pi 2, Orange Pi Plus 2E,
Orange Pi Lite, Olimex A33-Olinuxino, and Nano Pi Neo
single-board computers
- ARM Realview: all supported machines (ported from board files)
- Broadcom: BCM958525er, BCM958522er, BCM988312hr, BCM958623hr and
BCM958622hr reference boards for Northstar platform;
Raspberry Pi Zero single-board computer
- Marvell EBU: Netgear WNR854T router (ported from board file);
Armada 395 SoC platform and GP board
Armada 390 DB development board
- NXP i.MX: imx7s Warp7 reference board;
Gateworks Ventana GW553x single-board computer,
Technologic Systems TS-4900 and
Engicam IMX6UL GEA M6UL computer-on-module,
Inverse Path USB armory board
- Qualcomm: LG Nexus 5 Phone
- Renesas: r8a7792/wheat and r7s72100/rskrza1 development boards
- Rockchip: Rockchip RK3288 Fennec reference board;
Firefly RK3288 Reload platform
- ST Microelectronics STi: B2260 (96boards) single-board computer
- TI Davinci: OMAP-L138 LCDK Development kit
- TI OMAP: beagleboard-x15 rev B1 single-board computer
Conflicts: vendor-prefixes.txt has conflicting additions, keep all of
them in alphabetical order.
----------------------------------------------------------------
Adam Ford (1):
ARM: dts: Add LogicPD DM37/AM37 Torpedo and SOM-LV
Andrej Rosano (2):
devicetree: Add vendor prefix for Inverse Path
ARM: dts: imx53: add support for USB armory board
Andrew F. Davis (3):
ARM: dts: keystone-k2g: Add device state controller node
ARM: dts: keystone-k2g: Add keystone IRQ controller node
ARM: dts: keystone-k2g: Add DSP GPIO controller node
Andy Yan (5):
soc: rockchip: add reboot-mode header
ARM: dts: rockchip: add syscon-reboot-mode DT node
ARM: dts: rockchip: enable usbotg for Popemtal-rk3288 board
ARM: dts: rockchip: fix L3G4200D i2c address on PopMetal-RK3288 board
ARM: dts: rockchip: Add sensor-supplies on PopMetal-RK3288 board
Anson Huang (1):
ARM: dts: imx6ul iomuxc syscon is compatible to imx6q
Arnd Bergmann (30):
ARM: dts: mvebu: fix reference to a390 spi controller
Merge tag 'renesas-dt-for-v4.9' of git://git.kernel.org/.../horms/renesas into next/dt
Merge tag 'lpc18xx_dts_for_4.9' of https://github.com/manabian/linux-lpc into next/dt
Merge tag 'samsung-dt-4.9' of git://git.kernel.org/.../krzk/linux into next/dt
Merge tag 'uniphier-dt-v4.9' of git://git.kernel.org/.../masahiroy/linux-uniphier into next/dt
Merge tag 'keystone_dts_for_4.9' of git://git.kernel.org/.../ssantosh/linux-keystone into next/dt
Merge tag 'omap-for-v4.9/dt-pt1-signed' of git://git.kernel.org/.../tmlind/linux-omap into next/dt
Merge tag 'sti-dt-for-v4.9-1' of git://git.kernel.org/.../pchotard/sti into next/dt
Merge tag 'qcom-dts-for-4.9' of git://git.kernel.org/.../agross/linux into next/dt
Merge tag 'mvebu-dt-4.9-1' of git://git.infradead.org/linux-mvebu into next/dt
Merge tag 'lpc18xx_dts_for_4.9_part2' of https://github.com/manabian/linux-lpc into next/dt
Merge tag 'renesas-dt2-for-v4.9' of git://git.kernel.org/.../horms/renesas into next/dt
Merge tag 'sunxi-dt-for-4.9' of https://git.kernel.org/.../mripard/linux into next/dt
Merge tag 'v4.9-rockchip-dts32-1' of git://git.kernel.org/.../mmind/linux-rockchip into next/dt
Merge tag 'tegra-for-4.9-arm-dt' of git://git.kernel.org/.../tegra/linux into next/dt
Merge tag 'realview-dts-split' of git://git.kernel.org/.../linusw/linux-integrator into next/dt
Merge tag 'imx-dt-4.9' of git://git.kernel.org/.../shawnguo/linux into next/dt
Merge tag 'clcd-nomadik' of git://git.kernel.org/.../linusw/linux-nomadik into next/dt
Merge tag 'arm-soc/for-4.9/devicetree' of http://github.com/Broadcom/stblinux into next/dt
Merge tag 'davinci-for-v4.9/dts' of git://git.kernel.org/.../nsekhar/linux-davinci into next/dt
Merge tag 'at91-ab-4.9-dt1' of git://git.kernel.org/.../abelloni/linux into next/dt
Merge tag 'mvebu-dt-4.9-2' of git://git.infradead.org/linux-mvebu into next/dt
Merge tag 'amlogic-dt' of git://git.kernel.org/.../khilman/linux-amlogic into next/dt
Merge tag 'sti-dt-for-v4.9-2' of git://git.kernel.org/.../pchotard/sti into next/dt
Merge tag 'sti-dt-for-v4.9-3' of git://git.kernel.org/.../pchotard/sti into next/dt
Merge tag 'davinci-for-v4.9/dts-p2' of git://git.kernel.org/.../nsekhar/linux-davinci into next/dt
Merge tag 'omap-for-v4.9/dt-pt2-signed' of git://git.kernel.org/.../tmlind/linux-omap into next/dt
Merge tag 'samsung-dt-4.9-2' of git://git.kernel.org/.../krzk/linux into next/dt
Merge tag 'samsung-dt-pinctrl-4.9' of git://git.kernel.org/.../krzk/linux into next/dt
Merge tag 'omap-for-v4.9/dt-pt3-signed' of git://git.kernel.org/.../tmlind/linux-omap into next/dt
Baruch Siach (1):
dt-binding: mrvl-gpio: remove orion-gpio description
Bhushan Shah (6):
ARM: dts: msm8974: Add nodes for blsp1_uart1 serial port
ARM: dts: qcom: Add initial DTS for LG Nexus 5 Phone
ARM: dts: msm8974-hammerhead: Add regulator nodes for hammerhead
ARM: dts: msm8974-hammerhead: Introduce gpio-keys nodes
ARM: dts: qcom: msm8974: Add fixed regulator node for vph-pwr-reg
ARM: dts: msm8974: Move vreg_boost node from the honami to msm8974
Bjorn Andersson (1):
ARM: dts: msm8974: honami: Add touchscreen
Breno Lima (1):
ARM: dts: imx7s-warp: Add MPL3115 sensor support
Chen-Yu Tsai (4):
ARM: dts: sun9i: a80-optimus: Add device node for AC100
ARM: dts: sun9i: cubieboard4: Add device node for AC100
ARM: dts: sun9i: Switch to the AC100 RTC clock outputs for osc32k
ARM: dts: sun9i: Add missing #interrupt-cells to R_PIO pinctrl device node
Chris Brandt (5):
ARM: dts: Add RSKRZA1 DT bindings documentation
ARM: dts: rskrza1: initial device tree
ARM: dts: r7s72100: add ethernet clock to device tree
ARM: dts: r7s72100: add ethernet to device tree
ARM: dts: rskrza1: add ethernet DT support
Chris Packham (1):
ARM: dts: armada-38x: Add NAND pinctrl information
Christoph Fritz (1):
ARM: dts: imx6sx: document SION necessity of ENET1_REF_CLK1
Cooper Jr., Franklin (1):
ARM: dts: da850: Add new ECAP and EPWM bindings
Dave Gerlach (3):
Revert "ARM: dts: am335x-boneblack: Enable 1GHz OPP for cpu"
Revert "ARM: dts: am33xx: Move to operating-points-v2 table and ti-cpufreq driver"
Revert "ARM: dts: dra7: Move to operating-points-v2 table"
Fabien Lahoudere (2):
ARM: dts: imx53: Add DMA configuration for UART
ARM: dts: imx53: Add IPU nodes for csi
Fabio Estevam (8):
ARM: dts: imx7s-warp: Add initial support
ARM: dts: imx7s: Add SDMA node
ARM: dts: imx7s: Add SAI nodes
ARM: dts: imx7s-warp: Add audio support
ARM: dts: imx7s-warp: Add Wifi support
ARM: dts: imx7s-warp: Use WDOG_B pin reset
ARM: dts: imx6ul-pico-hobbit: Use WDOG_B pin reset
ARM: dts: imx7s-warp: Let the codec control MCLK pinctrl
Florian Fainelli (3):
ARM: dts: NSP: Add Switch Register Access Block node
ARM: dts: NSP: Add BCM958625HR switch ports
Merge tag 'bcm2835-dt-next-2016-08-29' into devicetree/next
Gabriel Fernandez (9):
ARM: dts: STiH4xx: Simplify clock binding of STiH4xx platforms
ARM: dts: STiH407: Enable clock propagation for audio clocks
ARM: dts: STiH410: Enable clock propagation for audio clocks
ARM: dts: STiH418: Enable clock propagation for audio clocks
ARM: dts: STiH407: Enable synchronous clock mode for video clocks
ARM: dts: STiH410: Enable synchronous clock mode for video clocks
ARM: dts: STiH418: Enable synchronous clock mode for video clocks
ARM: dts: STi: STiH407: clock configuration to address 720p and 1080p
ARM: dts: STiH410: clock configuration to address 720p and 1080p
Geert Uytterhoeven (2):
ARM: dts: r8a7790: Remove obsolete vsp1 properties
ARM: dts: r8a7791: Remove obsolete vsp1 properties
Grygorii Strashko (2):
ARM: dts: dra7: cpsw: fix clocks tree
ARM: dts: keystone: specify usb mode explicitly
Grzegorz Jaszczyk (14):
ARM: dts: mvebu: a385-db-ap: enable USB (orion-ehci) port
ARM: dts: mvebu: a385-db-ap: add default partition description for NAND
ARM: dts: mvebu: armada-390: add missing compatibility string and bracket
ARM: dts: mvebu: armada-39x: update the SDHCI node on Armada 39x
ARM: dts: mvebu: armada-39x: enable PMU, CA9 SoC Controller and Coherency fabric
ARM: dts: mvebu: armada-39x: enable the thermal sensor in Armada-39x SoCs
ARM: dts: mvebu: armada-39x: enable watchdog for all Armada-39x SoCs
ARM: dts: mvebu: armada-39x: add missing nodes describing GPIO's
ARM: dts: mvebu: armada-39x: enable rtc for all Armada-39x SoCs
ARM: dts: mvebu: armada-395: add support for the Armada 395 SoC family
ARM: dts: mvebu: armada-398: update the dtsi about missing interfaces
ARM: dts: mvebu: armada-398-db: enable supported usb interfaces
ARM: dts: mvebu: armada-390-db: add support for the Armada 390 DB board
ARM: dts: mvebu: armada-395-gp: add support for the Armada 395 GP Board
Guenter Roeck (1):
ARM: dts: lpc4350-hitex-eval: fix binding for SE97 i2c device
H. Nikolaus Schaller (1):
ARM: dts: omap3-gta04: reduce panel backlight PWM frequency to 83Hz
Hans de Goede (19):
ARM: dts: sun6i-a31s-colorfly-e708-q1: Add full otg support
ARM: dts: sun8i: Add dts file for the Orange Pi PC Plus SBC
ARM: dts: sun8i: Add ethernet1 alias to Orange Pi 2 dts
ARM: dts: sun8i: Add dts file for the Orange Pi Lite SBC
ARM: dts: sun8i: Use sun8i-reference-design-tablet for gt90h dts
ARM: dts: sun8i: Add dt node for rtl8703as wifi chip on ga10h
ARM: dts: sun8i: reference-design-tablet: Add gsl1680 touchscreen node
ARM: dts: sun6i: colorfly-e708-q1: Remove unused mma8452_int_e708_q1 node
ARM: dts: sun6i: Add sun6i-reference-design-tablet.dtsi
ARM: dts: sun6i: Add new dts file for tablets using the inet-q972 PCB
ARM: dts: sun8i: Add dt node for esp8089 wifi chip on polaroid-mid2407
ARM: dts: sun8i: Add dt node for esp8089 wifi chip on polaroid-mid2809
ARM: dts: sun4i: Disable ohci1 on ba10-tv-box
ARM: dts: sun5i: Convert inet-98v-rev2 dts to use reference-design-tablet.dtsi
ARM: dts: sun5i: Add dts file for the Empire Electronix M712 tablet
ARM: dts: sun8i: Rename reference-design-tablet touchscreen node
ARM: dts: sun8i: Orange Pi Plus dts is for the Plus and Plus 2
ARM: dts: sun8i: Add dts file for the Orange Pi Plus2E SBC
ARM: dts: sun8i-q8-common: Add support for SDIO wifi controllers
Heiko Stuebner (2):
ARM: dts: rockchip: move rk3288 usbphy under the GRF node
Merge branch 'v4.9-shared/soc-hdr' into v4.9-armsoc/dts32
Icenowy Zheng (2):
ARM: dts: sun8i: add NAND controller node for A23/A33
ARM: dts: sun8i: Add dts file for inet-d978_rev2 tablets
J.D. Schroeder (1):
ARM: dts: dra7: Fix clock data for gmac_gmii_ref_clk_div
James Pettigrew (2):
ARM: dts: sun8i: Add dts file for the NanoPi NEO SBC
devicetree: Add vendor prefix for FriendlyARM
Jamie Lentin (5):
ARM: dts: orion5x: Add required properties for orion-wdt to DT node
dt-bindings: arm: add DT binding for Marvell Orion5x SoC family
ARM: dts: arm: orion5x: Add DT include for mv88f5181
ARM: dts: orion5x: Add description for Netgear WNR854T
ARM: dts: orion5x: Configure WNR854T ethernet PHY LEDs
Jason Cooper (1):
ARM: dts: kirkwood: Fix Openblock A6 external GPIO pins
Javier Martinez Canillas (42):
ARM: dts: omap3/am4372: add missing unit name to ocp node
ARM: dts: omap3: overo: add missing unit name for lcd35 display
ARM: dts: am335x/am437x: remove unneeded unit name for gpio-matrix-keypad
ARM: dts: am335x/am437x: remove unneeded unit name for fixed regulators
ARM: dts: da850/dm81x: remove unneeded unit name for fixed regulators
ARM: dts: omap3/dra62x: remove unneeded unit name for fixed regulators
ARM: dts: am335x/am437x: remove unneeded unit name for gpio-keys nodes
ARM: dts: omap3/4: remove unneeded unit name for gpio-keys nodes
ARM: dts: am335x/437x/57xx: remove unneeded unit name for gpio-leds nodes
ARM: dts: omap3/4/5/dra7: remove unneeded unit name for gpio-leds nodes
ARM: am335x: Add missing memory node in sl50 board
ARM: omap3: Add missing memory node in overo and torpedo boards
ARM: dts: omap2: Remove skeleton.dtsi usage
ARM: dts: omap3: Remove skeleton.dtsi usage
ARM: dts: omap4: Remove skeleton.dtsi usage
ARM: dts: omap5: Remove skeleton.dtsi usage
ARM: dts: am33xx: Remove skeleton.dtsi usage
ARM: dts: dm814x: Remove skeleton.dtsi usage
ARM: dts: dm816x: Remove skeleton.dtsi usage
ARM: dts: dra7: Remove skeleton.dtsi usage
ARM: dts: am4372: Remove skeleton.dtsi usage
ARM: dts: omap2: Add missing unit name to memory nodes
ARM: dts: omap3: Add missing unit name to memory nodes
ARM: dts: omap4: Add missing unit name to memory nodes
ARM: dts: omap5: Add missing unit name to memory nodes
ARM: dts: am335x: Add missing unit name to memory nodes
ARM: dts: am3517: Add missing unit name to memory nodes
ARM: dts: am4372: Add missing unit name to memory nodes
ARM: dts: am572x: Add missing unit name to memory nodes
ARM: dts: dm8148: Add missing unit name to memory nodes
ARM: dts: dm8168: Add missing unit name to memory nodes
ARM: dts: dra62x: Add missing unit name to memory nodes
ARM: dts: dra7: Add missing unit name to memory nodes
ARM: dts: exynos: Add missing memory node for Exynos5440 boards
ARM: dts: exynos: Remove skeleton.dtsi usage for Exynos3
ARM: dts: exynos: Remove skeleton.dtsi usage for Exynos4
ARM: dts: exynos: Remove skeleton.dtsi usage for Exynos5
ARM: dts: exynos: Add missing unit name to memory nodes in Exynos3 DTS
ARM: dts: exynos: Add missing unit name to memory nodes in Exynos4 DTS
ARM: dts: exynos: Add missing unit name to memory nodes in Exynos5 DTS
ARM: dts: s5p: Remove skeleton.dtsi inclusion for S5PV210
ARM: dts: s5p: Add missing unit name to memory nodes for S5PV210 boards
Jean-Christophe Trotin (1):
ARM: dts: STiH410: Add hva dt nodes
Jisheng Zhang (11):
arm: dts: berlin2: enable all wdt nodes unconditionally
arm: dts: berlin2q: enable all wdt nodes unconditionally
ARM: dts: berlin2q: Remove skeleton.dtsi inclusion
ARM: dts: berlin2cd: Remove skeleton.dtsi inclusion
ARM: dts: berlin2: Remove skeleton.dtsi inclusion
ARM: dts: berlin2q: Add missing unit name to /soc node
ARM: dts: berlin2cd: Add missing unit name to /soc node
ARM: dts: berlin2: Add missing unit name to /soc node
ARM: dts: berlin2q-marvell-dmp: add missing unit name to /memory node
ARM: dts: chromecast: add missing unit name to /memory node
ARM: dts: sony-nsz-gs7: add missing unit name to /memory node
Joachim Eastwood (4):
ARM: dts: lpc18xx: configure dwmac properly
ARM: dts: armv7-m: remove skeleton.dtsi include
ARM: dts: lpc18xx: remove skeleton.dtsi include and fix unit address warnings
ARM: dts: efm32: remove skeleton.dtsi include and fix unit address warnings
John Stultz (3):
device-tree: nexus7: Set phy mode to otg instead of host
device-tree: aqp8064.dtsi: Remove usb phy dr_mode = "host"
device-tree: nexus7: Add IMEM syscon and reboot reason support
Jon Hunter (1):
ARM: tegra: Correct polarity for Tegra114 PMIC interrupt
Jon Mason (14):
dt-bindings: net: bgmac: add bindings documentation for bgmac
ARM: dts: NSP: Add AMAC entries
ARM: dts: NSP: Correct RAM amount for BCM958625HR board
ARM: dts: NSP: Enable SATA on bcm958625hr
ARM: dts: NSP: Enable SATA and add i2c devices on XMC
ARM: dts: NSP: Specify RAM amount for BCM958625K board
ARM: dts: NSP: Specify RAM amount for BCM958525XMC board
ARM: dts: NSP: Add GPIO reboot method to bcm958625hr DTS file
ARM: dts: NSP: Add GPIO reboot method to bcm958625xmc DTS file
ARM: dts: NSP: Add new DT file for bcm958525er
ARM: dts: NSP: Add new DT file for bcm958522er
ARM: dts: NSP: Add new DT file for bcm988312hr
ARM: dts: NSP: Add new DT file for bcm958623hr
ARM: dts: NSP: Add new DT file for bcm958622hr
Joshua Clayton (1):
ARM: dts: imx6q-evi: Use GPIO_6 for fec irq
Jyri Sarha (3):
ARM: dts: am335x-evm: Add blue-and-red-wiring -property to lcdc node
ARM: dts: am335x-evmsk: Whitespace cleanup of lcdc related nodes
ARM: dts: am335x-evmsk: Add blue-and-red-wiring -property to lcdc node
Karl Beldan (5):
ARM: dts: da850: Add missing pin muxing for the UARTs
ARM: dts: da850: Add basic DTS for the LCDK
ARM: dts: da850,da850-evm: Add an aemif node and use it for the NAND
ARM: dts: da850-lcdk: Audio support via simple-card
ARM: dts: da850-lcdk: Add NAND to DT
Keerthy (5):
ARM: dts: AM437X-GP-EVM: AM437X-SK-EVM: Make dcdc3 dcdc5 and dcdc6 enable during suspend
ARM: dts: AM437X-GP-EVM: Remove redundant regulator compatibles
ARM: dts: AM437X-SK-EVM: Remove redundant regulator compatibles
ARM: dts: AM437X-CM-T43: Remove redundant regulator compatibles
ARM: dts: AM43X-EPOS-EVM: Remove redundant regulator compatibles
Ken Lin (1):
ARM: dts: imx6q-bx50v3: configure unused pca953x pins
Kishon Vijay Abraham I (1):
ARM: dts: DRA7: Add "linux,pci-domain" property for pci dt nodes
Krzysztof Kozlowski (18):
ARM: dts: exynos: Use stdout non-deprecated property and add serial options to Odroid XU/XU3/XU4
pinctrl: dt-bindings: samsung: Add header with values used for configuration
pinctrl: dt-bindings: samsung: Update documentation with new macros
ARM: dts: exynos: Use common macros for pinctrl configuration
ARM: dts: exynos: Use macros for pinctrl configuration on exynos3250
ARM: dts: exynos: Use macros for pinctrl configuration on exynos4210
ARM: dts: exynos: Use macros for pinctrl configuration on exynos4x12
ARM: dts: exynos: Use macros for pinctrl configuration on exynos4415
ARM: dts: exynos: Use macros for pinctrl configuration on exynos5250
ARM: dts: exynos: Use macros for pinctrl configuration on exynos5260
ARM: dts: exynos: Use macros for pinctrl configuration on exynos5410
ARM: dts: exynos: Use macros for pinctrl configuration on exynos542x/exynos5800
ARM: dts: exynos: Fix mismatched value for SD4 pull up/down configuration on exynos4210
ARM: dts: exynos: Fix mismatched values of SD drive strengh configuration on exynos4415
ARM: dts: s3c64xx: Use common macros for pinctrl configuration
ARM: dts: s5pv210: Use macros for pinctrl configuration
ARM: dts: s3c2416: Use macros for pinctrl configuration
ARM: dts: s3c64xx: Use macros for pinctrl configuration
Ladislav Michl (1):
ARM: dts: omap5-igep0050.dts: Use tabs for indentation
Lars Persson (3):
ARM: dts: artpec: use clock binding header
ARM: dts: artpec: use optimized pl310 settings
ARM: dts: artpec: set irq affinity on pmu interrupts
Lee Jones (6):
ARM: dts: STiH407: Supply PWM Capture IRQ
ARM: dts: STiH407: Declare PWM Capture data lines via Pinctrl
ARM: dts: STiH416: Supply PWM Capture IRQs
ARM: dts: STiH416: Declare PWM Capture data lines via Pinctrl
ARM: dts: STiH416: Define PWM Capture clock
ARM: dts: STiH416: Define the number of PWM Capture channels
Linus Walleij (13):
ARM: dts: MSM8064 remove flags from SPMI/MPP IRQs
ARM: dts: MSM8660 remove flags from SPMI/MPP IRQs
ARM: dts: add PM8058 LEDs to the APQ8060 Dragonboard
ARM: dts: fix RealView EB SMSC ethernet version
ARM: dts: add device tree for the RealView EB Rev D
ARM: dts: split RealView EB 11MPCore variants
ARM: dts: add RealView EB rev D A9 MPCore variant
ARM: dts: add STMPE PWM to the NHK15 device tree
dt-bindings: add vendor TPO
dt-bindings: Add TPO TPG110 binding
ARM: nomadik: select MFD_SYSCON
ARM: dts: add PMU to the NHK15 device tree
ARM: dts: add the CLCD LCD display to the NHK15
Lucile Quirion (2):
of: documentation: add bindings documentation for TS-4900
ARM: dts: TS-4900: add basic device tree
Marek Szyprowski (1):
ARM: dts: exynos: Add all required FIMC-IS clocks to exynos4x12
Marek Vasut (1):
ARM: dts: imx6sx: Add GPU bindings
Mark Rutland (1):
ARM: dts: explicitly mark skeleton.dtsi as deprecated
Masahiro Yamada (5):
ARM: dts: uniphier: remove a whitespace after tabs
ARM: dts: uniphier: match DT names to other projects and documents
ARM: dts: uniphier: switch over to PSCI
ARM: dts: uniphier: use clock/reset controllers
ARM: dts: uniphier: add specific compatible to SoC-Glue node
Maxime Ripard (2):
ARM: dt: axp209: Add AXP209 GPIO driver
ARM: sun5i: chip: Add status LED
Meng Yi (1):
ARM: dts: ls1021a: Add of_graph dt nodes to describe the panel
Michael Trimarchi (1):
ARM: dts: imx6ul-geam: Add Engicam IMX6UL GEA M6UL initial support
Milo Kim (3):
ARM: dts: exynos: Use 'hpd-gpios' instead of 'hpd-gpio'
ARM: dts: exynos: Enable HDMI for Arndale Octa board
ARM: dts: sun8i: Add PWM controller node in H3
Neil Armstrong (1):
ARM: dts: meson8b: Add Meson8b PWM Controller nodes
Nishanth Menon (4):
ARM: dts: keystone-k2g: Add Message Manager node
ARM: dts: am57xx-beagle-x15: Remove pinmux configurations for erratum i869
ARM: dts: am57xx-beagle-x15: Add support for rev B1
ARM: dts: am57xx-beagle-x15-common: Fix wrong pinctrl selection for mmc2
Olivier Schonken (1):
ARM: dts: at91: sama5d2: add ETM and ETB nodes
Olof Johansson (1):
Merge tag 'berlin-dt-for-v4.9-1' of git://git.infradead.org/users/hesselba/linux-berlin into next/dt
Patrice Chotard (17):
ARM: dts: STiH407: Move pio20 node to fix kernel warning
ARM: dts: STiH410: Add thermal node
ARM: dts: STiH407-pinctrl: Add i2c2_alt2_1 node
ARM: dts: STiH407: Move non-removable property to board file
ARM: dts: STiH407-pinctrl: Add pinctrl_rgmii1_mdio_1 node
ARM: dts: STiH407-family: Add ports-implemented property in sata nodes
ARM: dts: STi: Introduce B2260 board
ARM: dts: STiH407-pinctrl: Update gpio-cells to 2
ARM: dts: STiH418-B2199: Update gpio specifier
ARM: dts: STiH41x-b2020: Update gpio specifier
ARM: dts: STiH415-pinctrl: update gpio-cells to 2
ARM: dts: STiH416-pinctrl: update gpio-cells to 2
ARM: dts: STiHxxx-b2120: update gpio specifier
ARM: dts: STiH41x-b2000: update gpio specifier
ARM: dts: STiH416-b2020e: update gpio specifier
ARM: dts: STiH410-b2260: add USB3 node
ARM: dts: STiH410-b2260: add clk_ignore_unused in bootargs
Peter Griffin (8):
ARM: STi: DT: STiH407: Add FDMA driver dt nodes.
ARM: DT: STiH407: Add i2s_out pinctrl configuration
ARM: DT: STiH407: Add i2s_in pinctrl configuration
ARM: DT: STiH407: Add spdif_out pinctrl config
ARM: STi: DT: STiH407: Add sti-sasg-codec dt node
ARM: STi: DT: STiH407: Add uniperif player dt nodes
ARM: STi: DT: STiH407: Add uniperif reader dt nodes
ARM: DT: STi: stihxxx-b2120: Add DT nodes for STi audio card
Rafa? Mi?ecki (1):
ARM: BCM5301X: Specify PHY of USB 2.0 in DT
Rajendra Nayak (3):
arm: dts: msm8974: Add thermal zones, tsens and qfprom nodes
arm: dts: apq8064: Add thermal zones, tsens and qfprom nodes
arm: dts: apq8084: Add thermal zones, tsens and qfprom nodes
Randy Li (3):
ARM: dts: rockchip: add rk3288-firefly-reload
ARM: dts: rockchip: remove excess sd properties from firefly reload
ARM: dts: rockchip: add missing regulators for firefly reload board
Sascha Hauer (1):
ARM: i.MX6 Phytec PFLA02: Add supplies for the SoC internal regulators
Sekhar Nori (1):
ARM: dts: dra7: workaround silicon limitation i845
Sergei Shtylyov (42):
ARM: dts: r8a7792: add PFC support
ARM: dts: blanche: add SCIF0/3 pins
ARM: dts: blanche: add Ethernet pins
ARM: dts: r8a7792: add GPIO clocks
ARM: dts: r8a7792: add GPIO support
ARM: dts: r8a7792: add EtherAVB clocks
ARM: dts: r8a7792: add EtherAVB support
ARM: dts: r8a7792: add CAN clocks
ARM: dts: r8a7792: add CAN support
ARM: dts: blanche: add CAN0 support
ARM: dts: r8a7792: add SD clocks
ARM: dts: r8a7792: add SDHI support
ARM: dts: r8a7792: add I2C clocks
ARM: dts: r8a7792: add I2C support
ARM: dts: r8a7792: add VIN clocks
ARM: dts: r8a7792: add VIN support
ARM: dts: r8a7794: add audio clocks
ARM: dts: r8a7794: add MSTP5 clocks
ARM: dts: r8a7794: add MSTP10 clocks
ARM: dts: r8a7794: add Audio-DMAC support
ARM: dts: r8a7794: add sound support
ARM: dts: silk: add sound support
ARM: dts: r8a7792: fix misindented line
ARM: dts: r8a7792: add DU clocks
ARM: dts: r8a7792: add DU support
ARM: dts: r8a7794: add VSP1 support
ARM: dts: blanche: add support for general purpose switches
ARM: dts: blanche: add SDHI0 support
ARM: dts: blanche: add DU support
ARM: dts: r8a7792: add VSP1V clocks
ARM: dts: r8a7792: add VSP1V support
ARM: dts: blanche: add support for general purpose LEDs
ARM: dts: document Wheat board
ARM: dts: wheat: initial device tree
ARM: dts: wheat: add Ethernet support
ARM: dts: r8a7794: fix PWM clock parent
ARM: dts: wheat: add CAN support
ARM: dts: wheat: add SDHI0 support
ARM: dts: r8a7792: add QSPI clock
ARM: dts: r8a7792: add QSPI support
ARM: dts: wheat: add QSPI support
ARM: dts: wheat: add support for tactile switches
Simon Horman (3):
ARM: dts: r8a7794: Correct SDHI register size
ARM: dts: alt: add SDHI0 and 1 support
ARM: dts: alt: add MMCIF support
Stefan Agner (8):
ARM: dts: imx7d: move ARM platform peripherals inside soc node
ARM: dts: imx7d: fix GIC nodes interrupt and register specification
ARM: dts: imx7d: move CPU operating points to imx7d.dtsi
ARM: dts: imx7d: add clock-frequency to CPU nodes
ARM: dts: imx7-colibri: move SD-card to module level
ARM: dts: imx7-colibri: add basic supply regulators
ARM: dts: imx7-colibri: add Audio support
ARM: dts: vf610-colibri: use of_graph dt nodes to describe the panel
Stefan Mavrodiev (1):
ARM: dts: sun8i: Add dts file for Olimex A33-OLinuXino
Stefan M?ller-Klieser (1):
ARM: dts: am335x-wega: Add audio support
Stefan Roese (3):
ARM: dts: mvebu: Add SPI1 pinctrl defines for Armada XP
ARM: dts: mvebu: A37x/XP/38x/39x: Move SPI controller nodes into 'soc' node
ARM: dts: mvebu: armada-370-xp: Add MBus mappings for all SPI devices
Stefan Wahren (4):
ARM: dts: bcm283x: Add missing USB clock
ARM: dts: bcm283x: Add dtsi for USB host mode
DT: bindings: bcm: Add Raspberry Pi Zero
ARM: dts: bcm2835: Add Raspberry Pi Zero
Stephen Warren (1):
ARM: tegra: Fix Tegra114 USB compatible values
Tero Kristo (2):
ARM: dts: am437x-gp-evm: disable DDR regulator in rtc-only/poweroff mode
ARM: dts: am437x-sk-evm: disable DDR regulator in rtc-only/poweroff mode
Tim Harvey (3):
ARM: dts: imx: ventana: Add ext watchdog reset
ARM: dts: imx: add Gateworks Ventana GW553x support
ARM: dts: imx: ventana: add RS485 txen gpio support
Tony Lindgren (8):
ARM: dts: Configure panda SDIO WLAN wakeirq
ARM: dts: ARM: dts: Fix omap5 SDIO dat1 interrupt
ARM: dts: Configure omap5 OTG ID pin
ARM: dts: Add power button support for igepv5
ARM: dts: Fix LEDs for igepv5
ARM: dts: Add support for more than 2GB of memory for omap5
Merge branch 'am335x-cpufreq-regression' into omap-for-v4.9/dt-v2
ARM: dts: Fix igepv5 power button GPIO direction
Uwe Kleine-K?nig (2):
ARM: dts: imx6qdl: don't configure reserved pad settings
ARM: dts: imx35: add iim module to imx35.dtsi
Vanessa Maegima (4):
ARM: dts: imx6ul-pico-hobbit: Add Wifi support
ARM: dts: imx7s-warp: Enable I2C2 device support
ARM: dts: imx7s-warp: Add User Button support
ARM: dts: imx7s-warp: Add Bluetooth support
Vignesh R (3):
ARM: dts: dra7xx: Increase spi-max-frequency to 76.8MHz for QSPI
ARM: dts: am57xx-idk-common: Enable support for QSPI
ARM: dts: am335x-icev2: Add nodes for gpio-decoder
Vladimir Zapolskiy (1):
ARM: dts: add gpio-ranges property to iMX GPIO controllers
Xing Zheng (1):
ARM: dts: rockchip: add dts for RK3288-Fennec boards
Yakir Yang (3):
ARM: dts: rockchip: add eDP/panel display device nodes for rk3288-evb
ARM: dts: rockchip: add the panel power supply for rk3288-evb board with act8846 pmu
ARM: dts: rockchip: add the panel power supply for rk3288-evb board with rk808 pmu
Yendapally Reddy Dhananjaya Reddy (1):
ARM: dts: NSP: Add PWM Support to DT
twp at codeaurora.org (1):
ipq8064: dts: force AP148 SATA port mapping
.../devicetree/bindings/arm/bcm/brcm,bcm2835.txt | 4 +
Documentation/devicetree/bindings/arm/davinci.txt | 4 +
.../devicetree/bindings/arm/marvell/armada-39x.txt | 15 +-
.../bindings/arm/marvell/marvell,orion5x.txt | 25 +
.../devicetree/bindings/arm/omap/omap.txt | 6 +
Documentation/devicetree/bindings/arm/rockchip.txt | 8 +
Documentation/devicetree/bindings/arm/shmobile.txt | 4 +
.../devicetree/bindings/arm/technologic.txt | 6 +
.../devicetree/bindings/clock/qcom,gcc.txt | 16 +
.../bindings/display/exynos/exynos_hdmi.txt | 4 +-
.../bindings/display/panel/tpo,tpg110.txt | 47 ++
.../devicetree/bindings/gpio/mrvl-gpio.txt | 23 -
.../devicetree/bindings/net/brcm,amac.txt | 24 +
.../devicetree/bindings/net/brcm,bgmac-nsp.txt | 24 +
.../bindings/pinctrl/samsung-pinctrl.txt | 44 +-
.../devicetree/bindings/vendor-prefixes.txt | 3 +
MAINTAINERS | 2 +
arch/arm/boot/dts/Makefile | 58 +-
arch/arm/boot/dts/am335x-baltos.dtsi | 8 +-
arch/arm/boot/dts/am335x-base0033.dts | 4 +-
arch/arm/boot/dts/am335x-bone-common.dtsi | 12 +-
arch/arm/boot/dts/am335x-boneblack.dts | 11 -
arch/arm/boot/dts/am335x-chilisom.dtsi | 2 +-
arch/arm/boot/dts/am335x-cm-t335.dts | 8 +-
arch/arm/boot/dts/am335x-evm.dts | 18 +-
arch/arm/boot/dts/am335x-evmsk.dts | 70 +-
arch/arm/boot/dts/am335x-icev2.dts | 47 +-
arch/arm/boot/dts/am335x-igep0033.dtsi | 10 +-
arch/arm/boot/dts/am335x-lxm.dts | 6 +-
arch/arm/boot/dts/am335x-nano.dts | 4 +-
arch/arm/boot/dts/am335x-pepper.dts | 18 +-
arch/arm/boot/dts/am335x-phycore-som.dtsi | 6 +-
arch/arm/boot/dts/am335x-shc.dts | 16 +-
arch/arm/boot/dts/am335x-sl50.dts | 15 +-
arch/arm/boot/dts/am335x-wega.dtsi | 64 +-
arch/arm/boot/dts/am33xx.dtsi | 92 +--
arch/arm/boot/dts/am3517-craneboard.dts | 2 +-
arch/arm/boot/dts/am3517-evm.dts | 2 +-
arch/arm/boot/dts/am3517.dtsi | 2 +-
arch/arm/boot/dts/am3517_mt_ventoux.dts | 2 +-
arch/arm/boot/dts/am4372.dtsi | 10 +-
arch/arm/boot/dts/am437x-cm-t43.dts | 6 -
arch/arm/boot/dts/am437x-gp-evm.dts | 21 +-
arch/arm/boot/dts/am437x-idk-evm.dts | 2 +-
arch/arm/boot/dts/am437x-sk-evm.dts | 45 +-
arch/arm/boot/dts/am43x-epos-evm.dts | 11 +-
arch/arm/boot/dts/am572x-idk.dts | 2 +-
arch/arm/boot/dts/am57xx-beagle-x15-common.dtsi | 596 +++++++++++++++
arch/arm/boot/dts/am57xx-beagle-x15-revb1.dts | 24 +
arch/arm/boot/dts/am57xx-beagle-x15.dts | 812 +--------------------
arch/arm/boot/dts/am57xx-cl-som-am57x.dts | 4 +-
arch/arm/boot/dts/am57xx-idk-common.dtsi | 49 ++
.../dts/arm-realview-eb-11mp-bbrevd-ctrevb.dts | 32 +
arch/arm/boot/dts/arm-realview-eb-11mp-bbrevd.dts | 28 +
...mp-revb.dts => arm-realview-eb-11mp-ctrevb.dts} | 0
arch/arm/boot/dts/arm-realview-eb-11mp.dts | 2 +-
arch/arm/boot/dts/arm-realview-eb-a9mp-bbrevd.dts | 28 +
arch/arm/boot/dts/arm-realview-eb-bbrevd.dts | 29 +
arch/arm/boot/dts/arm-realview-eb-bbrevd.dtsi | 45 ++
arch/arm/boot/dts/arm-realview-eb.dtsi | 23 +-
arch/arm/boot/dts/armada-370-db.dts | 29 +-
.../dts/armada-370-seagate-personal-cloud.dtsi | 40 +-
arch/arm/boot/dts/armada-370-synology-ds213j.dts | 112 +--
arch/arm/boot/dts/armada-370-xp.dtsi | 56 +-
arch/arm/boot/dts/armada-370.dtsi | 34 +-
arch/arm/boot/dts/armada-385-db-ap.dts | 58 +-
arch/arm/boot/dts/armada-385-linksys.dtsi | 9 +-
arch/arm/boot/dts/armada-388-clearfog.dts | 48 +-
arch/arm/boot/dts/armada-388-db.dts | 25 +-
arch/arm/boot/dts/armada-388-gp.dts | 30 +-
arch/arm/boot/dts/armada-388-rd.dts | 25 +-
arch/arm/boot/dts/armada-38x.dtsi | 57 +-
arch/arm/boot/dts/armada-390-db.dts | 175 +++++
arch/arm/boot/dts/armada-390.dtsi | 3 +
arch/arm/boot/dts/armada-395-gp.dts | 163 +++++
arch/arm/boot/dts/armada-395.dtsi | 76 ++
arch/arm/boot/dts/armada-398-db.dts | 56 +-
arch/arm/boot/dts/armada-398.dtsi | 10 +-
arch/arm/boot/dts/armada-39x.dtsi | 126 +++-
arch/arm/boot/dts/armada-xp-axpwifiap.dts | 24 +-
arch/arm/boot/dts/armada-xp-db.dts | 24 +-
arch/arm/boot/dts/armada-xp-gp.dts | 24 +-
arch/arm/boot/dts/armada-xp-linksys-mamba.dts | 24 +-
arch/arm/boot/dts/armada-xp-synology-ds414.dts | 112 +--
arch/arm/boot/dts/armada-xp.dtsi | 31 +-
arch/arm/boot/dts/armv7-m.dtsi | 2 -
arch/arm/boot/dts/artpec6.dtsi | 31 +-
arch/arm/boot/dts/axp209.dtsi | 6 +
arch/arm/boot/dts/bcm-nsp.dtsi | 37 +
arch/arm/boot/dts/bcm2835-rpi-a-plus.dts | 1 +
arch/arm/boot/dts/bcm2835-rpi-a.dts | 1 +
arch/arm/boot/dts/bcm2835-rpi-b-plus.dts | 1 +
arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts | 1 +
arch/arm/boot/dts/bcm2835-rpi-b.dts | 1 +
arch/arm/boot/dts/bcm2835-rpi-zero.dts | 40 +
arch/arm/boot/dts/bcm2836-rpi-2-b.dts | 1 +
arch/arm/boot/dts/bcm283x-rpi-usb-host.dtsi | 3 +
arch/arm/boot/dts/bcm283x.dtsi | 9 +
arch/arm/boot/dts/bcm5301x.dtsi | 11 +
arch/arm/boot/dts/bcm958522er.dts | 130 ++++
arch/arm/boot/dts/bcm958525er.dts | 142 ++++
arch/arm/boot/dts/bcm958525xmc.dts | 44 +-
arch/arm/boot/dts/bcm958622hr.dts | 170 +++++
arch/arm/boot/dts/bcm958623hr.dts | 178 +++++
arch/arm/boot/dts/bcm958625hr.dts | 71 +-
arch/arm/boot/dts/bcm958625k.dts | 13 +
arch/arm/boot/dts/bcm988312hr.dts | 182 +++++
arch/arm/boot/dts/berlin2-sony-nsz-gs7.dts | 2 +-
arch/arm/boot/dts/berlin2.dtsi | 7 +-
arch/arm/boot/dts/berlin2cd-google-chromecast.dts | 2 +-
arch/arm/boot/dts/berlin2cd.dtsi | 5 +-
arch/arm/boot/dts/berlin2q-marvell-dmp.dts | 2 +-
arch/arm/boot/dts/berlin2q.dtsi | 8 +-
arch/arm/boot/dts/da850-evm.dts | 51 +-
arch/arm/boot/dts/da850-lcdk.dts | 221 ++++++
arch/arm/boot/dts/da850.dtsi | 80 +-
arch/arm/boot/dts/dm8148-evm.dts | 4 +-
arch/arm/boot/dts/dm8148-t410.dts | 4 +-
arch/arm/boot/dts/dm814x.dtsi | 4 +-
arch/arm/boot/dts/dm8168-evm.dts | 4 +-
arch/arm/boot/dts/dm816x.dtsi | 4 +-
arch/arm/boot/dts/dra62x-j5eco-evm.dts | 4 +-
arch/arm/boot/dts/dra7-evm.dts | 14 +-
arch/arm/boot/dts/dra7.dtsi | 36 +-
arch/arm/boot/dts/dra72-evm-common.dtsi | 4 +-
arch/arm/boot/dts/dra72-evm-revc.dts | 2 +-
arch/arm/boot/dts/dra72-evm.dts | 2 +-
arch/arm/boot/dts/dra74x.dtsi | 1 -
arch/arm/boot/dts/dra7xx-clocks.dtsi | 15 +-
arch/arm/boot/dts/efm32gg-dk3750.dts | 5 +-
arch/arm/boot/dts/efm32gg.dtsi | 4 +
arch/arm/boot/dts/exynos3250-artik5.dtsi | 3 +-
arch/arm/boot/dts/exynos3250-monk.dts | 3 +-
arch/arm/boot/dts/exynos3250-pinctrl.dtsi | 346 +++++----
arch/arm/boot/dts/exynos3250-rinato.dts | 3 +-
arch/arm/boot/dts/exynos3250.dtsi | 3 +-
arch/arm/boot/dts/exynos4.dtsi | 3 +-
arch/arm/boot/dts/exynos4210-origen.dts | 3 +-
arch/arm/boot/dts/exynos4210-pinctrl.dtsi | 458 ++++++------
arch/arm/boot/dts/exynos4210-smdkv310.dts | 15 +-
arch/arm/boot/dts/exynos4210-trats.dts | 3 +-
arch/arm/boot/dts/exynos4210-universal_c210.dts | 13 +-
arch/arm/boot/dts/exynos4412-odroid-common.dtsi | 16 +-
arch/arm/boot/dts/exynos4412-odroidu3.dts | 3 +-
arch/arm/boot/dts/exynos4412-odroidx.dts | 5 +-
arch/arm/boot/dts/exynos4412-odroidx2.dts | 3 +-
arch/arm/boot/dts/exynos4412-origen.dts | 15 +-
arch/arm/boot/dts/exynos4412-smdk4412.dts | 15 +-
arch/arm/boot/dts/exynos4412-tiny4412.dts | 3 +-
arch/arm/boot/dts/exynos4412-trats2.dts | 3 +-
arch/arm/boot/dts/exynos4415-pinctrl.dtsi | 296 ++++----
arch/arm/boot/dts/exynos4415.dtsi | 3 +-
arch/arm/boot/dts/exynos4x12-pinctrl.dtsi | 525 +++++++------
arch/arm/boot/dts/exynos4x12.dtsi | 5 +-
arch/arm/boot/dts/exynos5.dtsi | 3 +-
arch/arm/boot/dts/exynos5250-arndale.dts | 5 +-
arch/arm/boot/dts/exynos5250-pinctrl.dtsi | 404 +++++-----
arch/arm/boot/dts/exynos5250-smdk5250.dts | 11 +-
arch/arm/boot/dts/exynos5250-snow-common.dtsi | 81 +-
arch/arm/boot/dts/exynos5250-snow-rev5.dts | 6 +-
arch/arm/boot/dts/exynos5250-snow.dts | 6 +-
arch/arm/boot/dts/exynos5250-spring.dts | 77 +-
arch/arm/boot/dts/exynos5260-pinctrl.dtsi | 280 ++++---
arch/arm/boot/dts/exynos5260-xyref5260.dts | 9 +-
arch/arm/boot/dts/exynos5260.dtsi | 4 +-
arch/arm/boot/dts/exynos5410-odroidxu.dts | 35 +-
arch/arm/boot/dts/exynos5410-pinctrl.dtsi | 182 ++---
arch/arm/boot/dts/exynos5410-smdk5410.dts | 13 +-
arch/arm/boot/dts/exynos5420-arndale-octa.dts | 22 +-
arch/arm/boot/dts/exynos5420-peach-pit.dts | 131 ++--
arch/arm/boot/dts/exynos5420-pinctrl.dtsi | 356 ++++-----
arch/arm/boot/dts/exynos5420-smdk5420.dts | 23 +-
arch/arm/boot/dts/exynos5422-odroidxu3-common.dtsi | 25 +-
arch/arm/boot/dts/exynos5440-sd5v1.dts | 6 +
arch/arm/boot/dts/exynos5440-ssdk5440.dts | 6 +
arch/arm/boot/dts/exynos5440.dtsi | 3 +-
arch/arm/boot/dts/exynos54xx.dtsi | 1 -
arch/arm/boot/dts/exynos5800-peach-pi.dts | 131 ++--
arch/arm/boot/dts/imx35.dtsi | 7 +
arch/arm/boot/dts/imx50.dtsi | 10 +
arch/arm/boot/dts/imx53-usbarmory.dts | 224 ++++++
arch/arm/boot/dts/imx53.dtsi | 18 +
arch/arm/boot/dts/imx6dl-gw553x.dts | 55 ++
arch/arm/boot/dts/imx6dl-riotboard.dts | 22 +-
arch/arm/boot/dts/imx6dl-ts4900.dts | 49 ++
arch/arm/boot/dts/imx6dl.dtsi | 53 ++
arch/arm/boot/dts/imx6q-arm2.dts | 24 +-
arch/arm/boot/dts/imx6q-b450v3.dts | 16 +
arch/arm/boot/dts/imx6q-b650v3.dts | 9 +
arch/arm/boot/dts/imx6q-ba16.dtsi | 24 +-
arch/arm/boot/dts/imx6q-bx50v3.dtsi | 70 ++
arch/arm/boot/dts/imx6q-cm-fx6.dts | 24 +-
arch/arm/boot/dts/imx6q-dmo-edmqmx6.dts | 24 +-
arch/arm/boot/dts/imx6q-evi.dts | 28 +-
arch/arm/boot/dts/imx6q-gw5400-a.dts | 24 +-
arch/arm/boot/dts/imx6q-gw553x.dts | 55 ++
arch/arm/boot/dts/imx6q-marsboard.dts | 24 +-
arch/arm/boot/dts/imx6q-novena.dts | 12 +-
arch/arm/boot/dts/imx6q-sbc6x.dts | 24 +-
arch/arm/boot/dts/imx6q-tbs2910.dts | 24 +-
arch/arm/boot/dts/imx6q-ts4900.dts | 53 ++
arch/arm/boot/dts/imx6q.dtsi | 37 +
arch/arm/boot/dts/imx6qdl-apalis.dtsi | 24 +-
arch/arm/boot/dts/imx6qdl-dfi-fs700-m60.dtsi | 24 +-
arch/arm/boot/dts/imx6qdl-gw51xx.dtsi | 36 +-
arch/arm/boot/dts/imx6qdl-gw52xx.dtsi | 39 +-
arch/arm/boot/dts/imx6qdl-gw53xx.dtsi | 39 +-
arch/arm/boot/dts/imx6qdl-gw54xx.dtsi | 44 +-
arch/arm/boot/dts/imx6qdl-gw551x.dtsi | 12 +
arch/arm/boot/dts/imx6qdl-gw552x.dtsi | 12 +
arch/arm/boot/dts/imx6qdl-gw553x.dtsi | 433 +++++++++++
arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 24 +-
arch/arm/boot/dts/imx6qdl-nit6xlite.dtsi | 12 +-
arch/arm/boot/dts/imx6qdl-nitrogen6_max.dtsi | 24 +-
arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi | 24 +-
arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi | 36 +-
arch/arm/boot/dts/imx6qdl-rex.dtsi | 24 +-
arch/arm/boot/dts/imx6qdl-sabreauto.dtsi | 24 +-
arch/arm/boot/dts/imx6qdl-sabrelite.dtsi | 24 +-
arch/arm/boot/dts/imx6qdl-sabresd.dtsi | 24 +-
arch/arm/boot/dts/imx6qdl-ts4900.dtsi | 481 ++++++++++++
arch/arm/boot/dts/imx6qdl-udoo.dtsi | 24 +-
arch/arm/boot/dts/imx6qdl-wandboard.dtsi | 24 +-
arch/arm/boot/dts/imx6sl.dtsi | 47 ++
arch/arm/boot/dts/imx6sx-pinfunc.h | 14 +
arch/arm/boot/dts/imx6sx.dtsi | 22 +
arch/arm/boot/dts/imx6ul-geam-kit.dts | 101 +++
arch/arm/boot/dts/imx6ul-geam.dtsi | 361 +++++++++
arch/arm/boot/dts/imx6ul-pico-hobbit.dts | 33 +
arch/arm/boot/dts/imx6ul.dtsi | 9 +-
arch/arm/boot/dts/imx7-colibri-eval-v3.dtsi | 4 -
arch/arm/boot/dts/imx7-colibri.dtsi | 61 +-
arch/arm/boot/dts/imx7d.dtsi | 42 +-
arch/arm/boot/dts/imx7s-warp.dts | 446 +++++++++++
arch/arm/boot/dts/imx7s.dtsi | 371 ++++++----
arch/arm/boot/dts/keystone-k2e-evm.dts | 12 +-
arch/arm/boot/dts/keystone-k2e.dtsi | 4 +-
arch/arm/boot/dts/keystone-k2g.dtsi | 32 +
arch/arm/boot/dts/keystone-k2hk-evm.dts | 6 +-
arch/arm/boot/dts/keystone-k2l-evm.dts | 6 +-
arch/arm/boot/dts/keystone.dtsi | 4 +-
arch/arm/boot/dts/kirkwood-openblocks_a6.dts | 9 +-
arch/arm/boot/dts/logicpd-som-lv.dtsi | 11 +-
arch/arm/boot/dts/logicpd-torpedo-som.dtsi | 6 +
arch/arm/boot/dts/lpc18xx.dtsi | 7 +
arch/arm/boot/dts/lpc4337-ciaa.dts | 2 +-
arch/arm/boot/dts/lpc4350-hitex-eval.dts | 4 +-
arch/arm/boot/dts/lpc4357-ea4357-devkit.dts | 2 +-
arch/arm/boot/dts/ls1021a-twr.dts | 13 +-
arch/arm/boot/dts/meson8b.dtsi | 21 +
arch/arm/boot/dts/mps2.dtsi | 1 +
arch/arm/boot/dts/omap2.dtsi | 4 +-
arch/arm/boot/dts/omap2420-h4.dts | 2 +-
arch/arm/boot/dts/omap2420-n8x0-common.dtsi | 2 +-
arch/arm/boot/dts/omap2430-sdp.dts | 2 +-
arch/arm/boot/dts/omap3-beagle-xm.dts | 2 +-
arch/arm/boot/dts/omap3-beagle.dts | 2 +-
arch/arm/boot/dts/omap3-cm-t3x.dtsi | 2 +-
arch/arm/boot/dts/omap3-devkit8000-common.dtsi | 2 +-
arch/arm/boot/dts/omap3-evm-37xx.dts | 2 +-
arch/arm/boot/dts/omap3-evm.dts | 2 +-
arch/arm/boot/dts/omap3-gta04.dtsi | 4 +-
arch/arm/boot/dts/omap3-igep.dtsi | 2 +-
arch/arm/boot/dts/omap3-ldp.dts | 2 +-
arch/arm/boot/dts/omap3-lilly-a83x.dtsi | 2 +-
arch/arm/boot/dts/omap3-n900.dts | 2 +-
arch/arm/boot/dts/omap3-n950-n9.dtsi | 6 +-
arch/arm/boot/dts/omap3-overo-alto35-common.dtsi | 2 +-
arch/arm/boot/dts/omap3-overo-base.dtsi | 10 +-
.../boot/dts/omap3-overo-chestnut43-common.dtsi | 6 +-
arch/arm/boot/dts/omap3-overo-common-lcd35.dtsi | 2 +-
arch/arm/boot/dts/omap3-overo-gallop43-common.dtsi | 4 +-
arch/arm/boot/dts/omap3-overo-palo35-common.dtsi | 4 +-
arch/arm/boot/dts/omap3-overo-palo43-common.dtsi | 4 +-
arch/arm/boot/dts/omap3-overo-tobi-common.dtsi | 2 -
arch/arm/boot/dts/omap3-overo-tobiduo-common.dtsi | 3 -
arch/arm/boot/dts/omap3-pandora-common.dtsi | 10 +-
arch/arm/boot/dts/omap3-sniper.dts | 2 +-
arch/arm/boot/dts/omap3-tao3530.dtsi | 2 +-
arch/arm/boot/dts/omap3-zoom3.dts | 2 +-
arch/arm/boot/dts/omap3.dtsi | 6 +-
arch/arm/boot/dts/omap3430-sdp.dts | 2 +-
arch/arm/boot/dts/omap34xx.dtsi | 2 +-
arch/arm/boot/dts/omap36xx.dtsi | 2 +-
arch/arm/boot/dts/omap4-duovero-parlor.dts | 2 +-
arch/arm/boot/dts/omap4-duovero.dtsi | 2 +-
arch/arm/boot/dts/omap4-kc1.dts | 2 +-
arch/arm/boot/dts/omap4-panda-common.dtsi | 4 +-
arch/arm/boot/dts/omap4-sdp.dts | 2 +-
arch/arm/boot/dts/omap4-var-som-om44.dtsi | 2 +-
arch/arm/boot/dts/omap4.dtsi | 4 +-
arch/arm/boot/dts/omap5-board-common.dtsi | 29 +-
arch/arm/boot/dts/omap5-cm-t54.dts | 6 +-
arch/arm/boot/dts/omap5-igep0050.dts | 42 +-
arch/arm/boot/dts/omap5-uevm.dts | 18 +-
arch/arm/boot/dts/omap5.dtsi | 26 +-
arch/arm/boot/dts/orion5x-mv88f5181.dtsi | 49 ++
arch/arm/boot/dts/orion5x-netgear-wnr854t.dts | 251 +++++++
arch/arm/boot/dts/orion5x.dtsi | 3 +-
arch/arm/boot/dts/qcom-apq8060-dragonboard.dts | 39 +
arch/arm/boot/dts/qcom-apq8064-asus-nexus7-flo.dts | 15 +
arch/arm/boot/dts/qcom-apq8064.dtsi | 180 ++++-
arch/arm/boot/dts/qcom-apq8084.dtsi | 103 +++
arch/arm/boot/dts/qcom-ipq8064-ap148.dts | 1 +
arch/arm/boot/dts/qcom-msm8660.dtsi | 75 +-
.../dts/qcom-msm8974-lge-nexus5-hammerhead.dts | 262 +++++++
.../boot/dts/qcom-msm8974-sony-xperia-honami.dts | 81 +-
arch/arm/boot/dts/qcom-msm8974.dtsi | 139 ++++
arch/arm/boot/dts/qcom-pm8941.dtsi | 5 +
arch/arm/boot/dts/r7s72100-rskrza1.dts | 61 ++
arch/arm/boot/dts/r7s72100.dtsi | 22 +
arch/arm/boot/dts/r8a7790.dtsi | 23 -
arch/arm/boot/dts/r8a7791.dtsi | 18 -
arch/arm/boot/dts/r8a7792-blanche.dts | 264 +++++++
arch/arm/boot/dts/r8a7792-wheat.dts | 199 +++++
arch/arm/boot/dts/r8a7792.dtsi | 554 +++++++++++++-
arch/arm/boot/dts/r8a7794-alt.dts | 106 +++
arch/arm/boot/dts/r8a7794-silk.dts | 70 ++
arch/arm/boot/dts/r8a7794.dtsi | 309 +++++++-
arch/arm/boot/dts/rk3036.dtsi | 12 +-
arch/arm/boot/dts/rk3288-evb-act8846.dts | 4 +
arch/arm/boot/dts/rk3288-evb-rk808.dts | 4 +
arch/arm/boot/dts/rk3288-evb.dtsi | 45 +-
arch/arm/boot/dts/rk3288-fennec.dts | 382 ++++++++++
arch/arm/boot/dts/rk3288-firefly-reload-core.dtsi | 310 ++++++++
arch/arm/boot/dts/rk3288-firefly-reload.dts | 403 ++++++++++
arch/arm/boot/dts/rk3288-popmetal.dts | 12 +-
arch/arm/boot/dts/rk3288.dtsi | 73 +-
arch/arm/boot/dts/rk3xxx.dtsi | 12 +-
arch/arm/boot/dts/s3c2416-pinctrl.dtsi | 38 +-
arch/arm/boot/dts/s3c6410-mini6410.dts | 4 +-
arch/arm/boot/dts/s3c64xx-pinctrl.dtsi | 356 +++++----
arch/arm/boot/dts/s5pv210-aquila.dts | 6 +-
arch/arm/boot/dts/s5pv210-goni.dts | 2 +-
arch/arm/boot/dts/s5pv210-pinctrl.dtsi | 476 ++++++------
arch/arm/boot/dts/s5pv210-smdkc110.dts | 2 +-
arch/arm/boot/dts/s5pv210-smdkv210.dts | 2 +-
arch/arm/boot/dts/s5pv210-torbreck.dts | 2 +-
arch/arm/boot/dts/s5pv210.dtsi | 4 +-
arch/arm/boot/dts/sama5d2.dtsi | 29 +
arch/arm/boot/dts/skeleton.dtsi | 4 +
arch/arm/boot/dts/ste-nomadik-nhk15.dts | 68 ++
arch/arm/boot/dts/ste-nomadik-stn8815.dtsi | 28 +
arch/arm/boot/dts/stih407-clock.dtsi | 22 +-
arch/arm/boot/dts/stih407-family.dtsi | 173 ++++-
arch/arm/boot/dts/stih407-pinctrl.dtsi | 140 +++-
arch/arm/boot/dts/stih407.dtsi | 16 +-
arch/arm/boot/dts/stih410-b2260.dts | 194 +++++
arch/arm/boot/dts/stih410-clock.dtsi | 20 +-
arch/arm/boot/dts/stih410.dtsi | 34 +-
arch/arm/boot/dts/stih415-pinctrl.dtsi | 54 +-
arch/arm/boot/dts/stih416-b2020e.dts | 6 +-
arch/arm/boot/dts/stih416-pinctrl.dtsi | 65 +-
arch/arm/boot/dts/stih416.dtsi | 8 +-
arch/arm/boot/dts/stih418-b2199.dts | 8 +-
arch/arm/boot/dts/stih418-clock.dtsi | 20 +-
arch/arm/boot/dts/stih41x-b2000.dtsi | 5 +-
arch/arm/boot/dts/stih41x-b2020.dtsi | 6 +-
arch/arm/boot/dts/stihxxx-b2120.dtsi | 52 +-
arch/arm/boot/dts/stm32f429.dtsi | 1 +
arch/arm/boot/dts/sun4i-a10-ba10-tvbox.dts | 4 -
.../boot/dts/sun5i-a13-empire-electronix-m712.dts | 51 ++
arch/arm/boot/dts/sun5i-a13-inet-98v-rev2.dts | 164 +----
arch/arm/boot/dts/sun5i-r8-chip.dts | 10 +
arch/arm/boot/dts/sun6i-a31s-colorfly-e708-q1.dts | 138 +---
arch/arm/boot/dts/sun6i-a31s-inet-q972.dts | 100 +++
.../boot/dts/sun6i-reference-design-tablet.dtsi | 193 +++++
arch/arm/boot/dts/sun8i-a23-a33.dtsi | 21 +
arch/arm/boot/dts/sun8i-a23-gt90h-v4.dts | 192 +----
.../boot/dts/sun8i-a23-polaroid-mid2407pxe03.dts | 42 ++
.../boot/dts/sun8i-a23-polaroid-mid2809pxe04.dts | 42 ++
arch/arm/boot/dts/sun8i-a33-ga10h-v1.1.dts | 18 +
arch/arm/boot/dts/sun8i-a33-inet-d978-rev2.dts | 88 +++
arch/arm/boot/dts/sun8i-a33-olinuxino.dts | 226 ++++++
arch/arm/boot/dts/sun8i-h3-nanopi-neo.dts | 125 ++++
arch/arm/boot/dts/sun8i-h3-orangepi-2.dts | 10 +
arch/arm/boot/dts/sun8i-h3-orangepi-lite.dts | 178 +++++
arch/arm/boot/dts/sun8i-h3-orangepi-pc-plus.dts | 88 +++
arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts | 2 +-
arch/arm/boot/dts/sun8i-h3-orangepi-plus2e.dts | 53 ++
arch/arm/boot/dts/sun8i-h3.dtsi | 8 +
arch/arm/boot/dts/sun8i-q8-common.dtsi | 49 ++
.../boot/dts/sun8i-reference-design-tablet.dtsi | 26 +
arch/arm/boot/dts/sun9i-a80-cubieboard4.dts | 29 +
arch/arm/boot/dts/sun9i-a80-optimus.dts | 29 +
arch/arm/boot/dts/sun9i-a80.dtsi | 14 +-
arch/arm/boot/dts/tegra114-dalmore.dts | 2 +-
arch/arm/boot/dts/tegra114-roth.dts | 2 +-
arch/arm/boot/dts/tegra114-tn7.dts | 2 +-
arch/arm/boot/dts/tegra114.dtsi | 8 +-
arch/arm/boot/dts/uniphier-common32.dtsi | 63 +-
...iphier-ph1-ld4-ref.dts => uniphier-ld4-ref.dts} | 11 +-
.../{uniphier-ph1-ld4.dtsi => uniphier-ld4.dtsi} | 59 +-
...hier-ph1-ld6b-ref.dts => uniphier-ld6b-ref.dts} | 11 +-
.../{uniphier-ph1-ld6b.dtsi => uniphier-ld6b.dtsi} | 17 +-
...hier-ph1-pro4-ace.dts => uniphier-pro4-ace.dts} | 11 +-
...hier-ph1-pro4-ref.dts => uniphier-pro4-ref.dts} | 11 +-
...-ph1-pro4-sanji.dts => uniphier-pro4-sanji.dts} | 11 +-
.../{uniphier-ph1-pro4.dtsi => uniphier-pro4.dtsi} | 63 +-
.../{uniphier-ph1-pro5.dtsi => uniphier-pro5.dtsi} | 58 +-
...stream2-gentil.dts => uniphier-pxs2-gentil.dts} | 12 +-
...oxstream2-vodka.dts => uniphier-pxs2-vodka.dts} | 11 +-
...niphier-proxstream2.dtsi => uniphier-pxs2.dtsi} | 62 +-
...hier-ph1-sld3-ref.dts => uniphier-sld3-ref.dts} | 11 +-
.../{uniphier-ph1-sld3.dtsi => uniphier-sld3.dtsi} | 75 +-
...hier-ph1-sld8-ref.dts => uniphier-sld8-ref.dts} | 11 +-
.../{uniphier-ph1-sld8.dtsi => uniphier-sld8.dtsi} | 59 +-
arch/arm/boot/dts/vf-colibri-eval-v3.dtsi | 13 +-
arch/arm/boot/dts/vf610m4.dtsi | 1 +
arch/arm/mach-davinci/da8xx-dt.c | 1 +
arch/arm/mach-nomadik/Kconfig | 1 +
include/dt-bindings/clock/r7s72100-clock.h | 3 +
include/dt-bindings/clock/r8a7794-clock.h | 25 +
include/dt-bindings/pinctrl/samsung.h | 57 ++
include/dt-bindings/soc/rockchip,boot-mode.h | 15 +
415 files changed, 16267 insertions(+), 5464 deletions(-)
create mode 100644 Documentation/devicetree/bindings/arm/marvell/marvell,orion5x.txt
create mode 100644 Documentation/devicetree/bindings/display/panel/tpo,tpg110.txt
create mode 100644 Documentation/devicetree/bindings/net/brcm,amac.txt
create mode 100644 Documentation/devicetree/bindings/net/brcm,bgmac-nsp.txt
create mode 100644 arch/arm/boot/dts/am57xx-beagle-x15-common.dtsi
create mode 100644 arch/arm/boot/dts/am57xx-beagle-x15-revb1.dts
create mode 100644 arch/arm/boot/dts/arm-realview-eb-11mp-bbrevd-ctrevb.dts
create mode 100644 arch/arm/boot/dts/arm-realview-eb-11mp-bbrevd.dts
rename arch/arm/boot/dts/{arm-realview-eb-11mp-revb.dts => arm-realview-eb-11mp-ctrevb.dts} (100%)
create mode 100644 arch/arm/boot/dts/arm-realview-eb-a9mp-bbrevd.dts
create mode 100644 arch/arm/boot/dts/arm-realview-eb-bbrevd.dts
create mode 100644 arch/arm/boot/dts/arm-realview-eb-bbrevd.dtsi
create mode 100644 arch/arm/boot/dts/armada-390-db.dts
create mode 100644 arch/arm/boot/dts/armada-395-gp.dts
create mode 100644 arch/arm/boot/dts/armada-395.dtsi
create mode 100644 arch/arm/boot/dts/bcm2835-rpi-zero.dts
create mode 100644 arch/arm/boot/dts/bcm283x-rpi-usb-host.dtsi
create mode 100644 arch/arm/boot/dts/bcm958522er.dts
create mode 100644 arch/arm/boot/dts/bcm958525er.dts
create mode 100644 arch/arm/boot/dts/bcm958622hr.dts
create mode 100644 arch/arm/boot/dts/bcm958623hr.dts
create mode 100644 arch/arm/boot/dts/bcm988312hr.dts
create mode 100644 arch/arm/boot/dts/da850-lcdk.dts
create mode 100644 arch/arm/boot/dts/imx53-usbarmory.dts
create mode 100644 arch/arm/boot/dts/imx6dl-gw553x.dts
create mode 100644 arch/arm/boot/dts/imx6dl-ts4900.dts
create mode 100644 arch/arm/boot/dts/imx6q-gw553x.dts
create mode 100644 arch/arm/boot/dts/imx6q-ts4900.dts
create mode 100644 arch/arm/boot/dts/imx6qdl-gw553x.dtsi
create mode 100644 arch/arm/boot/dts/imx6qdl-ts4900.dtsi
create mode 100644 arch/arm/boot/dts/imx6ul-geam-kit.dts
create mode 100644 arch/arm/boot/dts/imx6ul-geam.dtsi
create mode 100644 arch/arm/boot/dts/imx7s-warp.dts
create mode 100644 arch/arm/boot/dts/orion5x-mv88f5181.dtsi
create mode 100644 arch/arm/boot/dts/orion5x-netgear-wnr854t.dts
create mode 100644 arch/arm/boot/dts/qcom-msm8974-lge-nexus5-hammerhead.dts
create mode 100644 arch/arm/boot/dts/r7s72100-rskrza1.dts
create mode 100644 arch/arm/boot/dts/r8a7792-wheat.dts
create mode 100644 arch/arm/boot/dts/rk3288-fennec.dts
create mode 100644 arch/arm/boot/dts/rk3288-firefly-reload-core.dtsi
create mode 100644 arch/arm/boot/dts/rk3288-firefly-reload.dts
create mode 100644 arch/arm/boot/dts/stih410-b2260.dts
create mode 100644 arch/arm/boot/dts/sun5i-a13-empire-electronix-m712.dts
create mode 100644 arch/arm/boot/dts/sun6i-a31s-inet-q972.dts
create mode 100644 arch/arm/boot/dts/sun6i-reference-design-tablet.dtsi
create mode 100644 arch/arm/boot/dts/sun8i-a33-inet-d978-rev2.dts
create mode 100644 arch/arm/boot/dts/sun8i-a33-olinuxino.dts
create mode 100644 arch/arm/boot/dts/sun8i-h3-nanopi-neo.dts
create mode 100644 arch/arm/boot/dts/sun8i-h3-orangepi-lite.dts
create mode 100644 arch/arm/boot/dts/sun8i-h3-orangepi-pc-plus.dts
create mode 100644 arch/arm/boot/dts/sun8i-h3-orangepi-plus2e.dts
rename arch/arm/boot/dts/{uniphier-ph1-ld4-ref.dts => uniphier-ld4-ref.dts} (89%)
rename arch/arm/boot/dts/{uniphier-ph1-ld4.dtsi => uniphier-ld4.dtsi} (80%)
rename arch/arm/boot/dts/{uniphier-ph1-ld6b-ref.dts => uniphier-ld6b-ref.dts} (89%)
rename arch/arm/boot/dts/{uniphier-ph1-ld6b.dtsi => uniphier-ld6b.dtsi} (82%)
rename arch/arm/boot/dts/{uniphier-ph1-pro4-ace.dts => uniphier-pro4-ace.dts} (90%)
rename arch/arm/boot/dts/{uniphier-ph1-pro4-ref.dts => uniphier-pro4-ref.dts} (89%)
rename arch/arm/boot/dts/{uniphier-ph1-pro4-sanji.dts => uniphier-pro4-sanji.dts} (89%)
rename arch/arm/boot/dts/{uniphier-ph1-pro4.dtsi => uniphier-pro4.dtsi} (82%)
rename arch/arm/boot/dts/{uniphier-ph1-pro5.dtsi => uniphier-pro5.dtsi} (85%)
rename arch/arm/boot/dts/{uniphier-proxstream2-gentil.dts => uniphier-pxs2-gentil.dts} (88%)
rename arch/arm/boot/dts/{uniphier-proxstream2-vodka.dts => uniphier-pxs2-vodka.dts} (88%)
rename arch/arm/boot/dts/{uniphier-proxstream2.dtsi => uniphier-pxs2.dtsi} (84%)
rename arch/arm/boot/dts/{uniphier-ph1-sld3-ref.dts => uniphier-sld3-ref.dts} (89%)
rename arch/arm/boot/dts/{uniphier-ph1-sld3.dtsi => uniphier-sld3.dtsi} (83%)
rename arch/arm/boot/dts/{uniphier-ph1-sld8-ref.dts => uniphier-sld8-ref.dts} (89%)
rename arch/arm/boot/dts/{uniphier-ph1-sld8.dtsi => uniphier-sld8.dtsi} (80%)
create mode 100644 include/dt-bindings/pinctrl/samsung.h
create mode 100644 include/dt-bindings/soc/rockchip,boot-mode.h
^ permalink raw reply
* [GIT PULL 5/8] ARM: SoC driver updates for v4.9
From: Arnd Bergmann @ 2016-10-08 0:32 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <3637015.LRn5VyhPVM@wuerfel>
The following changes since commit 3eab887a55424fc2c27553b7bfe32330df83f7b8:
Linux 4.8-rc4 (2016-08-28 15:04:33 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git tags/armsoc-drivers
for you to fetch changes up to d6db68b2deaa0158d25b236edffcf6dd2117208f:
bus: qcom-ebi2: depend on HAS_IOMEM (2016-10-02 22:23:57 -0700)
----------------------------------------------------------------
ARM: SoC driver updates for v4.9
Driver updates for ARM SoCs, including a couple of newly added drivers:
- The Qualcomm external bus interface 2 (EBI2), used in some of their
mobile phone chips for connecting flash memory, LCD displays or
other peripherals
- Secure monitor firmware for Amlogic SoCs, and an NVMEM driver for the
EFUSE based on that firmware interface.
- Perf support for the AppliedMicro X-Gene performance monitor unit
- Reset driver for STMicroelectronics STM32
- Reset driver for SocioNext UniPhier SoCs
Aside from these, there are minor updates to SoC-specific bus,
clocksource, firmware, pinctrl, reset, rtc and pmic drivers.
----------------------------------------------------------------
Arnd Bergmann (14):
Merge tag 'gpmc-omap-for-v4.9' of https://github.com/rogerq/linux into next/drivers
Merge tag 'reset-for-4.9' of git://git.pengutronix.de/git/pza/linux into next/drivers
Merge commit 'http://github.com/rogerq/linux gpmc-omap-v4.8-rc1' into next/drivers
Merge tag 'amlogic-drivers' of git://git.kernel.org/.../khilman/linux-amlogic into next/drivers
Merge tag 'v4.9-rockchip-drivers1' of git://git.kernel.org/.../mmind/linux-rockchip into next/drivers
Merge tag 'at91-ab-4.9-drivers' of git://git.kernel.org/.../abelloni/linux into next/drivers
Merge tag 'qcom-drivers-for-4.9' of git://git.kernel.org/.../agross/linux into next/drivers
Merge tag 'tegra-for-4.9-bus' of git://git.kernel.org/.../tegra/linux into next/drivers
Merge tag 'tegra-for-4.9-soc' of git://git.kernel.org/.../tegra/linux into next/drivers
Merge tag 'v4.8-next-soc' of https://github.com/mbgg/linux-mediatek into next/drivers
Merge tag 'samsung-drivers-4.9-2' of git://git.kernel.org/.../krzk/linux into next/drivers
Merge tag 'xgene-drivers-for-4.9' of https://github.com/AppliedMicro/xgene-next into next/drivers
Merge tag 'mvebu-drivers-4.9-1' of git://git.infradead.org/linux-mvebu into next/drivers
Merge tag 'qcom-ebi2-arm-soc' of git://git.kernel.org/.../linusw/linux-integrator into next/drivers
Baoyou Xie (1):
memory: omap-gpmc: make gpmc_clk_ticks_to_ns() static
Bjorn Andersson (5):
soc: qcom: smd: Correct compile stub prototypes
soc: qcom: smd: Simplify multi channel handling
soc: qcom: smd: Request irqs after parsing properties
soc: qcom: smd: Represent smd edges as devices
soc: qcom: smd: Reset rx tail rather than tx
Carlo Caione (2):
firmware: Amlogic: Add secure monitor driver
nvmem: amlogic: Add Amlogic Meson EFUSE driver
Chanwoo Choi (2):
clocksource: exynos_mct: Add the support for ARM64
dt-bindings: EXYNOS: Add Exynos5433 PMU compatible
Elaine Zhang (1):
soc: rockchip: support active_wakeup for rockchip power-domains
Gabriel Fernandez (1):
ARM: dts: stm32f429: add missing #reset-cells of rcc
Henry Chen (1):
soc: mediatek: PMIC wrap: Extend the waiting time to 10ms.
Jamie Lentin (2):
clk: mvebu: Add clk support for the orion5x SoC mv88f5181
pinctrl: mvebu: orion5x: Generalise mv88f5181l support for 88f5181
Jon Hunter (1):
bus: tegra-aconnect: Use of_pm_clk_add_clk()
LABBE Corentin (1):
memory: atmel-sdramc: fix a possible NULL dereference
Linus Walleij (4):
memory: omap-gpmc: use devm_gpiochip_add_data()
bus: qcom: add EBI2 device tree bindings
bus: qcom: add EBI2 driver
bus: qcom-ebi2: depend on HAS_IOMEM
Markus Elfring (1):
memory: omap-gpmc: Delete an unnecessary check before the function call "gpiochip_free_own_desc"
Masahiro Yamada (1):
reset: uniphier: add reset controller driver for UniPhier SoCs
Maxime Coquelin (3):
dt-bindings: mfd: Add STM32F4 RCC numeric constants into DT include file
dt-bindings: Document the STM32 reset bindings
drivers: reset: Add STM32 reset driver
Neil Armstrong (2):
media: rc: meson-ir: Add support for newer versions of the IR decoder
rtc: rtc-pm8xxx: Add support for pm8018 rtc
Paul Gortmaker (1):
firmware: qcom_scm: make it explicitly non-modular
Philipp Zabel (13):
reset: socfpga: no need to store modrst_offset
reset: warn on invalid input to reset_control_reset/assert/deassert/status
reset: ath79: add missing include
reset: ath79: add driver Kconfig option
reset: berlin: add driver Kconfig option
reset: lpc18xx: add driver Kconfig option
reset: meson: add driver Kconfig option
reset: pistachio: add driver Kconfig option
reset: socfpga: add driver Kconfig option
reset: stm32: add driver Kconfig option
reset: sunxi: add driver Kconfig option
reset: zynq: add driver Kconfig option
reset: hi6220: allow to compile test driver on other architectures
Roger Quadros (1):
memory: omap-gpmc: Fix build with CONFIG_OMAP_GPMC disabled
Stephen Boyd (1):
soc: qcom: smem: Silence probe defer error
Tai Nguyen (3):
MAINTAINERS: Add entry for APM X-Gene SoC PMU driver
Documentation: Add documentation for APM X-Gene SoC PMU DTS binding
perf: xgene: Add APM X-Gene SoC Performance Monitoring Unit driver
Thierry Reding (1):
bus: tegra-aconnect: Make symbol tristate
Vince Hsu (1):
soc/tegra: pmc: Fix incorrect DPD request
Wei Yongjun (1):
memory: atmel-ebi: use PTR_ERR_OR_ZERO() to simplify the code
.../devicetree/bindings/arm/samsung/pmu.txt | 1 +
.../devicetree/bindings/bus/qcom,ebi2.txt | 138 ++
.../devicetree/bindings/clock/mvebu-core-clock.txt | 1 +
.../devicetree/bindings/clock/st,stm32-rcc.txt | 42 +-
.../devicetree/bindings/mfd/qcom-pm8xxx.txt | 1 +
.../devicetree/bindings/perf/apm-xgene-pmu.txt | 112 ++
.../bindings/pinctrl/marvell,orion-pinctrl.txt | 4 +-
.../devicetree/bindings/reset/st,stm32-rcc.txt | 6 +
.../devicetree/bindings/reset/uniphier-reset.txt | 93 ++
Documentation/perf/xgene-pmu.txt | 48 +
MAINTAINERS | 8 +
arch/arm/boot/dts/stm32f429.dtsi | 1 +
drivers/bus/Kconfig | 14 +-
drivers/bus/Makefile | 1 +
drivers/bus/qcom-ebi2.c | 408 ++++++
drivers/bus/tegra-aconnect.c | 22 +-
drivers/clk/mvebu/orion.c | 70 +
drivers/clocksource/Kconfig | 2 +-
drivers/clocksource/exynos_mct.c | 4 +
drivers/firmware/Kconfig | 1 +
drivers/firmware/Makefile | 1 +
drivers/firmware/meson/Kconfig | 9 +
drivers/firmware/meson/Makefile | 1 +
drivers/firmware/meson/meson_sm.c | 248 ++++
drivers/firmware/qcom_scm.c | 19 +-
drivers/media/rc/meson-ir.c | 29 +-
drivers/memory/atmel-ebi.c | 10 +-
drivers/memory/atmel-sdramc.c | 4 +-
drivers/memory/omap-gpmc.c | 41 +-
drivers/nvmem/Kconfig | 10 +
drivers/nvmem/Makefile | 2 +
drivers/nvmem/meson-efuse.c | 93 ++
drivers/perf/Kconfig | 7 +
drivers/perf/Makefile | 1 +
drivers/perf/xgene_pmu.c | 1398 ++++++++++++++++++++
drivers/pinctrl/mvebu/pinctrl-orion.c | 23 +-
drivers/reset/Kconfig | 65 +
drivers/reset/Makefile | 20 +-
drivers/reset/core.c | 12 +-
drivers/reset/hisilicon/Kconfig | 3 +-
drivers/reset/reset-ath79.c | 1 +
drivers/reset/reset-socfpga.c | 19 +-
drivers/reset/reset-stm32.c | 108 ++
drivers/reset/reset-uniphier.c | 440 ++++++
drivers/rtc/rtc-pm8xxx.c | 1 +
drivers/soc/mediatek/mtk-pmic-wrap.c | 2 +-
drivers/soc/qcom/smd.c | 265 ++--
drivers/soc/qcom/smem.c | 3 +-
drivers/soc/rockchip/pm_domains.c | 100 +-
drivers/soc/tegra/pmc.c | 28 +-
include/dt-bindings/mfd/stm32f4-rcc.h | 98 ++
include/linux/firmware/meson/meson_sm.h | 31 +
include/linux/omap-gpmc.h | 4 +-
include/linux/soc/qcom/smd.h | 29 +-
54 files changed, 3798 insertions(+), 304 deletions(-)
create mode 100644 Documentation/devicetree/bindings/bus/qcom,ebi2.txt
create mode 100644 Documentation/devicetree/bindings/perf/apm-xgene-pmu.txt
create mode 100644 Documentation/devicetree/bindings/reset/st,stm32-rcc.txt
create mode 100644 Documentation/devicetree/bindings/reset/uniphier-reset.txt
create mode 100644 Documentation/perf/xgene-pmu.txt
create mode 100644 drivers/bus/qcom-ebi2.c
create mode 100644 drivers/firmware/meson/Kconfig
create mode 100644 drivers/firmware/meson/Makefile
create mode 100644 drivers/firmware/meson/meson_sm.c
create mode 100644 drivers/nvmem/meson-efuse.c
create mode 100644 drivers/perf/xgene_pmu.c
create mode 100644 drivers/reset/reset-stm32.c
create mode 100644 drivers/reset/reset-uniphier.c
create mode 100644 include/dt-bindings/mfd/stm32f4-rcc.h
create mode 100644 include/linux/firmware/meson/meson_sm.h
^ permalink raw reply
* [GIT PULL 4/8] ARM: SoC 64-bit changes for v4.9
From: Arnd Bergmann @ 2016-10-08 0:31 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <3637015.LRn5VyhPVM@wuerfel>
The following changes since commit 3eab887a55424fc2c27553b7bfe32330df83f7b8:
Linux 4.8-rc4 (2016-08-28 15:04:33 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git tags/armsoc-arm64
for you to fetch changes up to a119a2c4c093716193574675590ea4a7835fa277:
Merge tag 'zte-defconfig64-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into next/arm64 (2016-09-19 22:35:21 +0200)
----------------------------------------------------------------
ARM: SoC 64-bit changes for v4.9
Changes to platform code for 64-bit ARM platforms.
Nearly all of these are defconfig updates to enable new drivers or old
drivers still used on these 64-bit platforms.
Aside from that, we gain initial support for two set-top-box platforms,
both of which already have 32-bit support in arch/arm:
- Broadcom adds abstract support for the bcm7xxx/brcmstb platform,
presumably the respective dts files and more information will
follow at a later point.
- The ZTE ZX296718 SoC for set-top-boxes, a relative of the 32-bit
ZX296702 SoC that we already support.
----------------------------------------------------------------
Andre Przywara (1):
arm64: sunxi: Kconfig: add essential pinctrl driver
Arnd Bergmann (8):
Merge tag 'hisi-defconfig-for-4.9' of git://github.com/hisilicon/linux-hisi into next/arm64
Merge tag 'qcom-arm64-defconfig-for-4.9' of git://git.kernel.org/.../agross/linux into next/arm64
Merge tag 'mvebu-defconfig64-4.9-1' of git://git.infradead.org/linux-mvebu into next/arm64
Merge tag 'renesas-arm64-defconfig-for-v4.9' of git://git.kernel.org/.../horms/renesas into next/arm64
Merge tag 'arm-soc/for-4.9/soc-arm64' of http://github.com/Broadcom/stblinux into next/arm64
Merge tag 'sunxi-config64-for-4.9' of https://git.kernel.org/.../mripard/linux into next/arm64
Merge tag 'zte-soc64-4.9' of git://git.kernel.org/.../shawnguo/linux into next/arm64
Merge tag 'zte-defconfig64-4.9' of git://git.kernel.org/.../shawnguo/linux into next/arm64
Christopher Covington (1):
arm64: defconfig: Enable QDF2432 config options
Florian Fainelli (1):
arm64: Add Broadcom Set Top Box Kconfig entry point
Gregory CLEMENT (1):
arm64: configs: enable PCIe driver for Aardvark
Guodong Xu (3):
arm64: defconfig: Enable HiSilicon kirin drm, adv7533 for HiKey
arm64: defconfig: enable CONFIG_INPUT_HISI_POWERKEY for HiKey
arm64: defconfig: enable bluetooth supports as modules
John Stultz (1):
Kconfig: ARCH_HISI: Add PINCTRL to HISI platform
Jun Nie (2):
arm64: defconfig: enable ZTE ZX related config
arm64: add ZTE ZX SoC family
Kefeng Wang (1):
arm64: defconfig: Enable Hisi SAS and HNS
Kevin Hilman (4):
arm64: defconfig: enable HW random as module
arm64: defconfig: enable meson WDT as modules
arm64: defconfig: enable meson SPI as module
arm64: defconfig: enable meson I2C
Leo Yan (1):
arm64: defconfig: enable common modules for power management
Simon Horman (1):
arm64: defconfig: Enable SDHI and GPIO_REGULATOR
Thomas Petazzoni (1):
arm64: defconfig: enable xhci-platform
Yoshihiro Shimoda (1):
arm64: defconfig: Add Renesas R-Car HSUSB driver support as module
arch/arm64/Kconfig.platforms | 15 +++++++++++++++
arch/arm64/configs/defconfig | 35 +++++++++++++++++++++++++++++++++--
2 files changed, 48 insertions(+), 2 deletions(-)
^ permalink raw reply
* [GIT PULL 3/8] ARM: SoC defconfig changes for v4.9
From: Arnd Bergmann @ 2016-10-08 0:31 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <3637015.LRn5VyhPVM@wuerfel>
The following changes since commit 3eab887a55424fc2c27553b7bfe32330df83f7b8:
Linux 4.8-rc4 (2016-08-28 15:04:33 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git tags/armsoc-defconfig
for you to fetch changes up to 3f0958d8aea708019d52962a7a8fe827d9f9006c:
ARM: multi_v7_defconfig: enable CONFIG_EFI (2016-09-19 17:16:34 +0200)
----------------------------------------------------------------
ARM: SoC defconfig updates for v4.9
Defconfig additions, removals, etc. Most of these are small changes adding
the options for newly upstreamed drivers, or drivers needed for new board
support. Nothing specifically sticks out this time.
----------------------------------------------------------------
Ard Biesheuvel (1):
ARM: multi_v7_defconfig: enable CONFIG_EFI
Arnd Bergmann (6):
Merge tag 'davinci-for-v4.9/defconfig' of git://git.kernel.org/.../nsekhar/linux-davinci into next/defconfig
Merge tag 'samsung-defconfig-4.9' of git://git.kernel.org/.../krzk/linux into next/defconfig
Merge tag 'omap-for-v4.9/defconfig-signed' of git://git.kernel.org/.../tmlind/linux-omap into next/defconfig
Merge tag 'keystone_config_for_4.9' of git://git.kernel.org/.../ssantosh/linux-keystone into next/defconfig
Merge tag 'mvebu-defconfig-4.9-1' of git://git.infradead.org/linux-mvebu into next/defconfig
Merge tag 'imx-defconfig-4.9' of git://git.kernel.org/.../shawnguo/linux into next/defconfig
Borislav Petkov (1):
ARM: s3c2410_defconfig: Remove CONFIG_IPV6_PRIVACY
Breno Lima (1):
ARM: imx_v6_v7_defconfig: Add CONFIG_MPL3115
Chanwoo Choi (1):
ARM: exynos_defconfig: Enable bus frequency scaling with devfreq
Fabian Frederick (1):
ARM: mvebu_v5_defconfig: use MV88E6XXX
Fabio Estevam (2):
ARM: imx_v6_v7_defconfig: Enable GPU support
ARM: imx_v6_v7_defconfig: Select the wm8960 codec driver
Grzegorz Jaszczyk (2):
ARM: mvebu: enable MTD command line partition table in mvebu_v7_defconfig
ARM: mvebu: enable UBI and UBIFS in mvebu_v7_defconfig
Javier Martinez Canillas (1):
ARM: multi_v7_defconfig: Build Atmel maXTouch driver as a module
Karl Beldan (4):
ARM: davinci_all_defconfig: enable RTC driver as module
ARM: davinci_all_defconfig: enable SMSC ethernet PHY
ARM: davinci_all_defconfig: Enable AEMIF as a module
ARM: davinci_all_defconfig: Enable some UBI modules
Kevin Hilman (2):
ARM: davinci_all_defconfig: cleanup with savedefconfig
ARM: davinci_all_defconfig: enable DA850 audio as modules
Krzysztof Kozlowski (4):
ARM: exynos_defconfig: Enable PM_DEBUG
ARM: exynos_defconfig: Enable SECCOMP
ARM: multi_v7_defconfig: Enable SECCOMP
Merge tag 'tags/samsung-defconfig-schedutil-4.9' into next/defconfig
Linus Walleij (2):
ARM: omap2plus_defconfig: switch to the IIO BMP085 driver
ARM: defconfig: update the Integrator defconfig
Peter Chen (1):
ARM: imx_v6_v7_defconfig: enable more USB configurations
Roger Quadros (1):
ARM: keystone: defconfig: Fix USB configuration
Tuomas Tynkkynen (2):
ARM: multi_v7_defconfig: Enable AHCI_IMX
ARM: multi_v7_defconfig: Enable ARM_IMX6Q_CPUFREQ
arch/arm/configs/davinci_all_defconfig | 66 +++++++++++++---------------------
arch/arm/configs/exynos_defconfig | 11 +++++-
arch/arm/configs/imx_v6_v7_defconfig | 17 +++++----
arch/arm/configs/integrator_defconfig | 13 ++-----
arch/arm/configs/keystone_defconfig | 1 +
arch/arm/configs/multi_v7_defconfig | 13 +++++--
arch/arm/configs/mvebu_v5_defconfig | 5 +--
arch/arm/configs/mvebu_v7_defconfig | 3 ++
arch/arm/configs/omap2plus_defconfig | 2 +-
arch/arm/configs/s3c2410_defconfig | 1 -
10 files changed, 66 insertions(+), 66 deletions(-)
^ permalink raw reply
* [GIT PULL 2/8] ARM: SoC platform updates for v4.9
From: Arnd Bergmann @ 2016-10-08 0:30 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <3637015.LRn5VyhPVM@wuerfel>
The following changes since commit 3eab887a55424fc2c27553b7bfe32330df83f7b8:
Linux 4.8-rc4 (2016-08-28 15:04:33 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git tags/armsoc-soc
for you to fetch changes up to e40454d3f444ba7f8cc78dd985a1414a5945757c:
Merge tag 'mvebu-soc-4.9-1' of git://git.infradead.org/linux-mvebu into next/soc (2016-09-21 22:35:56 +0200)
----------------------------------------------------------------
ARM: SoC platform updates for v4.9
These are updates for platform specific code on 32-bit ARM machines,
essentially anything that can not (yet) be expressed using DT files.
Noteworthy changes include:
- We get support for running in big-endian mode on two platforms:
sunxi (Allwinner) and s3c24xx (old Samsung).
- The recently added Uniphier platform now uses standard PSCI
methods for SMP booting and we remove support for old bootloader
versions that did not support it yet.
- In sunxi, we gain support for the "Nextthing GR8" SoC, which
is a close relative of the Allwinner A13 and R8 chips.
- PXA completes its move over to the generic dmaengine framework
and removes its old private API
- mach-bcm gains support for BCM47189/BCM53573, their first ARM
SoC with integrated 802.11ac wireless networking.
----------------------------------------------------------------
Andy Gross (1):
ARM: qcom: Cleanup/Remove unnecessary board file
Anson Huang (3):
ARM: imx: rename imx6q_set_int_mem_clk_lpm() function
ARM: imx: enable WAIT mode hardware workaround for imx6sx
ARM: imx: add cpuidle support for i.mx6ul
Arnd Bergmann (16):
Merge tag 'davinci-for-v4.9/soc' of git://git.kernel.org/.../nsekhar/linux-davinci into next/soc
Merge tag 'samsung-soc-4.9' of git://git.kernel.org/.../krzk/linux into next/soc
ARM: imx: build cpuidle-imx6sx.o for imx6ul
ARM: mv78xx0: simplify ethernet device creation
ARM: mvebu/orion: remove NO_IRQ check from device init
ARM: orion: simplify orion_ge00_switch_init
ARM: orion5x: remove extraneous NO_IRQ
Merge tag 'qcom-soc-for-4.9' of git://git.kernel.org/.../agross/linux into next/soc
Merge tag 'arm-soc/for-4.9/soc' of http://github.com/Broadcom/stblinux into next/soc
Merge tag 'renesas-soc-for-v4.9' of git://git.kernel.org/.../horms/renesas into next/soc
Merge tag 'pxa-for-4.9' of https://github.com/rjarzmik/linux into next/soc
Merge tag 'sunxi-core-for-4.9' of https://git.kernel.org/.../mripard/linux into next/soc
Merge tag 'imx-soc-4.9' of git://git.kernel.org/.../shawnguo/linux into next/soc
Merge tag 'uniphier-soc-v4.9' of git://git.kernel.org/.../masahiroy/linux-uniphier into next/soc
Merge tag 'imx-legacy-4.9' of git://git.kernel.org/.../shawnguo/linux into next/soc
Merge tag 'mvebu-soc-4.9-1' of git://git.infradead.org/linux-mvebu into next/soc
Bartlomiej Zolnierkiewicz (4):
arm: colibri_pxa270_defconfig: disable IDE subsystem
arm: lpda270_defconfig: disable IDE subsystem
arm: pxa255-idp_defconfig: disable IDE subsystem
arm: trizeps4_defconfig: disable IDE subsystem
Ben Dooks (1):
ARM: EXYNOS: Enable ARCH_SUPPORTS_BIG_ENDIAN explicitly
Florian Fainelli (1):
ARM: brcmstb: Add earlyprintk support using run-time checks
Geert Uytterhoeven (1):
ARM: debug-ll: Add support for r8a7992
Karl Beldan (1):
ARM: davinci: da850: Add ti-aemif lookup for clock matching
Markus Elfring (2):
ARM: s3c64xx: Delete unnecessary assignment for the field "owner"
ARM: pxa: Use kmalloc_array() in pxa_pm_init()
Masahiro Yamada (1):
ARM: uniphier: remove SoC-specific SMP code
Maxime Ripard (1):
ARM: sunxi: Support the Nextthing GR8
Michael Weiser (1):
ARM: sunxi: enable big-endian
Neil Armstrong (1):
MAINTAINERS: update list of Oxnas maintainers
Pankaj Dubey (1):
ARM: EXYNOS: Remove unused DMC and CMU offsets and their mappings
Petr Cvek (1):
ARM: pxa: magician: Remove duplicated I2C pins declaration
Rafa? Mi?ecki (1):
ARM: BCM53573: Initial support for Broadcom BCM53573 SoCs
Robert Jarzmik (7):
ARM: pxa: remove devicetree boards from pxa_defconfig
ARM: pxa: remove platform dma code
ARM: pxa: prepare pxa25x interrupts for device-tree platforms
ARM: pxa: add pxa25x device-tree support
ARM: pxa: fix GPIO double shifts
ARM: pxa: remove irq init from dt machines
ARM: pxa: pxa_cplds: fix interrupt handling
Sylwester Nawrocki (2):
ARM: S3C24XX: Add dma_mask assignments for DMA devices
ARM: S3C24XX: Add missing DMA device for Mini2440 board
Vladimir Zapolskiy (17):
ARM: imx legacy: kzm: move peripheral initialization to .init_late
ARM: imx legacy: mx31lite: move peripheral initialization to .init_late
ARM: imx legacy: mx31ads: move peripheral initialization to .init_late
ARM: imx legacy: mx31lilly: move peripheral initialization to .init_late
ARM: imx legacy: pcm037: move peripheral initialization to .init_late
ARM: imx legacy: mx31-3ds: move peripheral initialization to .init_late
ARM: imx legacy: qong: move peripheral initialization to .init_late
ARM: imx legacy: armadillo5x0: move peripheral initialization to .init_late
ARM: imx legacy: mx31moboard: move peripheral initialization to .init_late
ARM: imx legacy: vpr200: move peripheral initialization to .init_late
ARM: imx legacy: imx27-visstrim-m10: move peripheral initialization to .init_late
ARM: imx legacy: mx27-3ds: move peripheral initialization to .init_late
ARM: imx legacy: mx35-3ds: move peripheral initialization to .init_late
ARM: imx legacy: pcm043: move peripheral initialization to .init_late
ARM: imx legacy: mx21ads: move peripheral initialization to .init_late
ARM: imx legacy: mx27ads: move peripheral initialization to .init_late
ARM: imx legacy: pca100: move peripheral initialization to .init_late
Wolfram Sang (2):
ARM: shmobile: r8a7790: only use smp_init when SMP is selected
ARM: shmobile: r8a7791: only use smp_init when SMP is selected
Documentation/arm/sunxi/README | 2 +
Documentation/devicetree/bindings/arm/sunxi.txt | 1 +
MAINTAINERS | 9 +
arch/arm/Kconfig.debug | 22 +-
arch/arm/configs/colibri_pxa270_defconfig | 1 -
arch/arm/configs/lpd270_defconfig | 1 -
arch/arm/configs/pxa255-idp_defconfig | 1 -
arch/arm/configs/pxa_defconfig | 2 -
arch/arm/configs/trizeps4_defconfig | 2 -
arch/arm/include/asm/hardware/cache-uniphier.h | 20 +-
arch/arm/include/debug/brcmstb.S | 145 +++++++++
arch/arm/mach-bcm/Kconfig | 14 +
arch/arm/mach-bcm/brcmstb.c | 16 +
arch/arm/mach-davinci/da850.c | 1 +
arch/arm/mach-davinci/da8xx-dt.c | 1 +
arch/arm/mach-exynos/Kconfig | 1 +
arch/arm/mach-exynos/exynos.c | 15 -
arch/arm/mach-exynos/include/mach/map.h | 5 -
arch/arm/mach-imx/Makefile | 1 +
arch/arm/mach-imx/common.h | 2 +-
arch/arm/mach-imx/cpuidle-imx6q.c | 2 +-
arch/arm/mach-imx/cpuidle-imx6sx.c | 11 +
arch/arm/mach-imx/mach-armadillo5x0.c | 39 ++-
arch/arm/mach-imx/mach-imx27_visstrim_m10.c | 24 +-
arch/arm/mach-imx/mach-imx6ul.c | 3 +
arch/arm/mach-imx/mach-kzm_arm11_01.c | 9 +-
arch/arm/mach-imx/mach-mx21ads.c | 13 +-
arch/arm/mach-imx/mach-mx27_3ds.c | 30 +-
arch/arm/mach-imx/mach-mx27ads.c | 13 +-
arch/arm/mach-imx/mach-mx31_3ds.c | 39 ++-
arch/arm/mach-imx/mach-mx31ads.c | 18 +-
arch/arm/mach-imx/mach-mx31lilly.c | 50 ++-
arch/arm/mach-imx/mach-mx31lite.c | 68 +++--
arch/arm/mach-imx/mach-mx31moboard.c | 23 +-
arch/arm/mach-imx/mach-mx35_3ds.c | 15 +-
arch/arm/mach-imx/mach-pca100.c | 26 +-
arch/arm/mach-imx/mach-pcm037.c | 67 ++--
arch/arm/mach-imx/mach-pcm043.c | 10 +-
arch/arm/mach-imx/mach-qong.c | 2 +-
arch/arm/mach-imx/mach-vpr200.c | 29 +-
arch/arm/mach-imx/mx31lilly-db.c | 20 --
arch/arm/mach-imx/mx31lite-db.c | 33 --
arch/arm/mach-imx/pm-imx6.c | 8 +-
arch/arm/mach-mv78xx0/common.c | 9 +-
arch/arm/mach-orion5x/common.c | 4 +-
arch/arm/mach-orion5x/common.h | 2 +-
arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c | 4 +-
arch/arm/mach-orion5x/rd88f5181l-ge-setup.c | 5 +-
arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c | 6 +-
arch/arm/mach-orion5x/wnr854t-setup.c | 4 +-
arch/arm/mach-orion5x/wrt350n-v2-setup.c | 4 +-
arch/arm/mach-pxa/Kconfig | 11 +
arch/arm/mach-pxa/Makefile | 3 +-
arch/arm/mach-pxa/corgi_pm.c | 13 +-
arch/arm/mach-pxa/devices.h | 1 +
arch/arm/mach-pxa/generic.h | 2 -
arch/arm/mach-pxa/include/mach/dma.h | 1 -
arch/arm/mach-pxa/magician.c | 4 -
arch/arm/mach-pxa/pm.c | 5 +-
arch/arm/mach-pxa/pxa-dt.c | 35 ++-
arch/arm/mach-pxa/pxa25x.c | 26 +-
arch/arm/mach-pxa/pxa27x.c | 14 +-
arch/arm/mach-pxa/pxa3xx.c | 11 +-
arch/arm/mach-pxa/pxa_cplds_irqs.c | 24 +-
arch/arm/mach-pxa/sharpsl_pm.c | 2 +-
arch/arm/mach-pxa/sharpsl_pm.h | 2 +-
arch/arm/mach-pxa/spitz_pm.c | 9 +-
arch/arm/mach-qcom/Makefile | 1 -
arch/arm/mach-qcom/board.c | 31 --
arch/arm/mach-s3c24xx/common.c | 20 +-
arch/arm/mach-s3c24xx/mach-mini2440.c | 1 +
arch/arm/mach-s3c64xx/mach-crag6410-module.c | 3 +-
arch/arm/mach-shmobile/setup-r8a7790.c | 2 +-
arch/arm/mach-shmobile/setup-r8a7791.c | 2 +-
arch/arm/mach-sunxi/Kconfig | 1 +
arch/arm/mach-sunxi/sunxi.c | 1 +
arch/arm/mach-uniphier/Makefile | 2 +-
arch/arm/mach-uniphier/headsmp.S | 43 ---
arch/arm/mach-uniphier/platsmp.c | 209 -------------
arch/arm/mm/cache-uniphier.c | 63 +---
arch/arm/plat-orion/common.c | 85 ++----
arch/arm/plat-orion/include/plat/common.h | 10 +-
arch/arm/plat-pxa/Makefile | 2 -
arch/arm/plat-pxa/dma.c | 386 ------------------------
arch/arm/plat-pxa/include/plat/dma.h | 100 ------
arch/arm/plat-samsung/include/plat/map-s5p.h | 4 -
86 files changed, 696 insertions(+), 1285 deletions(-)
create mode 100644 arch/arm/include/debug/brcmstb.S
delete mode 100644 arch/arm/mach-qcom/board.c
delete mode 100644 arch/arm/mach-uniphier/headsmp.S
delete mode 100644 arch/arm/mach-uniphier/platsmp.c
delete mode 100644 arch/arm/plat-pxa/dma.c
delete mode 100644 arch/arm/plat-pxa/include/plat/dma.h
^ permalink raw reply
* [GIT PULL 1/8] ARM: SoC cleanups for v4.9
From: Arnd Bergmann @ 2016-10-08 0:29 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <3637015.LRn5VyhPVM@wuerfel>
The following changes since commit 3eab887a55424fc2c27553b7bfe32330df83f7b8:
Linux 4.8-rc4 (2016-08-28 15:04:33 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git tags/armsoc-cleanup
for you to fetch changes up to e13688fe618881dd407a68dfbd2295d70b21a445:
ARM: select PCI_DOMAINS config from ARCH_MULTIPLATFORM (2016-09-21 22:45:13 +0200)
----------------------------------------------------------------
ARM: SoC cleanups for v4.9
The cleanups for v4.9 are a little larger that usual, but thankfully
that is almost exclusively due to removing a significant number of
files that have become obsolete after the still ongoing conversion
of old board files to devicetree.
- for mach-omap2, which is still the largest platform in arch/arm/,
the conversion to DT is finally complete after the Nokia N900 is
now fully supported there, along with the omap3 LDP, and we can
remove those two board files.
If no regressions are found, another large cleanup for the platform
will happen as a follow-up, removing dead code and restructuring
the platform based on being DT-only.
- In mach-imx, similar work is ongoing, but has not come that far.
This time, we remove the obsolete board file for the i.MX1
generation, which like i.MX25, i.MX5, i.MX6, and i.MX7 is now DT-only.
The remaining board files are for i.MX2 and i.MX3 machines
based on old ARM926 or ARM1136 cores that should work with DT
in principle.
- realview has just been converted from board files to DT, and a lot
of code gets removed in the process. This is the last
ARM/Keil/Versatile derived platform that was still using board
files, the other ones being integrator, versatile and vexpress.
We can probably merge the remaining code into a single directory
in the near future.
- clps711x had completed the conversion in v4.8, but we accidentally
left the files in place that should have been deleted then.
Conflicts: two files deleted here have been modified upstream,
the changes can be discarded.
----------------------------------------------------------------
Alexander Kurz (2):
ARM: i.MX31 iomux: remove plain duplicates
ARM: i.MX31 iomux: remove duplicates with alternate name
Alexander Shiyan (4):
ARM: i.MX: Remove i.MX1 Armadeus APF9328 board support
ARM: i.MX: Remove i.MX1 Synertronixx SCB9328 board support
ARM: i.MX: Remove i.MX1 non-DT support
ARM: i.MX: Move SOC_IMX1 into 'Device tree only'
Arnd Bergmann (5):
Merge tag 'realview-broomstick-sweep' of git://git.kernel.org/.../linusw/linux-integrator into next/cleanup
ARM: clps711x: remove extraneous files
Merge tag 'omap-for-v4.8/legacy-signed' of git://git.kernel.org/.../tmlind/linux-omap into next/cleanup
Merge tag 'omap-for-v4.9/soc-signed' of git://git.kernel.org/.../tmlind/linux-omap into next/cleanup
Merge tag 'imx-cleanup-4.9' of git://git.kernel.org/.../shawnguo/linux into next/cleanup
Fabian Frederick (1):
ARM: imx: remove platform-mxc_rnga
Javier Martinez Canillas (3):
ARM: OMAP1: use IS_ENABLED() instead of checking for built-in or module
ARM: OMAP2+: use IS_ENABLED() instead of checking for built-in or module
ARM: imx: use IS_ENABLED() instead of checking for built-in or module
Kishon Vijay Abraham I (2):
ARM: stop *MIGHT_HAVE_PCI* config from being selected redundantly
ARM: select PCI_DOMAINS config from ARCH_MULTIPLATFORM
Linus Walleij (2):
ARM: realview: delete the RealView board files
ARM: realview: imply device tree boot
Lothar Wa?mann (1):
ARM: mxs: remove obsolete startup code for TX28
Martin Kaiser (1):
ARM: imx: (trivial) fix typo and grammar
Tony Lindgren (3):
Merge remote-tracking branch 'peter/peter/for-4.8_omapdss_part1' into omap-for-v4.8/legacy
ARM: OMAP2+: Drop legacy board file for n900
ARM: OMAP2+: Drop legacy board file for LDP
Vladimir Murzin (2):
ARM: imx: no need to select SMP_ON_UP explicitly
ARM: realview: no need to select SMP_ON_UP explicitly
arch/arm/Kconfig | 4 +-
arch/arm/configs/imx_v4_v5_defconfig | 3 +-
arch/arm/configs/multi_v4t_defconfig | 4 +-
arch/arm/mach-at91/Kconfig | 1 -
arch/arm/mach-axxia/Kconfig | 2 -
arch/arm/mach-clps711x/Makefile.boot | 0
arch/arm/mach-clps711x/board-autcpu12.c | 275 ------
arch/arm/mach-clps711x/board-cdb89712.c | 147 ---
arch/arm/mach-clps711x/board-clep7312.c | 45 -
arch/arm/mach-clps711x/board-edb7211.c | 188 ----
arch/arm/mach-clps711x/board-p720t.c | 373 -------
arch/arm/mach-clps711x/common.c | 65 --
arch/arm/mach-clps711x/common.h | 23 -
arch/arm/mach-clps711x/devices.c | 149 ---
arch/arm/mach-clps711x/devices.h | 12 -
arch/arm/mach-cns3xxx/Kconfig | 1 -
arch/arm/mach-exynos/Kconfig | 2 -
arch/arm/mach-imx/Kconfig | 52 +-
arch/arm/mach-imx/Makefile | 7 +-
arch/arm/mach-imx/common.h | 5 -
arch/arm/mach-imx/devices-imx1.h | 30 -
arch/arm/mach-imx/devices/Makefile | 1 -
arch/arm/mach-imx/devices/devices-common.h | 12 -
arch/arm/mach-imx/devices/platform-imx-fb.c | 5 -
arch/arm/mach-imx/devices/platform-imx-i2c.c | 5 -
arch/arm/mach-imx/devices/platform-imx-uart.c | 37 -
arch/arm/mach-imx/devices/platform-spi_imx.c | 9 -
arch/arm/mach-imx/hardware.h | 3 +-
arch/arm/mach-imx/iomux-mx1.h | 155 ---
arch/arm/mach-imx/iomux-mx3.h | 34 -
arch/arm/mach-imx/mach-apf9328.c | 148 ---
arch/arm/mach-imx/{imx1-dt.c => mach-imx1.c} | 23 +-
arch/arm/mach-imx/mach-kzm_arm11_01.c | 6 +-
arch/arm/mach-imx/mach-pcm037.c | 2 +-
arch/arm/mach-imx/mach-scb9328.c | 143 ---
arch/arm/mach-imx/mm-imx1.c | 67 --
arch/arm/mach-imx/mx1.h | 172 ----
arch/arm/mach-integrator/Kconfig | 1 -
arch/arm/mach-keystone/Kconfig | 2 -
arch/arm/mach-mxs/mach-mxs.c | 77 --
arch/arm/mach-omap1/board-h2-mmc.c | 2 +-
arch/arm/mach-omap1/board-h2.c | 2 +-
arch/arm/mach-omap1/board-h3-mmc.c | 2 +-
arch/arm/mach-omap1/board-h3.c | 2 +-
arch/arm/mach-omap1/board-htcherald.c | 4 +-
arch/arm/mach-omap1/board-innovator.c | 4 +-
arch/arm/mach-omap1/board-nokia770.c | 4 +-
arch/arm/mach-omap1/board-sx1-mmc.c | 2 +-
arch/arm/mach-omap1/devices.c | 10 +-
arch/arm/mach-omap1/fb.c | 2 +-
arch/arm/mach-omap1/include/mach/usb.h | 2 +-
arch/arm/mach-omap1/mmc.h | 2 +-
arch/arm/mach-omap1/usb.c | 6 +-
arch/arm/mach-omap2/Kconfig | 12 -
arch/arm/mach-omap2/Makefile | 4 -
arch/arm/mach-omap2/board-flash.c | 10 +-
arch/arm/mach-omap2/board-flash.h | 11 +-
arch/arm/mach-omap2/board-ldp.c | 430 --------
arch/arm/mach-omap2/board-n8x0.c | 5 +-
arch/arm/mach-omap2/board-rx51-peripherals.c | 1312 -------------------------
arch/arm/mach-omap2/board-rx51-video.c | 67 --
arch/arm/mach-omap2/board-rx51.c | 141 ---
arch/arm/mach-omap2/board-rx51.h | 11 -
arch/arm/mach-omap2/common-board-devices.c | 3 +-
arch/arm/mach-omap2/devices.c | 7 +-
arch/arm/mach-omap2/drm.c | 2 +-
arch/arm/mach-omap2/fb.c | 2 +-
arch/arm/mach-omap2/gpmc-smsc911x.h | 2 +-
arch/arm/mach-omap2/hsmmc.c | 2 +-
arch/arm/mach-omap2/hsmmc.h | 2 +-
arch/arm/mach-omap2/twl-common.c | 3 +-
arch/arm/mach-realview/Kconfig | 72 +-
arch/arm/mach-realview/Makefile | 12 +-
arch/arm/mach-realview/board-eb.h | 94 --
arch/arm/mach-realview/board-pb1176.h | 81 --
arch/arm/mach-realview/board-pb11mp.h | 96 --
arch/arm/mach-realview/board-pba8.h | 71 --
arch/arm/mach-realview/board-pbx.h | 106 --
arch/arm/mach-realview/core.c | 404 --------
arch/arm/mach-realview/core.h | 58 --
arch/arm/mach-realview/hardware.h | 40 -
arch/arm/mach-realview/hotplug.h | 1 +
arch/arm/mach-realview/irqs-eb.h | 114 ---
arch/arm/mach-realview/irqs-pb1176.h | 77 --
arch/arm/mach-realview/irqs-pb11mp.h | 97 --
arch/arm/mach-realview/irqs-pba8.h | 71 --
arch/arm/mach-realview/irqs-pbx.h | 87 --
arch/arm/mach-realview/platform.h | 247 -----
arch/arm/mach-realview/platsmp-dt.c | 3 +-
arch/arm/mach-realview/platsmp.c | 86 --
arch/arm/mach-realview/realview_eb.c | 492 ----------
arch/arm/mach-realview/realview_pb1176.c | 395 --------
arch/arm/mach-realview/realview_pb11mp.c | 385 --------
arch/arm/mach-realview/realview_pba8.c | 307 ------
arch/arm/mach-realview/realview_pbx.c | 402 --------
arch/arm/mach-shmobile/Kconfig | 1 -
arch/arm/mach-spear/Kconfig | 1 -
arch/arm/mach-versatile/Kconfig | 1 -
drivers/clk/imx/clk-imx1.c | 46 +-
drivers/irqchip/Makefile | 2 +-
drivers/mtd/maps/Kconfig | 2 +-
101 files changed, 105 insertions(+), 8106 deletions(-)
delete mode 100644 arch/arm/mach-clps711x/Makefile.boot
delete mode 100644 arch/arm/mach-clps711x/board-autcpu12.c
delete mode 100644 arch/arm/mach-clps711x/board-cdb89712.c
delete mode 100644 arch/arm/mach-clps711x/board-clep7312.c
delete mode 100644 arch/arm/mach-clps711x/board-edb7211.c
delete mode 100644 arch/arm/mach-clps711x/board-p720t.c
delete mode 100644 arch/arm/mach-clps711x/common.c
delete mode 100644 arch/arm/mach-clps711x/common.h
delete mode 100644 arch/arm/mach-clps711x/devices.c
delete mode 100644 arch/arm/mach-clps711x/devices.h
delete mode 100644 arch/arm/mach-imx/devices-imx1.h
delete mode 100644 arch/arm/mach-imx/iomux-mx1.h
delete mode 100644 arch/arm/mach-imx/mach-apf9328.c
rename arch/arm/mach-imx/{imx1-dt.c => mach-imx1.c} (63%)
delete mode 100644 arch/arm/mach-imx/mach-scb9328.c
delete mode 100644 arch/arm/mach-imx/mm-imx1.c
delete mode 100644 arch/arm/mach-imx/mx1.h
delete mode 100644 arch/arm/mach-omap2/board-ldp.c
delete mode 100644 arch/arm/mach-omap2/board-rx51-peripherals.c
delete mode 100644 arch/arm/mach-omap2/board-rx51-video.c
delete mode 100644 arch/arm/mach-omap2/board-rx51.c
delete mode 100644 arch/arm/mach-omap2/board-rx51.h
delete mode 100644 arch/arm/mach-realview/board-eb.h
delete mode 100644 arch/arm/mach-realview/board-pb1176.h
delete mode 100644 arch/arm/mach-realview/board-pb11mp.h
delete mode 100644 arch/arm/mach-realview/board-pba8.h
delete mode 100644 arch/arm/mach-realview/board-pbx.h
delete mode 100644 arch/arm/mach-realview/core.c
delete mode 100644 arch/arm/mach-realview/core.h
delete mode 100644 arch/arm/mach-realview/hardware.h
create mode 100644 arch/arm/mach-realview/hotplug.h
delete mode 100644 arch/arm/mach-realview/irqs-eb.h
delete mode 100644 arch/arm/mach-realview/irqs-pb1176.h
delete mode 100644 arch/arm/mach-realview/irqs-pb11mp.h
delete mode 100644 arch/arm/mach-realview/irqs-pba8.h
delete mode 100644 arch/arm/mach-realview/irqs-pbx.h
delete mode 100644 arch/arm/mach-realview/platform.h
delete mode 100644 arch/arm/mach-realview/platsmp.c
delete mode 100644 arch/arm/mach-realview/realview_eb.c
delete mode 100644 arch/arm/mach-realview/realview_pb1176.c
delete mode 100644 arch/arm/mach-realview/realview_pb11mp.c
delete mode 100644 arch/arm/mach-realview/realview_pba8.c
delete mode 100644 arch/arm/mach-realview/realview_pbx.c
^ permalink raw reply
* [GIT PULL 0/8] ARM: SoC changes for v4.9
From: Arnd Bergmann @ 2016-10-08 0:28 UTC (permalink / raw)
To: linux-arm-kernel
Hi Linus,
Here are 749 patches for ARM SoCs for this merge window, a bit less than
average this time. We support 29 new machines but all five SoCs we add
are in a family that is already supported.
Out of 165 developers contributing at least one patch, the most active
by number of patches are:
46 Javier Martinez Canillas
42 Sergei Shtylyov
29 Linus Walleij
25 Hans de Goede
22 Krzysztof Kozlowski
19 Vladimir Zapolskiy
17 Patrice Chotard
16 Grzegorz Jaszczyk
14 Philipp Zabel
14 Jon Mason
14 Jisheng Zhang
13 Vladimir Barinov
While according to Signed-off-by lines we get:
87 Simon Horman
86 Shawn Guo
71 Tony Lindgren
60 Maxime Ripard
46 Javier Martinez Canillas
45 Kevin Hilman
44 Andy Gross
42 Sergei Shtylyov
40 Gregory CLEMENT
35 Heiko Stuebner
34 Krzysztof Kozlowski
The dirstat shows that once more the ARM32 dts changes dominate the
overall changes, surprisingly clearly this time showing how much
more work went into 32-bit platforms compared to 64-bit platforms:
2.1% Documentation/devicetree/bindings/
52.3% arch/arm/boot/dts/
2.9% arch/arm/mach-clps711x/
3.0% arch/arm/mach-imx/
4.2% arch/arm/mach-omap2/
9.9% arch/arm/mach-realview/
4.2% arch/arm/
2.2% arch/arm64/boot/dts/rockchip/
9.2% arch/arm64/boot/dts/
2.9% drivers/perf/
5.5% drivers/
742 files changed, 29317 insertions(+), 16385 deletions(-)
Ignoring dts and driver churn, we can see a nice cleanup, removing
almost 9000 lines of old platform code:
12.2% arch/arm/mach-clps711x/
12.7% arch/arm/mach-imx/
1.4% arch/arm/mach-integrator/
17.6% arch/arm/mach-omap2/
1.4% arch/arm/mach-pxa/
41.6% arch/arm/mach-realview/
2.3% arch/arm/mach-uniphier/
1.1% arch/arm/plat-orion/
1.2% arch/arm/plat-pxa/include/plat/
3.1% arch/arm/plat-pxa/
4.6% arch/arm/
172 files changed, 698 insertions(+), 9468 deletions(-)
Arnd
^ permalink raw reply
* [PATCH] usb: dwc3: host: inherit dma configuration from parent dev
From: Leo Li @ 2016-10-07 22:46 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <DB5PR0401MB1925E5980009DD23FA9C7D50F5C90@DB5PR0401MB1925.eurprd04.prod.outlook.com>
On Thu, Sep 22, 2016 at 12:02 AM, Sriram Dash <sriram.dash@nxp.com> wrote:
>>From: Arnd Bergmann [mailto:arnd at arndb.de]
>>On Wednesday, September 21, 2016 11:43:59 AM CEST Sriram Dash wrote:
>>> >From: Arnd Bergmann [mailto:arnd at arndb.de] On Wednesday, September
>>> >21, 2016 11:06:47 AM CEST Sriram Dash wrote:
>>>
>>> ==============================================================
>>> From 8b0dea1513e9e73a11dcfa802ddc71cca11d66f8 Mon Sep 17 00:00:00 2001
>>> From: Sriram Dash <sriram.dash@nxp.com>
>>> Date: Wed, 21 Sep 2016 11:39:30 +0530
>>> Subject: [PATCH] usb: xhci: Fix the patch inherit dma configuration
>>> from parent dev
>>>
>>> Fixes the patch https://patchwork.kernel.org/patch/9319527/
>>> ("usb: dwc3: host: inherit dma configuration from parent dev").
>>>
>>> Signed-off-by: Sriram Dash <sriram.dash@nxp.com>
>>> ---
>>> drivers/usb/host/xhci-mem.c | 12 ++++++------
>>> drivers/usb/host/xhci.c | 20 ++++++++++----------
>>> 2 files changed, 16 insertions(+), 16 deletions(-)
>>>
>>> diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
>>> index 6afe323..79608df 100644
>>> --- a/drivers/usb/host/xhci-mem.c
>>> +++ b/drivers/usb/host/xhci-mem.c
>>
>>All the changes you did to this file seem fine, I completely missed that part.
>>
>>> diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index
>>> 01d96c9..9a1ff09 100644
>>> --- a/drivers/usb/host/xhci.c
>>> +++ b/drivers/usb/host/xhci.c
>
> Yes. Some sanity is required over this patch.
Hi Sriram,
Have you been able to do the sanity check on the patch? I will be
good to have the formal patch submitted for integration as soon as
possible because the dwc3 USB functionality has been broken for a
while in upstream kernel.
Regards,
Leo
^ permalink raw reply
* [PATCH v2 8/8] PM / doc: Update device documentation for devices in IRQ safe PM domains
From: Lina Iyer @ 2016-10-07 22:37 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1475879821-8035-1-git-send-email-lina.iyer@linaro.org>
Update documentation to reflect the changes made to support IRQ safe PM
domains.
Signed-off-by: Lina Iyer <lina.iyer@linaro.org>
---
Documentation/power/devices.txt | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/Documentation/power/devices.txt b/Documentation/power/devices.txt
index 8ba6625..0401b53 100644
--- a/Documentation/power/devices.txt
+++ b/Documentation/power/devices.txt
@@ -607,7 +607,14 @@ individually. Instead, a set of devices sharing a power resource can be put
into a low-power state together at the same time by turning off the shared
power resource. Of course, they also need to be put into the full-power state
together, by turning the shared power resource on. A set of devices with this
-property is often referred to as a power domain.
+property is often referred to as a power domain. A power domain may also be
+nested inside another power domain.
+
+Devices and PM domains may be defined as IRQ-safe, if they can be powered
+on/off even when the IRQs are disabled. An IRQ-safe device in a domain will
+disallow power management on the domain, unless the domain is also defined as
+IRQ-safe. The restriction this framework imposes on the parent domain of an
+IRQ-safe domain is that it must also be defined as IRQ-safe.
Support for power domains is provided through the pm_domain field of struct
device. This field is a pointer to an object of type struct dev_pm_domain,
--
2.7.4
^ permalink raw reply related
* [PATCH v2 7/8] PM / Domains: Support IRQ safe PM domains
From: Lina Iyer @ 2016-10-07 22:37 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1475879821-8035-1-git-send-email-lina.iyer@linaro.org>
Generic Power Domains currently support turning on/off only in process
context. This prevents the usage of PM domains for domains that could be
powered on/off in a context where IRQs are disabled. Many such domains
exist today and do not get powered off, when the IRQ safe devices in
that domain are powered off, because of this limitation.
However, not all domains can operate in IRQ safe contexts. Genpd
therefore, has to support both cases where the domain may or may not
operate in IRQ safe contexts. Configuring genpd to use an appropriate
lock for that domain, would allow domains that have IRQ safe devices to
runtime suspend and resume, in atomic context.
To achieve domain specific locking, set the domain's ->flag to
GENPD_FLAG_IRQ_SAFE while defining the domain. This indicates that genpd
should use a spinlock instead of a mutex for locking the domain. Locking
is abstracted through genpd_lock() and genpd_unlock() functions that use
the flag to determine the appropriate lock to be used for that domain.
Domains that have lower latency to suspend and resume and can operate
with IRQs disabled may now be able to save power, when the component
devices and sub-domains are idle at runtime.
The restriction this imposes on the domain hierarchy is that non-IRQ
safe domains may not have IRQ-safe subdomains, but IRQ safe domains may
have IRQ safe and non-IRQ safe subdomains and devices.
Cc: Ulf Hansson <ulf.hansson@linaro.org>
Cc: Kevin Hilman <khilman@kernel.org>
Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
Signed-off-by: Lina Iyer <lina.iyer@linaro.org>
---
drivers/base/power/domain.c | 111 ++++++++++++++++++++++++++++++++++++++++----
include/linux/pm_domain.h | 10 +++-
2 files changed, 110 insertions(+), 11 deletions(-)
diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
index d0ae559..87a016a 100644
--- a/drivers/base/power/domain.c
+++ b/drivers/base/power/domain.c
@@ -74,11 +74,70 @@ static const struct genpd_lock_ops genpd_mtx_ops = {
.unlock = genpd_unlock_mtx,
};
+static void genpd_lock_spin(struct generic_pm_domain *genpd)
+ __acquires(&genpd->slock)
+{
+ unsigned long flags;
+
+ spin_lock_irqsave(&genpd->slock, flags);
+ genpd->lock_flags = flags;
+}
+
+static void genpd_lock_nested_spin(struct generic_pm_domain *genpd,
+ int depth)
+ __acquires(&genpd->slock)
+{
+ unsigned long flags;
+
+ spin_lock_irqsave_nested(&genpd->slock, flags, depth);
+ genpd->lock_flags = flags;
+}
+
+static int genpd_lock_interruptible_spin(struct generic_pm_domain *genpd)
+ __acquires(&genpd->slock)
+{
+ unsigned long flags;
+
+ spin_lock_irqsave(&genpd->slock, flags);
+ genpd->lock_flags = flags;
+ return 0;
+}
+
+static void genpd_unlock_spin(struct generic_pm_domain *genpd)
+ __releases(&genpd->slock)
+{
+ spin_unlock_irqrestore(&genpd->slock, genpd->lock_flags);
+}
+
+static const struct genpd_lock_ops genpd_spin_ops = {
+ .lock = genpd_lock_spin,
+ .lock_nested = genpd_lock_nested_spin,
+ .lock_interruptible = genpd_lock_interruptible_spin,
+ .unlock = genpd_unlock_spin,
+};
+
#define genpd_lock(p) p->lock_ops->lock(p)
#define genpd_lock_nested(p, d) p->lock_ops->lock_nested(p, d)
#define genpd_lock_interruptible(p) p->lock_ops->lock_interruptible(p)
#define genpd_unlock(p) p->lock_ops->unlock(p)
+#define genpd_is_irq_safe(genpd) (genpd->flags & GENPD_FLAG_IRQ_SAFE)
+
+static inline bool irq_safe_dev_in_no_sleep_domain(struct device *dev,
+ struct generic_pm_domain *genpd)
+{
+ bool ret;
+
+ ret = pm_runtime_is_irq_safe(dev) && !genpd_is_irq_safe(genpd);
+
+ /* Warn once for each IRQ safe dev in no sleep domain */
+ if (ret)
+ dev_warn_once(dev, "PM domain %s will not be powered off\n",
+ genpd->name);
+
+ return ret;
+}
+
/*
* Get the generic PM domain for a particular struct device.
* This validates the struct device pointer, the PM domain pointer,
@@ -343,7 +402,12 @@ static int genpd_poweroff(struct generic_pm_domain *genpd, bool is_async)
if (stat > PM_QOS_FLAGS_NONE)
return -EBUSY;
- if (!pm_runtime_suspended(pdd->dev) || pdd->dev->power.irq_safe)
+ /*
+ * Do not allow PM domain to be powered off, when an IRQ safe
+ * device is part of a non-IRQ safe domain.
+ */
+ if (!pm_runtime_suspended(pdd->dev) ||
+ irq_safe_dev_in_no_sleep_domain(pdd->dev, genpd))
not_suspended++;
}
@@ -506,10 +570,10 @@ static int genpd_runtime_suspend(struct device *dev)
}
/*
- * If power.irq_safe is set, this routine will be run with interrupts
- * off, so it can't use mutexes.
+ * If power.irq_safe is set, this routine may be run with
+ * IRQs disabled, so suspend only if the PM domain also is irq_safe.
*/
- if (dev->power.irq_safe)
+ if (irq_safe_dev_in_no_sleep_domain(dev, genpd))
return 0;
genpd_lock(genpd);
@@ -543,8 +607,11 @@ static int genpd_runtime_resume(struct device *dev)
if (IS_ERR(genpd))
return -EINVAL;
- /* If power.irq_safe, the PM domain is never powered off. */
- if (dev->power.irq_safe) {
+ /*
+ * As we don't power off a non IRQ safe domain, which holds
+ * an IRQ safe device, we don't need to restore power to it.
+ */
+ if (irq_safe_dev_in_no_sleep_domain(dev, genpd)) {
timed = false;
goto out;
}
@@ -586,7 +653,8 @@ static int genpd_runtime_resume(struct device *dev)
err_stop:
genpd_stop_dev(genpd, dev);
err_poweroff:
- if (!dev->power.irq_safe) {
+ if (!pm_runtime_is_irq_safe(dev) ||
+ (pm_runtime_is_irq_safe(dev) && genpd_is_irq_safe(genpd))) {
genpd_lock(genpd);
genpd_poweroff(genpd, 0);
genpd_unlock(genpd);
@@ -1223,6 +1291,17 @@ static int genpd_add_subdomain(struct generic_pm_domain *genpd,
|| genpd == subdomain)
return -EINVAL;
+ /*
+ * If the domain can be powered on/off in an IRQ safe
+ * context, ensure that the subdomain can also be
+ * powered on/off in that context.
+ */
+ if (!genpd_is_irq_safe(genpd) && genpd_is_irq_safe(subdomain)) {
+ WARN("Parent %s of subdomain %s must be IRQ safe\n",
+ genpd->name, subdomain->name);
+ return -EINVAL;
+ }
+
link = kzalloc(sizeof(*link), GFP_KERNEL);
if (!link)
return -ENOMEM;
@@ -1337,6 +1416,17 @@ static int genpd_set_default_power_state(struct generic_pm_domain *genpd)
return 0;
}
+static void genpd_lock_init(struct generic_pm_domain *genpd)
+{
+ if (genpd->flags & GENPD_FLAG_IRQ_SAFE) {
+ spin_lock_init(&genpd->slock);
+ genpd->lock_ops = &genpd_spin_ops;
+ } else {
+ mutex_init(&genpd->mlock);
+ genpd->lock_ops = &genpd_mtx_ops;
+ }
+}
+
/**
* pm_genpd_init - Initialize a generic I/O PM domain object.
* @genpd: PM domain object to initialize.
@@ -1356,8 +1446,7 @@ int pm_genpd_init(struct generic_pm_domain *genpd,
INIT_LIST_HEAD(&genpd->master_links);
INIT_LIST_HEAD(&genpd->slave_links);
INIT_LIST_HEAD(&genpd->dev_list);
- mutex_init(&genpd->mlock);
- genpd->lock_ops = &genpd_mtx_ops;
+ genpd_lock_init(genpd);
genpd->gov = gov;
INIT_WORK(&genpd->power_off_work, genpd_power_off_work_fn);
atomic_set(&genpd->sd_count, 0);
@@ -2133,7 +2222,9 @@ static int pm_genpd_summary_one(struct seq_file *s,
}
list_for_each_entry(pm_data, &genpd->dev_list, list_node) {
- kobj_path = kobject_get_path(&pm_data->dev->kobj, GFP_KERNEL);
+ kobj_path = kobject_get_path(&pm_data->dev->kobj,
+ genpd_is_irq_safe(genpd) ?
+ GFP_ATOMIC : GFP_KERNEL);
if (kobj_path == NULL)
continue;
diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h
index 811b968..81ece61 100644
--- a/include/linux/pm_domain.h
+++ b/include/linux/pm_domain.h
@@ -15,9 +15,11 @@
#include <linux/err.h>
#include <linux/of.h>
#include <linux/notifier.h>
+#include <linux/spinlock.h>
/* Defines used for the flags field in the struct generic_pm_domain */
#define GENPD_FLAG_PM_CLK (1U << 0) /* PM domain uses PM clk */
+#define GENPD_FLAG_IRQ_SAFE (1U << 1) /* PM domain operates in atomic */
enum gpd_status {
GPD_STATE_ACTIVE = 0, /* PM domain is active */
@@ -76,7 +78,13 @@ struct generic_pm_domain {
unsigned int state_idx; /* state that genpd will go to when off */
void *free; /* Free the state that was allocated for default */
const struct genpd_lock_ops *lock_ops;
- struct mutex mlock;
+ union {
+ struct mutex mlock;
+ struct {
+ spinlock_t slock;
+ unsigned long lock_flags;
+ };
+ };
};
--
2.7.4
^ permalink raw reply related
* [PATCH v2 6/8] PM / Domains: Abstract genpd locking
From: Lina Iyer @ 2016-10-07 22:36 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1475879821-8035-1-git-send-email-lina.iyer@linaro.org>
Abstract genpd lock/unlock calls, in preparation for domain specific
locks added in the following patches.
Cc: Kevin Hilman <khilman@kernel.org>
Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
Signed-off-by: Lina Iyer <lina.iyer@linaro.org>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
---
drivers/base/power/domain.c | 121 +++++++++++++++++++++++++++++---------------
include/linux/pm_domain.h | 5 +-
2 files changed, 85 insertions(+), 41 deletions(-)
diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
index e0f31fe..d0ae559 100644
--- a/drivers/base/power/domain.c
+++ b/drivers/base/power/domain.c
@@ -39,6 +39,46 @@
static LIST_HEAD(gpd_list);
static DEFINE_MUTEX(gpd_list_lock);
+struct genpd_lock_ops {
+ void (*lock)(struct generic_pm_domain *genpd);
+ void (*lock_nested)(struct generic_pm_domain *genpd, int depth);
+ int (*lock_interruptible)(struct generic_pm_domain *genpd);
+ void (*unlock)(struct generic_pm_domain *genpd);
+};
+
+static void genpd_lock_mtx(struct generic_pm_domain *genpd)
+{
+ mutex_lock(&genpd->mlock);
+}
+
+static void genpd_lock_nested_mtx(struct generic_pm_domain *genpd,
+ int depth)
+{
+ mutex_lock_nested(&genpd->mlock, depth);
+}
+
+static int genpd_lock_interruptible_mtx(struct generic_pm_domain *genpd)
+{
+ return mutex_lock_interruptible(&genpd->mlock);
+}
+
+static void genpd_unlock_mtx(struct generic_pm_domain *genpd)
+{
+ return mutex_unlock(&genpd->mlock);
+}
+
+static const struct genpd_lock_ops genpd_mtx_ops = {
+ .lock = genpd_lock_mtx,
+ .lock_nested = genpd_lock_nested_mtx,
+ .lock_interruptible = genpd_lock_interruptible_mtx,
+ .unlock = genpd_unlock_mtx,
+};
+
+#define genpd_lock(p) p->lock_ops->lock(p)
+#define genpd_lock_nested(p, d) p->lock_ops->lock_nested(p, d)
+#define genpd_lock_interruptible(p) p->lock_ops->lock_interruptible(p)
+#define genpd_unlock(p) p->lock_ops->unlock(p)
+
/*
* Get the generic PM domain for a particular struct device.
* This validates the struct device pointer, the PM domain pointer,
@@ -200,9 +240,9 @@ static int genpd_poweron(struct generic_pm_domain *genpd, unsigned int depth)
genpd_sd_counter_inc(master);
- mutex_lock_nested(&master->lock, depth + 1);
+ genpd_lock_nested(master, depth + 1);
ret = genpd_poweron(master, depth + 1);
- mutex_unlock(&master->lock);
+ genpd_unlock(master);
if (ret) {
genpd_sd_counter_dec(master);
@@ -255,9 +295,9 @@ static int genpd_dev_pm_qos_notifier(struct notifier_block *nb,
spin_unlock_irq(&dev->power.lock);
if (!IS_ERR(genpd)) {
- mutex_lock(&genpd->lock);
+ genpd_lock(genpd);
genpd->max_off_time_changed = true;
- mutex_unlock(&genpd->lock);
+ genpd_unlock(genpd);
}
dev = dev->parent;
@@ -354,9 +394,9 @@ static void genpd_power_off_work_fn(struct work_struct *work)
genpd = container_of(work, struct generic_pm_domain, power_off_work);
- mutex_lock(&genpd->lock);
+ genpd_lock(genpd);
genpd_poweroff(genpd, true);
- mutex_unlock(&genpd->lock);
+ genpd_unlock(genpd);
}
/**
@@ -472,9 +512,9 @@ static int genpd_runtime_suspend(struct device *dev)
if (dev->power.irq_safe)
return 0;
- mutex_lock(&genpd->lock);
+ genpd_lock(genpd);
genpd_poweroff(genpd, false);
- mutex_unlock(&genpd->lock);
+ genpd_unlock(genpd);
return 0;
}
@@ -509,9 +549,9 @@ static int genpd_runtime_resume(struct device *dev)
goto out;
}
- mutex_lock(&genpd->lock);
+ genpd_lock(genpd);
ret = genpd_poweron(genpd, 0);
- mutex_unlock(&genpd->lock);
+ genpd_unlock(genpd);
if (ret)
return ret;
@@ -547,9 +587,9 @@ err_stop:
genpd_stop_dev(genpd, dev);
err_poweroff:
if (!dev->power.irq_safe) {
- mutex_lock(&genpd->lock);
+ genpd_lock(genpd);
genpd_poweroff(genpd, 0);
- mutex_unlock(&genpd->lock);
+ genpd_unlock(genpd);
}
return ret;
@@ -732,20 +772,20 @@ static int pm_genpd_prepare(struct device *dev)
if (resume_needed(dev, genpd))
pm_runtime_resume(dev);
- mutex_lock(&genpd->lock);
+ genpd_lock(genpd);
if (genpd->prepared_count++ == 0)
genpd->suspended_count = 0;
- mutex_unlock(&genpd->lock);
+ genpd_unlock(genpd);
ret = pm_generic_prepare(dev);
if (ret) {
- mutex_lock(&genpd->lock);
+ genpd_lock(genpd);
genpd->prepared_count--;
- mutex_unlock(&genpd->lock);
+ genpd_unlock(genpd);
}
return ret;
@@ -936,13 +976,13 @@ static void pm_genpd_complete(struct device *dev)
pm_generic_complete(dev);
- mutex_lock(&genpd->lock);
+ genpd_lock(genpd);
genpd->prepared_count--;
if (!genpd->prepared_count)
genpd_queue_power_off_work(genpd);
- mutex_unlock(&genpd->lock);
+ genpd_unlock(genpd);
}
/**
@@ -1071,7 +1111,7 @@ static int genpd_add_device(struct generic_pm_domain *genpd, struct device *dev,
if (IS_ERR(gpd_data))
return PTR_ERR(gpd_data);
- mutex_lock(&genpd->lock);
+ genpd_lock(genpd);
if (genpd->prepared_count > 0) {
ret = -EAGAIN;
@@ -1088,7 +1128,7 @@ static int genpd_add_device(struct generic_pm_domain *genpd, struct device *dev,
list_add_tail(&gpd_data->base.list_node, &genpd->dev_list);
out:
- mutex_unlock(&genpd->lock);
+ genpd_unlock(genpd);
if (ret)
genpd_free_dev_data(dev, gpd_data);
@@ -1130,7 +1170,7 @@ static int genpd_remove_device(struct generic_pm_domain *genpd,
gpd_data = to_gpd_data(pdd);
dev_pm_qos_remove_notifier(dev, &gpd_data->nb);
- mutex_lock(&genpd->lock);
+ genpd_lock(genpd);
if (genpd->prepared_count > 0) {
ret = -EAGAIN;
@@ -1145,14 +1185,14 @@ static int genpd_remove_device(struct generic_pm_domain *genpd,
list_del_init(&pdd->list_node);
- mutex_unlock(&genpd->lock);
+ genpd_unlock(genpd);
genpd_free_dev_data(dev, gpd_data);
return 0;
out:
- mutex_unlock(&genpd->lock);
+ genpd_unlock(genpd);
dev_pm_qos_add_notifier(dev, &gpd_data->nb);
return ret;
@@ -1187,8 +1227,8 @@ static int genpd_add_subdomain(struct generic_pm_domain *genpd,
if (!link)
return -ENOMEM;
- mutex_lock(&subdomain->lock);
- mutex_lock_nested(&genpd->lock, SINGLE_DEPTH_NESTING);
+ genpd_lock(subdomain);
+ genpd_lock_nested(genpd, SINGLE_DEPTH_NESTING);
if (genpd->status == GPD_STATE_POWER_OFF
&& subdomain->status != GPD_STATE_POWER_OFF) {
@@ -1211,8 +1251,8 @@ static int genpd_add_subdomain(struct generic_pm_domain *genpd,
genpd_sd_counter_inc(genpd);
out:
- mutex_unlock(&genpd->lock);
- mutex_unlock(&subdomain->lock);
+ genpd_unlock(genpd);
+ genpd_unlock(subdomain);
if (ret)
kfree(link);
return ret;
@@ -1250,8 +1290,8 @@ int pm_genpd_remove_subdomain(struct generic_pm_domain *genpd,
if (IS_ERR_OR_NULL(genpd) || IS_ERR_OR_NULL(subdomain))
return -EINVAL;
- mutex_lock(&subdomain->lock);
- mutex_lock_nested(&genpd->lock, SINGLE_DEPTH_NESTING);
+ genpd_lock(subdomain);
+ genpd_lock_nested(genpd, SINGLE_DEPTH_NESTING);
if (!list_empty(&subdomain->master_links) || subdomain->device_count) {
pr_warn("%s: unable to remove subdomain %s\n", genpd->name,
@@ -1275,8 +1315,8 @@ int pm_genpd_remove_subdomain(struct generic_pm_domain *genpd,
}
out:
- mutex_unlock(&genpd->lock);
- mutex_unlock(&subdomain->lock);
+ genpd_unlock(genpd);
+ genpd_unlock(subdomain);
return ret;
}
@@ -1316,7 +1356,8 @@ int pm_genpd_init(struct generic_pm_domain *genpd,
INIT_LIST_HEAD(&genpd->master_links);
INIT_LIST_HEAD(&genpd->slave_links);
INIT_LIST_HEAD(&genpd->dev_list);
- mutex_init(&genpd->lock);
+ mutex_init(&genpd->mlock);
+ genpd->lock_ops = &genpd_mtx_ops;
genpd->gov = gov;
INIT_WORK(&genpd->power_off_work, genpd_power_off_work_fn);
atomic_set(&genpd->sd_count, 0);
@@ -1364,16 +1405,16 @@ static int genpd_remove(struct generic_pm_domain *genpd)
if (IS_ERR_OR_NULL(genpd))
return -EINVAL;
- mutex_lock(&genpd->lock);
+ genpd_lock(genpd);
if (genpd->has_provider) {
- mutex_unlock(&genpd->lock);
+ genpd_unlock(genpd);
pr_err("Provider present, unable to remove %s\n", genpd->name);
return -EBUSY;
}
if (!list_empty(&genpd->master_links) || genpd->device_count) {
- mutex_unlock(&genpd->lock);
+ genpd_unlock(genpd);
pr_err("%s: unable to remove %s\n", __func__, genpd->name);
return -EBUSY;
}
@@ -1387,7 +1428,7 @@ static int genpd_remove(struct generic_pm_domain *genpd)
kfree(genpd->free);
list_del(&genpd->gpd_list_node);
- mutex_unlock(&genpd->lock);
+ genpd_unlock(genpd);
cancel_work_sync(&genpd->power_off_work);
pr_debug("%s: removed %s\n", __func__, genpd->name);
@@ -1910,9 +1951,9 @@ int genpd_dev_pm_attach(struct device *dev)
dev->pm_domain->detach = genpd_dev_pm_detach;
dev->pm_domain->sync = genpd_dev_pm_sync;
- mutex_lock(&pd->lock);
+ genpd_lock(pd);
ret = genpd_poweron(pd, 0);
- mutex_unlock(&pd->lock);
+ genpd_unlock(pd);
out:
return ret ? -EPROBE_DEFER : 0;
}
@@ -2066,7 +2107,7 @@ static int pm_genpd_summary_one(struct seq_file *s,
char state[16];
int ret;
- ret = mutex_lock_interruptible(&genpd->lock);
+ ret = genpd_lock_interruptible(genpd);
if (ret)
return -ERESTARTSYS;
@@ -2103,7 +2144,7 @@ static int pm_genpd_summary_one(struct seq_file *s,
seq_puts(s, "\n");
exit:
- mutex_unlock(&genpd->lock);
+ genpd_unlock(genpd);
return 0;
}
diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h
index 6a89881..811b968 100644
--- a/include/linux/pm_domain.h
+++ b/include/linux/pm_domain.h
@@ -42,13 +42,14 @@ struct genpd_power_state {
struct fwnode_handle *fwnode;
};
+struct genpd_lock_ops;
+
struct generic_pm_domain {
struct dev_pm_domain domain; /* PM domain operations */
struct list_head gpd_list_node; /* Node in the global PM domains list */
struct list_head master_links; /* Links with PM domain as a master */
struct list_head slave_links; /* Links with PM domain as a slave */
struct list_head dev_list; /* List of devices */
- struct mutex lock;
struct dev_power_governor *gov;
struct work_struct power_off_work;
struct fwnode_handle *provider; /* Identity of the domain provider */
@@ -74,6 +75,8 @@ struct generic_pm_domain {
unsigned int state_count; /* number of states */
unsigned int state_idx; /* state that genpd will go to when off */
void *free; /* Free the state that was allocated for default */
+ const struct genpd_lock_ops *lock_ops;
+ struct mutex mlock;
};
--
2.7.4
^ permalink raw reply related
* [PATCH v2 5/8] dt/bindings: Update binding for PM domain idle states
From: Lina Iyer @ 2016-10-07 22:36 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1475879821-8035-1-git-send-email-lina.iyer@linaro.org>
Update DT bindings to describe idle states of PM domains.
This patch is based on the original patch by Marc Titinger.
Cc: <devicetree@vger.kernel.org>
Signed-off-by: Marc Titinger <mtitinger+renesas@baylibre.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Lina Iyer <lina.iyer@linaro.org>
Acked-by: Rob Herring <robh@kernel.org>
---
.../devicetree/bindings/power/power_domain.txt | 38 ++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/Documentation/devicetree/bindings/power/power_domain.txt b/Documentation/devicetree/bindings/power/power_domain.txt
index 025b5e7..7f8f27e 100644
--- a/Documentation/devicetree/bindings/power/power_domain.txt
+++ b/Documentation/devicetree/bindings/power/power_domain.txt
@@ -29,6 +29,10 @@ Optional properties:
specified by this binding. More details about power domain specifier are
available in the next section.
+- domain-idle-states : A phandle of an idle-state that shall be soaked into a
+ generic domain power state. The idle state definitions are
+ compatible with arm,idle-state specified in [1].
+
Example:
power: power-controller at 12340000 {
@@ -59,6 +63,38 @@ The nodes above define two power controllers: 'parent' and 'child'.
Domains created by the 'child' power controller are subdomains of '0' power
domain provided by the 'parent' power controller.
+Example 3:
+ parent: power-controller at 12340000 {
+ compatible = "foo,power-controller";
+ reg = <0x12340000 0x1000>;
+ #power-domain-cells = <0>;
+ domain-idle-states = <&DOMAIN_RET>, <&DOMAIN_PWR_DN>;
+ };
+
+ child: power-controller at 12341000 {
+ compatible = "foo,power-controller";
+ reg = <0x12341000 0x1000>;
+ power-domains = <&parent 0>;
+ #power-domain-cells = <0>;
+ domain-idle-states = <&DOMAIN_PWR_DN>;
+ };
+
+ DOMAIN_RET: state at 0 {
+ compatible = "arm,idle-state";
+ reg = <0x0>;
+ entry-latency-us = <1000>;
+ exit-latency-us = <2000>;
+ min-residency-us = <10000>;
+ };
+
+ DOMAIN_PWR_DN: state at 1 {
+ compatible = "arm,idle-state";
+ reg = <0x1>;
+ entry-latency-us = <5000>;
+ exit-latency-us = <8000>;
+ min-residency-us = <7000>;
+ };
+
==PM domain consumers==
Required properties:
@@ -76,3 +112,5 @@ Example:
The node above defines a typical PM domain consumer device, which is located
inside a PM domain with index 0 of a power controller represented by a node
with the label "power".
+
+[1]. Documentation/devicetree/bindings/arm/idle-states.txt
--
2.7.4
^ permalink raw reply related
* [PATCH v2 4/8] PM / Domains: Save the fwnode in genpd_power_state
From: Lina Iyer @ 2016-10-07 22:36 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1475879821-8035-1-git-send-email-lina.iyer@linaro.org>
Save the fwnode for the genpd state in the state node. PM Domain clients
may use the fwnode to read in the platform specific domain state
properties and associate them with the state.
Signed-off-by: Lina Iyer <lina.iyer@linaro.org>
---
drivers/base/power/domain.c | 1 +
include/linux/pm_domain.h | 1 +
2 files changed, 2 insertions(+)
diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
index 4208b67..e0f31fe 100644
--- a/drivers/base/power/domain.c
+++ b/drivers/base/power/domain.c
@@ -1957,6 +1957,7 @@ static int genpd_parse_state(struct genpd_power_state *genpd_state,
genpd_state->power_on_latency_ns = 1000 * exit_latency;
genpd_state->power_off_latency_ns = 1000 * entry_latency;
+ genpd_state->fwnode = &state_node->fwnode;
return 0;
}
diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h
index b489496..6a89881 100644
--- a/include/linux/pm_domain.h
+++ b/include/linux/pm_domain.h
@@ -39,6 +39,7 @@ struct genpd_power_state {
s64 power_off_latency_ns;
s64 power_on_latency_ns;
s64 residency_ns;
+ struct fwnode_handle *fwnode;
};
struct generic_pm_domain {
--
2.7.4
^ permalink raw reply related
* [PATCH v2 3/8] PM / Domains: Allow domain power states to be read from DT
From: Lina Iyer @ 2016-10-07 22:36 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1475879821-8035-1-git-send-email-lina.iyer@linaro.org>
This patch allows domains to define idle states in the DT. SoC's can
define domain idle states in DT using the "domain-idle-states" property
of the domain provider. Add API to read the idle states from DT that can
be set in the genpd object.
This patch is based on the original patch by Marc Titinger.
Signed-off-by: Marc Titinger <mtitinger+renesas@baylibre.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Lina Iyer <lina.iyer@linaro.org>
---
drivers/base/power/domain.c | 95 +++++++++++++++++++++++++++++++++++++++++++++
include/linux/pm_domain.h | 8 ++++
2 files changed, 103 insertions(+)
diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
index 4e87170..4208b67 100644
--- a/drivers/base/power/domain.c
+++ b/drivers/base/power/domain.c
@@ -1917,6 +1917,101 @@ out:
return ret ? -EPROBE_DEFER : 0;
}
EXPORT_SYMBOL_GPL(genpd_dev_pm_attach);
+
+static const struct of_device_id idle_state_match[] = {
+ { .compatible = "arm,idle-state", },
+ { }
+};
+
+static int genpd_parse_state(struct genpd_power_state *genpd_state,
+ struct device_node *state_node)
+{
+ int err;
+ u32 residency;
+ u32 entry_latency, exit_latency;
+ const struct of_device_id *match_id;
+
+ match_id = of_match_node(idle_state_match, state_node);
+ if (!match_id)
+ return -EINVAL;
+
+ err = of_property_read_u32(state_node, "entry-latency-us",
+ &entry_latency);
+ if (err) {
+ pr_debug(" * %s missing entry-latency-us property\n",
+ state_node->full_name);
+ return -EINVAL;
+ }
+
+ err = of_property_read_u32(state_node, "exit-latency-us",
+ &exit_latency);
+ if (err) {
+ pr_debug(" * %s missing exit-latency-us property\n",
+ state_node->full_name);
+ return -EINVAL;
+ }
+
+ err = of_property_read_u32(state_node, "min-residency-us", &residency);
+ if (!err)
+ genpd_state->residency_ns = 1000 * residency;
+
+ genpd_state->power_on_latency_ns = 1000 * exit_latency;
+ genpd_state->power_off_latency_ns = 1000 * entry_latency;
+
+ return 0;
+}
+
+/**
+ * of_genpd_parse_idle_states: Return array of idle states for the genpd.
+ *
+ * @dn: The genpd device node
+ * @states: The pointer to which the state array will be saved.
+ * @n: The count of elements in the array returned from this function.
+ *
+ * Returns the device states parsed from the OF node. The memory for the states
+ * is allocated by this function and is the responsibility of the caller to
+ * free the memory after use.
+ */
+int of_genpd_parse_idle_states(struct device_node *dn,
+ struct genpd_power_state **states, int *n)
+{
+ struct genpd_power_state *st;
+ struct device_node *np;
+ int i = 0;
+ int err, ret;
+ int count;
+ struct of_phandle_iterator it;
+
+ count = of_count_phandle_with_args(dn, "domain-idle-states", NULL);
+
+ st = kcalloc(count, sizeof(*st), GFP_KERNEL);
+ if (!st)
+ return -ENOMEM;
+
+ /* Loop over the phandles until all the requested entry is found */
+ of_for_each_phandle(&it, err, dn, "domain-idle-states", NULL, 0) {
+ np = of_node_get(it.node);
+ ret = genpd_parse_state(&st[i++], np);
+ if (ret) {
+ pr_err
+ ("Parsing idle state node %s failed with err %d\n",
+ np->full_name, ret);
+ of_node_put(np);
+ goto fail;
+ }
+ of_node_put(np);
+ }
+
+ *n = count;
+ *states = st;
+
+ return 0;
+fail:
+ kfree(st);
+ return ret;
+}
+EXPORT_SYMBOL(of_genpd_parse_idle_states);
+
#endif /* CONFIG_PM_GENERIC_DOMAINS_OF */
diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h
index f4492eb..b489496 100644
--- a/include/linux/pm_domain.h
+++ b/include/linux/pm_domain.h
@@ -205,6 +205,8 @@ extern int of_genpd_add_device(struct of_phandle_args *args,
extern int of_genpd_add_subdomain(struct of_phandle_args *parent,
struct of_phandle_args *new_subdomain);
extern struct generic_pm_domain *of_genpd_remove_last(struct device_node *np);
+extern int of_genpd_parse_idle_states(struct device_node *dn,
+ struct genpd_power_state **states, int *n);
int genpd_dev_pm_attach(struct device *dev);
#else /* !CONFIG_PM_GENERIC_DOMAINS_OF */
@@ -234,6 +236,12 @@ static inline int of_genpd_add_subdomain(struct of_phandle_args *parent,
return -ENODEV;
}
+static inline int of_genpd_parse_idle_states(struct device_node *dn,
+ struct genpd_power_state **states, int *n)
+{
+ return -ENODEV;
+}
+
static inline int genpd_dev_pm_attach(struct device *dev)
{
return -ENODEV;
--
2.7.4
^ permalink raw reply related
* [PATCH v2 2/8] PM / Domain: Add residency property to genpd states
From: Lina Iyer @ 2016-10-07 22:36 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1475879821-8035-1-git-send-email-lina.iyer@linaro.org>
Residency of a domain's idle state indicates that the minimum idle time
for the domain's idle state to be beneficial for power. Add the
parameter to the state node. Future patches, will use the residency
value in the genpd governor to determine if it is worth while to enter
an idle state.
Signed-off-by: Lina Iyer <lina.iyer@linaro.org>
Acked-by: Ulf Hansson <ulf.hansson@linaro.org>
---
include/linux/pm_domain.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h
index de1d8f3..f4492eb 100644
--- a/include/linux/pm_domain.h
+++ b/include/linux/pm_domain.h
@@ -38,6 +38,7 @@ struct gpd_dev_ops {
struct genpd_power_state {
s64 power_off_latency_ns;
s64 power_on_latency_ns;
+ s64 residency_ns;
};
struct generic_pm_domain {
--
2.7.4
^ permalink raw reply related
* [PATCH v2 1/8] PM / Domains: Make genpd state allocation dynamic
From: Lina Iyer @ 2016-10-07 22:36 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1475879821-8035-1-git-send-email-lina.iyer@linaro.org>
Allow PM Domain states to be defined dynamically by the drivers. This
removes the limitation on the maximum number of states possible for a
domain.
Cc: Axel Haslam <ahaslam+renesas@baylibre.com>
Suggested-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Lina Iyer <lina.iyer@linaro.org>
---
arch/arm/mach-imx/gpc.c | 17 ++++++++++-------
drivers/base/power/domain.c | 36 ++++++++++++++++++++++++------------
include/linux/pm_domain.h | 5 ++---
3 files changed, 36 insertions(+), 22 deletions(-)
diff --git a/arch/arm/mach-imx/gpc.c b/arch/arm/mach-imx/gpc.c
index 0df062d..57a410b 100644
--- a/arch/arm/mach-imx/gpc.c
+++ b/arch/arm/mach-imx/gpc.c
@@ -380,13 +380,6 @@ static struct pu_domain imx6q_pu_domain = {
.name = "PU",
.power_off = imx6q_pm_pu_power_off,
.power_on = imx6q_pm_pu_power_on,
- .states = {
- [0] = {
- .power_off_latency_ns = 25000,
- .power_on_latency_ns = 2000000,
- },
- },
- .state_count = 1,
},
};
@@ -430,6 +423,16 @@ static int imx_gpc_genpd_init(struct device *dev, struct regulator *pu_reg)
if (!IS_ENABLED(CONFIG_PM_GENERIC_DOMAINS))
return 0;
+ imx6q_pu_domain.base.states = devm_kzalloc(dev,
+ sizeof(*imx6q_pu_domain.base.states),
+ GFP_KERNEL);
+ if (!imx6q_pu_domain.base.states)
+ return -ENOMEM;
+
+ imx6q_pu_domain.base.states[0].power_off_latency_ns = 25000;
+ imx6q_pu_domain.base.states[0].power_on_latency_ns = 2000000;
+ imx6q_pu_domain.base.state_count = 1;
+
pm_genpd_init(&imx6q_pu_domain.base, NULL, false);
return of_genpd_add_provider_onecell(dev->of_node,
&imx_gpc_onecell_data);
diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
index e023066..4e87170 100644
--- a/drivers/base/power/domain.c
+++ b/drivers/base/power/domain.c
@@ -1282,6 +1282,21 @@ out:
}
EXPORT_SYMBOL_GPL(pm_genpd_remove_subdomain);
+static int genpd_set_default_power_state(struct generic_pm_domain *genpd)
+{
+ struct genpd_power_state *state;
+
+ state = kzalloc(sizeof(*state), GFP_KERNEL);
+ if (!state)
+ return -ENOMEM;
+
+ genpd->states = state;
+ genpd->state_count = 1;
+ genpd->free = state;
+
+ return 0;
+}
+
/**
* pm_genpd_init - Initialize a generic I/O PM domain object.
* @genpd: PM domain object to initialize.
@@ -1293,6 +1308,8 @@ EXPORT_SYMBOL_GPL(pm_genpd_remove_subdomain);
int pm_genpd_init(struct generic_pm_domain *genpd,
struct dev_power_governor *gov, bool is_off)
{
+ int ret;
+
if (IS_ERR_OR_NULL(genpd))
return -EINVAL;
@@ -1325,19 +1342,12 @@ int pm_genpd_init(struct generic_pm_domain *genpd,
genpd->dev_ops.start = pm_clk_resume;
}
- if (genpd->state_idx >= GENPD_MAX_NUM_STATES) {
- pr_warn("Initial state index out of bounds.\n");
- genpd->state_idx = GENPD_MAX_NUM_STATES - 1;
- }
-
- if (genpd->state_count > GENPD_MAX_NUM_STATES) {
- pr_warn("Limiting states to %d\n", GENPD_MAX_NUM_STATES);
- genpd->state_count = GENPD_MAX_NUM_STATES;
- }
-
/* Use only one "off" state if there were no states declared */
- if (genpd->state_count == 0)
- genpd->state_count = 1;
+ if (genpd->state_count == 0) {
+ ret = genpd_set_default_power_state(genpd);
+ if (ret)
+ return ret;
+ }
mutex_lock(&gpd_list_lock);
list_add(&genpd->gpd_list_node, &gpd_list);
@@ -1374,6 +1384,8 @@ static int genpd_remove(struct generic_pm_domain *genpd)
kfree(link);
}
+ kfree(genpd->free);
+
list_del(&genpd->gpd_list_node);
mutex_unlock(&genpd->lock);
cancel_work_sync(&genpd->power_off_work);
diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h
index a09fe5c..de1d8f3 100644
--- a/include/linux/pm_domain.h
+++ b/include/linux/pm_domain.h
@@ -19,8 +19,6 @@
/* Defines used for the flags field in the struct generic_pm_domain */
#define GENPD_FLAG_PM_CLK (1U << 0) /* PM domain uses PM clk */
-#define GENPD_MAX_NUM_STATES 8 /* Number of possible low power states */
-
enum gpd_status {
GPD_STATE_ACTIVE = 0, /* PM domain is active */
GPD_STATE_POWER_OFF, /* PM domain is off */
@@ -70,9 +68,10 @@ struct generic_pm_domain {
void (*detach_dev)(struct generic_pm_domain *domain,
struct device *dev);
unsigned int flags; /* Bit field of configs for genpd */
- struct genpd_power_state states[GENPD_MAX_NUM_STATES];
+ struct genpd_power_state *states;
unsigned int state_count; /* number of states */
unsigned int state_idx; /* state that genpd will go to when off */
+ void *free; /* Free the state that was allocated for default */
};
--
2.7.4
^ permalink raw reply related
* [PATCH v2 0/8] PM / Domains: DT support for domain idle states & atomic PM domains
From: Lina Iyer @ 2016-10-07 22:36 UTC (permalink / raw)
To: linux-arm-kernel
Hi all,
Changes since v1 [2] -
- Addressed review comments from v1.
- Fixes around dynamic allocation of genpd states
- Used OF method for iterating phandles
- Updated documentation, examples
- Rename state variable (provider -> fwnode)
- The series is available at [3].
The changes from [1] are -
- Allocating memory for domain idle states dynamically
- Conform to naming conventions for internal and exported genpd functions
- DT binding example for domain-idle-state
- Use fwnode instead of of_node
- Handle atomic case for removal of PM Domain
- Rebase on top of Rafael's pm/genpd tree
Thanks,
Lina
Lina Iyer (8):
PM / Domains: Make genpd state allocation dynamic
PM / Domain: Add residency property to genpd states
PM / Domains: Allow domain power states to be read from DT
PM / Domains: Save the fwnode in genpd_power_state
dt/bindings: Update binding for PM domain idle states
PM / Domains: Abstract genpd locking
PM / Domains: Support IRQ safe PM domains
PM / doc: Update device documentation for devices in IRQ safe PM
domains
.../devicetree/bindings/power/power_domain.txt | 38 +++
Documentation/power/devices.txt | 9 +-
arch/arm/mach-imx/gpc.c | 17 +-
drivers/base/power/domain.c | 360 +++++++++++++++++----
include/linux/pm_domain.h | 28 +-
5 files changed, 380 insertions(+), 72 deletions(-)
--
2.7.4
[1]. https://www.spinics.net/lists/arm-kernel/msg526814.html
[2]. http://www.spinics.net/lists/arm-kernel/msg535106.html
[3]. https://git.linaro.org/people/lina.iyer/linux-next.git/shortlog/refs/heads/genpd-v2
^ permalink raw reply
* [PATCH v4] Adding missing features of Coresight PTM components
From: Mathieu Poirier @ 2016-10-07 21:44 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <0b570076-08cb-c63a-7240-8c81d34fc383@centralesupelec.fr>
On 7 October 2016 at 06:16, Muhammad Abdul WAHAB
<muhammadabdul.wahab@centralesupelec.fr> wrote:
> In the current driver for Coresight components, two features of PTM
> components are missing:
>
> 1. Branch Broadcasting (present also in ETM but called Branch Output)
> 2. Return Stack (only present in PTM v1.0 and PTMv1.1)
>
> These features can be added simply to the code using `mode` field of
> `etm_config` struct.
>
> 1. **Branch Broadcast** : The branch broadcast feature is present in ETM
> components as well and is called Branch output. It allows to retrieve
> addresses for direct branch addresses alongside the indirect branch
> addresses. For example, it could be useful in cases when tracing without
> source code.
> 2. **Return Stack** : The return stack option allows to retrieve the return
> addresses of function calls. It can be useful to avoid CRA
> (Code Reuse Attacks) by keeping a shadowstack.
>
> Signed-off-by: Muhammad Abdul Wahab <muhammadabdul.wahab@centralesupelec.fr>
> ---
> change(s) in v4 :
> - syntax error correction (sorry did not compile after 1st version
> but did compile it before sending it this time)
>
> drivers/hwtracing/coresight/coresight-etm.h | 5 +++++
> drivers/hwtracing/coresight/coresight-etm3x-sysfs.c | 10 ++++++++++
> 2 files changed, 15 insertions(+)
>
> diff --git a/drivers/hwtracing/coresight/coresight-etm.h
> b/drivers/hwtracing/coresight/coresight-etm.h
> index 4a18ee4..ad063d7 100644
> --- a/drivers/hwtracing/coresight/coresight-etm.h
> +++ b/drivers/hwtracing/coresight/coresight-etm.h
> @@ -89,11 +89,13 @@
> /* ETMCR - 0x00 */
> #define ETMCR_PWD_DWN BIT(0)
> #define ETMCR_STALL_MODE BIT(7)
> +#define ETMCR_BRANCH_BROADCAST BIT(8)
> #define ETMCR_ETM_PRG BIT(10)
> #define ETMCR_ETM_EN BIT(11)
> #define ETMCR_CYC_ACC BIT(12)
> #define ETMCR_CTXID_SIZE (BIT(14)|BIT(15))
> #define ETMCR_TIMESTAMP_EN BIT(28)
> +#define ETMCR_RETURN_STACK BIT(29)
> /* ETMCCR - 0x04 */
> #define ETMCCR_FIFOFULL BIT(23)
> /* ETMPDCR - 0x310 */
> @@ -110,8 +112,11 @@
> #define ETM_MODE_STALL BIT(2)
> #define ETM_MODE_TIMESTAMP BIT(3)
> #define ETM_MODE_CTXID BIT(4)
> +#define ETM_MODE_BBROAD BIT(5)
> +#define ETM_MODE_RET_STACK BIT(6)
> #define ETM_MODE_ALL (ETM_MODE_EXCLUDE | ETM_MODE_CYCACC | \
> ETM_MODE_STALL | ETM_MODE_TIMESTAMP | \
> + ETM_MODE_BBROAD | ETM_MODE_RET_STACK | \
> ETM_MODE_CTXID | ETM_MODE_EXCL_KERN | \
> ETM_MODE_EXCL_USER)
>
> diff --git a/drivers/hwtracing/coresight/coresight-etm3x-sysfs.c
> b/drivers/hwtracing/coresight/coresight-etm3x-sysfs.c
> index e9b0719..7308304 100644
> --- a/drivers/hwtracing/coresight/coresight-etm3x-sysfs.c
> +++ b/drivers/hwtracing/coresight/coresight-etm3x-sysfs.c
> @@ -164,6 +164,16 @@ static ssize_t mode_store(struct device *dev,
> else
> config->ctrl &= ~ETMCR_CTXID_SIZE;
>
> + if (config->mode & ETM_MODE_BBROAD)
> + config->ctrl |= ETMCR_BRANCH_BROADCAST;
> + else
> + config->ctrl &= ~ETMCR_BRANCH_BROADCAST;
> +
> + if (config->mode & ETM_MODE_RET_STACK)
> + config->ctrl |= ETMCR_RETURN_STACK;
> + else
> + config->ctrl &= ~ETMCR_RETURN_STACK;
> +
> if (config->mode & (ETM_MODE_EXCL_KERN | ETM_MODE_EXCL_USER))
> etm_config_trace_mode(config);
Applied.
Thanks,
Mathieu
>
> --
> 1.9.1
^ permalink raw reply
* [PATCH V3 09/10] trace, ras: add ARM processor error trace event
From: Steven Rostedt @ 2016-10-07 21:39 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1475875882-2604-10-git-send-email-tbaicar@codeaurora.org>
On Fri, 7 Oct 2016 15:31:21 -0600
Tyler Baicar <tbaicar@codeaurora.org> wrote:
> Currently there are trace events for the various RAS
> errors with the exception of ARM processor type errors.
> Add a new trace event for such errors so that the user
> will know when they occur. These trace events are
> consistent with the ARM processor error section type
> defined in UEFI 2.6 spec section N.2.4.4.
>
> Signed-off-by: Tyler Baicar <tbaicar@codeaurora.org>
> ---
> drivers/firmware/efi/cper.c | 9 ++++++
> drivers/ras/ras.c | 1 +
> include/ras/ras_event.h | 67 +++++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 77 insertions(+)
>
> diff --git a/drivers/firmware/efi/cper.c b/drivers/firmware/efi/cper.c
> index f9ffba6..21b8a6f 100644
> --- a/drivers/firmware/efi/cper.c
> +++ b/drivers/firmware/efi/cper.c
> @@ -34,6 +34,7 @@
> #include <linux/aer.h>
> #include <linux/printk.h>
> #include <linux/bcd.h>
> +#include <ras/ras_event.h>
>
> #define INDENT_SP " "
>
> @@ -256,6 +257,14 @@ static void cper_print_proc_armv8(const char *pfx,
> CPER_ARMV8_INFO_VALID_PHYSICAL_ADDR)
> printk("%sphysical fault address: 0x%016llx\n",
> newpfx, err_info->physical_fault_addr);
> + trace_arm_event(proc->affinity_level, proc->mpidr, proc->midr,
> + proc->running_state, proc->psci_state,
> + err_info->version, err_info->type,
> + err_info->multiple_error,
> + err_info->validation_bits,
> + err_info->error_info,
> + err_info->virt_fault_addr,
> + err_info->physical_fault_addr);
Why waste all the effort into passing each individual field. Why not
just pass the structure in and sort it out in the TP_fast_assign()?
> err_info += 1;
> }
>
> diff --git a/drivers/ras/ras.c b/drivers/ras/ras.c
> index fb2500b..8ba5a94 100644
> --- a/drivers/ras/ras.c
> +++ b/drivers/ras/ras.c
> @@ -28,3 +28,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(extlog_mem_event);
> #endif
> EXPORT_TRACEPOINT_SYMBOL_GPL(mc_event);
> EXPORT_TRACEPOINT_SYMBOL_GPL(unknown_sec_event);
> +EXPORT_TRACEPOINT_SYMBOL_GPL(arm_event);
> diff --git a/include/ras/ras_event.h b/include/ras/ras_event.h
> index 5861b6f..eb2719a 100644
> --- a/include/ras/ras_event.h
> +++ b/include/ras/ras_event.h
> @@ -162,6 +162,73 @@ TRACE_EVENT(mc_event,
> );
>
> /*
> + * ARM Processor Events Report
> + *
> + * This event is generated when hardware detects an ARM processor error
> + * has occurred. UEFI 2.6 spec section N.2.4.4.
> + */
> +TRACE_EVENT(arm_event,
> +
> + TP_PROTO(const u8 affinity,
> + const u64 mpidr,
> + const u64 midr,
> + const u32 running_state,
> + const u32 psci_state,
> + const u8 version,
> + const u8 type,
> + const u16 err_count,
> + const u8 flags,
> + const u64 info,
> + const u64 virt_fault_addr,
> + const u64 phys_fault_addr),
> +
> + TP_ARGS(affinity, mpidr, midr, running_state, psci_state,
> + version, type, err_count, flags, info, virt_fault_addr,
> + phys_fault_addr),
> +
> + TP_STRUCT__entry(
> + __field(u8, affinity)
> + __field(u64, mpidr)
> + __field(u64, midr)
> + __field(u32, running_state)
> + __field(u32, psci_state)
> + __field(u8, version)
> + __field(u8, type)
> + __field(u16, err_count)
> + __field(u8, flags)
> + __field(u64, info)
> + __field(u64, virt_fault_addr)
> + __field(u64, phys_fault_addr)
The above creates a structure with lots of holes in it. Pack it better.
You want something like:
__field(u64, mpidr)
__field(u64, midr)
__field(u64, info)
__field(u64, virt_fault_addr)
__field(u64, phys_fault_addr)
__field(u32, running_state)
__field(u32, psci_state)
__field(u16, err_count)
__field(u8, affinity)
__field(u8, version)
__field(u8, type)
__field(u8, flags)
The above is a total of 54 bytes. Your original was at a minimum, 64
bytes.
-- Steve
> + ),
> +
> + TP_fast_assign(
> + __entry->affinity = affinity;
> + __entry->mpidr = mpidr;
> + __entry->midr = midr;
> + __entry->running_state = running_state;
> + __entry->psci_state = psci_state;
> + __entry->version = version;
> + __entry->type = type;
> + __entry->err_count = err_count;
> + __entry->flags = flags;
> + __entry->info = info;
> + __entry->virt_fault_addr = virt_fault_addr;
> + __entry->phys_fault_addr = phys_fault_addr;
> + ),
> +
> + TP_printk("affinity level: %d; MPIDR: %016llx; MIDR: %016llx; "
> + "running state: %d; PSCI state: %d; version: %d; type: %d; "
> + "error count: 0x%04x; flags: 0x%02x; info: %016llx; "
> + "virtual fault address: %016llx; "
> + "physical fault address: %016llx",
> + __entry->affinity, __entry->mpidr, __entry->midr,
> + __entry->running_state, __entry->psci_state, __entry->version,
> + __entry->type, __entry->err_count, __entry->flags,
> + __entry->info, __entry->virt_fault_addr,
> + __entry->phys_fault_addr)
> +);
> +
> +/*
> * Unknown Section Report
> *
> * This event is generated when hardware detected a hardware
^ permalink raw reply
* [PATCH V3 10/10] arm64: KVM: add guest SEA support
From: Tyler Baicar @ 2016-10-07 21:31 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1475875882-2604-1-git-send-email-tbaicar@codeaurora.org>
Currently external aborts are unsupported by the guest abort
handling. Add handling for SEAs so that the host kernel reports
SEAs which occur in the guest kernel.
Signed-off-by: Tyler Baicar <tbaicar@codeaurora.org>
---
arch/arm/include/asm/kvm_arm.h | 1 +
arch/arm/include/asm/system_misc.h | 5 +++++
arch/arm/kvm/mmu.c | 15 +++++++++++++--
arch/arm64/include/asm/kvm_arm.h | 1 +
arch/arm64/include/asm/system_misc.h | 2 ++
arch/arm64/mm/fault.c | 13 +++++++++++++
6 files changed, 35 insertions(+), 2 deletions(-)
diff --git a/arch/arm/include/asm/kvm_arm.h b/arch/arm/include/asm/kvm_arm.h
index e22089f..33a77509 100644
--- a/arch/arm/include/asm/kvm_arm.h
+++ b/arch/arm/include/asm/kvm_arm.h
@@ -187,6 +187,7 @@
#define FSC_FAULT (0x04)
#define FSC_ACCESS (0x08)
#define FSC_PERM (0x0c)
+#define FSC_EXTABT (0x10)
/* Hyp Prefetch Fault Address Register (HPFAR/HDFAR) */
#define HPFAR_MASK (~0xf)
diff --git a/arch/arm/include/asm/system_misc.h b/arch/arm/include/asm/system_misc.h
index a3d61ad..86e1faa 100644
--- a/arch/arm/include/asm/system_misc.h
+++ b/arch/arm/include/asm/system_misc.h
@@ -24,4 +24,9 @@ extern unsigned int user_debug;
#endif /* !__ASSEMBLY__ */
+inline int handle_guest_sea(unsigned long addr, unsigned int esr)
+{
+ return -1;
+}
+
#endif /* __ASM_ARM_SYSTEM_MISC_H */
diff --git a/arch/arm/kvm/mmu.c b/arch/arm/kvm/mmu.c
index e9a5c0e..24cde84 100644
--- a/arch/arm/kvm/mmu.c
+++ b/arch/arm/kvm/mmu.c
@@ -29,6 +29,7 @@
#include <asm/kvm_asm.h>
#include <asm/kvm_emulate.h>
#include <asm/virt.h>
+#include <asm/system_misc.h>
#include "trace.h"
@@ -1441,8 +1442,18 @@ int kvm_handle_guest_abort(struct kvm_vcpu *vcpu, struct kvm_run *run)
/* Check the stage-2 fault is trans. fault or write fault */
fault_status = kvm_vcpu_trap_get_fault_type(vcpu);
- if (fault_status != FSC_FAULT && fault_status != FSC_PERM &&
- fault_status != FSC_ACCESS) {
+
+ if (fault_status == FSC_EXTABT) {
+ if(handle_guest_sea((unsigned long)fault_ipa,
+ kvm_vcpu_get_hsr(vcpu))) {
+ kvm_err("Failed to handle guest SEA, FSC: EC=%#x xFSC=%#lx ESR_EL2=%#lx\n",
+ kvm_vcpu_trap_get_class(vcpu),
+ (unsigned long)kvm_vcpu_trap_get_fault(vcpu),
+ (unsigned long)kvm_vcpu_get_hsr(vcpu));
+ return -EFAULT;
+ }
+ } else if (fault_status != FSC_FAULT && fault_status != FSC_PERM &&
+ fault_status != FSC_ACCESS) {
kvm_err("Unsupported FSC: EC=%#x xFSC=%#lx ESR_EL2=%#lx\n",
kvm_vcpu_trap_get_class(vcpu),
(unsigned long)kvm_vcpu_trap_get_fault(vcpu),
diff --git a/arch/arm64/include/asm/kvm_arm.h b/arch/arm64/include/asm/kvm_arm.h
index 4b5c977..be0efb6 100644
--- a/arch/arm64/include/asm/kvm_arm.h
+++ b/arch/arm64/include/asm/kvm_arm.h
@@ -201,6 +201,7 @@
#define FSC_FAULT ESR_ELx_FSC_FAULT
#define FSC_ACCESS ESR_ELx_FSC_ACCESS
#define FSC_PERM ESR_ELx_FSC_PERM
+#define FSC_EXTABT ESR_ELx_FSC_EXTABT
/* Hyp Prefetch Fault Address Register (HPFAR/HDFAR) */
#define HPFAR_MASK (~UL(0xf))
diff --git a/arch/arm64/include/asm/system_misc.h b/arch/arm64/include/asm/system_misc.h
index 90daf4a..8522fff 100644
--- a/arch/arm64/include/asm/system_misc.h
+++ b/arch/arm64/include/asm/system_misc.h
@@ -77,4 +77,6 @@ extern void (*arm_pm_restart)(enum reboot_mode reboot_mode, const char *cmd);
int sea_register_handler_chain(struct notifier_block *nb);
void sea_unregister_handler_chain(struct notifier_block *nb);
+int handle_guest_sea(unsigned long addr, unsigned int esr);
+
#endif /* __ASM_SYSTEM_MISC_H */
diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c
index 81cb7ad..d714432 100644
--- a/arch/arm64/mm/fault.c
+++ b/arch/arm64/mm/fault.c
@@ -597,6 +597,19 @@ static const char *fault_name(unsigned int esr)
}
/*
+ * Handle Synchronous External Aborts that occur in a guest kernel.
+ */
+int handle_guest_sea(unsigned long addr, unsigned int esr)
+{
+ atomic_notifier_call_chain(&sea_handler_chain, 0, NULL);
+
+ pr_err("Synchronous External Abort: %s (0x%08x) at 0x%016lx\n",
+ fault_name(esr), esr, addr);
+
+ return 0;
+}
+
+/*
* Dispatch a data abort to the relevant handler.
*/
asmlinkage void __exception do_mem_abort(unsigned long addr, unsigned int esr,
--
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project.
^ permalink raw reply related
* [PATCH V3 09/10] trace, ras: add ARM processor error trace event
From: Tyler Baicar @ 2016-10-07 21:31 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1475875882-2604-1-git-send-email-tbaicar@codeaurora.org>
Currently there are trace events for the various RAS
errors with the exception of ARM processor type errors.
Add a new trace event for such errors so that the user
will know when they occur. These trace events are
consistent with the ARM processor error section type
defined in UEFI 2.6 spec section N.2.4.4.
Signed-off-by: Tyler Baicar <tbaicar@codeaurora.org>
---
drivers/firmware/efi/cper.c | 9 ++++++
drivers/ras/ras.c | 1 +
include/ras/ras_event.h | 67 +++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 77 insertions(+)
diff --git a/drivers/firmware/efi/cper.c b/drivers/firmware/efi/cper.c
index f9ffba6..21b8a6f 100644
--- a/drivers/firmware/efi/cper.c
+++ b/drivers/firmware/efi/cper.c
@@ -34,6 +34,7 @@
#include <linux/aer.h>
#include <linux/printk.h>
#include <linux/bcd.h>
+#include <ras/ras_event.h>
#define INDENT_SP " "
@@ -256,6 +257,14 @@ static void cper_print_proc_armv8(const char *pfx,
CPER_ARMV8_INFO_VALID_PHYSICAL_ADDR)
printk("%sphysical fault address: 0x%016llx\n",
newpfx, err_info->physical_fault_addr);
+ trace_arm_event(proc->affinity_level, proc->mpidr, proc->midr,
+ proc->running_state, proc->psci_state,
+ err_info->version, err_info->type,
+ err_info->multiple_error,
+ err_info->validation_bits,
+ err_info->error_info,
+ err_info->virt_fault_addr,
+ err_info->physical_fault_addr);
err_info += 1;
}
diff --git a/drivers/ras/ras.c b/drivers/ras/ras.c
index fb2500b..8ba5a94 100644
--- a/drivers/ras/ras.c
+++ b/drivers/ras/ras.c
@@ -28,3 +28,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(extlog_mem_event);
#endif
EXPORT_TRACEPOINT_SYMBOL_GPL(mc_event);
EXPORT_TRACEPOINT_SYMBOL_GPL(unknown_sec_event);
+EXPORT_TRACEPOINT_SYMBOL_GPL(arm_event);
diff --git a/include/ras/ras_event.h b/include/ras/ras_event.h
index 5861b6f..eb2719a 100644
--- a/include/ras/ras_event.h
+++ b/include/ras/ras_event.h
@@ -162,6 +162,73 @@ TRACE_EVENT(mc_event,
);
/*
+ * ARM Processor Events Report
+ *
+ * This event is generated when hardware detects an ARM processor error
+ * has occurred. UEFI 2.6 spec section N.2.4.4.
+ */
+TRACE_EVENT(arm_event,
+
+ TP_PROTO(const u8 affinity,
+ const u64 mpidr,
+ const u64 midr,
+ const u32 running_state,
+ const u32 psci_state,
+ const u8 version,
+ const u8 type,
+ const u16 err_count,
+ const u8 flags,
+ const u64 info,
+ const u64 virt_fault_addr,
+ const u64 phys_fault_addr),
+
+ TP_ARGS(affinity, mpidr, midr, running_state, psci_state,
+ version, type, err_count, flags, info, virt_fault_addr,
+ phys_fault_addr),
+
+ TP_STRUCT__entry(
+ __field(u8, affinity)
+ __field(u64, mpidr)
+ __field(u64, midr)
+ __field(u32, running_state)
+ __field(u32, psci_state)
+ __field(u8, version)
+ __field(u8, type)
+ __field(u16, err_count)
+ __field(u8, flags)
+ __field(u64, info)
+ __field(u64, virt_fault_addr)
+ __field(u64, phys_fault_addr)
+ ),
+
+ TP_fast_assign(
+ __entry->affinity = affinity;
+ __entry->mpidr = mpidr;
+ __entry->midr = midr;
+ __entry->running_state = running_state;
+ __entry->psci_state = psci_state;
+ __entry->version = version;
+ __entry->type = type;
+ __entry->err_count = err_count;
+ __entry->flags = flags;
+ __entry->info = info;
+ __entry->virt_fault_addr = virt_fault_addr;
+ __entry->phys_fault_addr = phys_fault_addr;
+ ),
+
+ TP_printk("affinity level: %d; MPIDR: %016llx; MIDR: %016llx; "
+ "running state: %d; PSCI state: %d; version: %d; type: %d; "
+ "error count: 0x%04x; flags: 0x%02x; info: %016llx; "
+ "virtual fault address: %016llx; "
+ "physical fault address: %016llx",
+ __entry->affinity, __entry->mpidr, __entry->midr,
+ __entry->running_state, __entry->psci_state, __entry->version,
+ __entry->type, __entry->err_count, __entry->flags,
+ __entry->info, __entry->virt_fault_addr,
+ __entry->phys_fault_addr)
+);
+
+/*
* Unknown Section Report
*
* This event is generated when hardware detected a hardware
--
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project.
^ permalink raw reply related
* [PATCH V3 08/10] ras: acpi / apei: generate trace event for unrecognized CPER section
From: Tyler Baicar @ 2016-10-07 21:31 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1475875882-2604-1-git-send-email-tbaicar@codeaurora.org>
UEFI spec allows for non-standard section in Common Platform Error
Record. This is defined in section N.2.3 of UEFI version 2.5.
Currently if the CPER section's type (UUID) does not match with
any section type that the kernel knows how to parse, trace event
is not generated for such section. And thus user is not able to know
happening of such hardware error, including error record of
non-standard section.
This commit generates a trace event which contains raw error data
for unrecognized CPER section.
Signed-off-by: Jonathan (Zhixiong) Zhang <zjzhang@codeaurora.org>
Signed-off-by: Tyler Baicar <tbaicar@codeaurora.org>
---
drivers/acpi/apei/ghes.c | 18 +++++++++++++++++-
drivers/ras/ras.c | 1 +
include/ras/ras_event.h | 45 +++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 63 insertions(+), 1 deletion(-)
diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
index 36894c8..cb4c7f4 100644
--- a/drivers/acpi/apei/ghes.c
+++ b/drivers/acpi/apei/ghes.c
@@ -49,6 +49,7 @@
#include <acpi/ghes.h>
#include <acpi/apei.h>
#include <asm/tlbflush.h>
+#include <ras/ras_event.h>
#ifdef CONFIG_HAVE_ACPI_APEI_SEA
#include <asm/system_misc.h>
@@ -468,12 +469,21 @@ static void ghes_do_proc(struct ghes *ghes,
int sev, sec_sev;
struct acpi_hest_generic_data *gdata;
uuid_le sec_type;
+ uuid_le *fru_id;
+ char *fru_text = "";
sev = ghes_severity(estatus->error_severity);
apei_estatus_for_each_section(estatus, gdata) {
sec_sev = ghes_severity(gdata->error_severity);
sec_type = *(uuid_le *)gdata->section_type;
+ if (gdata->validation_bits & CPER_SEC_VALID_FRU_ID)
+ fru_id = (uuid_le *)gdata->fru_id;
+ else
+ fru_id = &NULL_UUID_LE;
+ if (gdata->validation_bits & CPER_SEC_VALID_FRU_TEXT)
+ fru_text = gdata->fru_text;
+
if (!uuid_le_cmp(sec_type,
CPER_SEC_PLATFORM_MEM)) {
struct cper_sec_mem_err *mem_err;
@@ -485,7 +495,7 @@ static void ghes_do_proc(struct ghes *ghes,
ghes_handle_memory_failure(gdata, sev);
}
#ifdef CONFIG_ACPI_APEI_PCIEAER
- else if (!uuid_le_cmp(*(uuid_le *)gdata->section_type,
+ else if (!uuid_le_cmp(sec_type,
CPER_SEC_PCIE)) {
struct cper_sec_pcie *pcie_err;
@@ -518,6 +528,12 @@ static void ghes_do_proc(struct ghes *ghes,
}
#endif
+ else {
+ void *unknown_err = acpi_hest_generic_data_payload(gdata);
+ trace_unknown_sec_event(&sec_type,
+ fru_id, fru_text, sec_sev,
+ unknown_err, gdata->error_data_length);
+ }
}
}
diff --git a/drivers/ras/ras.c b/drivers/ras/ras.c
index b67dd36..fb2500b 100644
--- a/drivers/ras/ras.c
+++ b/drivers/ras/ras.c
@@ -27,3 +27,4 @@ subsys_initcall(ras_init);
EXPORT_TRACEPOINT_SYMBOL_GPL(extlog_mem_event);
#endif
EXPORT_TRACEPOINT_SYMBOL_GPL(mc_event);
+EXPORT_TRACEPOINT_SYMBOL_GPL(unknown_sec_event);
diff --git a/include/ras/ras_event.h b/include/ras/ras_event.h
index 1791a12..5861b6f 100644
--- a/include/ras/ras_event.h
+++ b/include/ras/ras_event.h
@@ -162,6 +162,51 @@ TRACE_EVENT(mc_event,
);
/*
+ * Unknown Section Report
+ *
+ * This event is generated when hardware detected a hardware
+ * error event, which may be of non-standard section as defined
+ * in UEFI spec appendix "Common Platform Error Record", or may
+ * be of sections for which TRACE_EVENT is not defined.
+ *
+ */
+TRACE_EVENT(unknown_sec_event,
+
+ TP_PROTO(const uuid_le *sec_type,
+ const uuid_le *fru_id,
+ const char *fru_text,
+ const u8 sev,
+ const u8 *err,
+ const u32 len),
+
+ TP_ARGS(sec_type, fru_id, fru_text, sev, err, len),
+
+ TP_STRUCT__entry(
+ __array(char, sec_type, 16)
+ __array(char, fru_id, 16)
+ __string(fru_text, fru_text)
+ __field(u8, sev)
+ __field(u32, len)
+ __dynamic_array(u8, buf, len)
+ ),
+
+ TP_fast_assign(
+ memcpy(__entry->sec_type, sec_type, sizeof(uuid_le));
+ memcpy(__entry->fru_id, fru_id, sizeof(uuid_le));
+ __assign_str(fru_text, fru_text);
+ __entry->sev = sev;
+ __entry->len = len;
+ memcpy(__get_dynamic_array(buf), err, len);
+ ),
+
+ TP_printk("severity: %d; sec type:%pU; FRU: %pU %s; data len:%d; raw data:%s",
+ __entry->sev, __entry->sec_type,
+ __entry->fru_id, __get_str(fru_text),
+ __entry->len,
+ __print_hex(__get_dynamic_array(buf), __entry->len))
+);
+
+/*
* PCIe AER Trace event
*
* These events are generated when hardware detects a corrected or
--
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project.
^ permalink raw reply related
* [PATCH V3 07/10] efi: print unrecognized CPER section
From: Tyler Baicar @ 2016-10-07 21:31 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1475875882-2604-1-git-send-email-tbaicar@codeaurora.org>
UEFI spec allows for non-standard section in Common Platform Error
Record. This is defined in section N.2.3 of UEFI version 2.5.
Currently if the CPER section's type (UUID) does not match with
one of the section types that the kernel knows how to parse, the
section is skipped. Therefore, user is not able to see
such CPER data, for instance, error record of non-standard section.
For above mentioned case, this change prints out the raw data in
hex in dmesg buffer. Data length is taken from Error Data length
field of Generic Error Data Entry.
Following is a sample output from dmesg:
[ 115.771702] {1}[Hardware Error]: Hardware error from APEI Generic Hardware Error Source: 2
[ 115.779042] {1}[Hardware Error]: It has been corrected by h/w and requires no further action
[ 115.787456] {1}[Hardware Error]: event severity: corrected
[ 115.792927] {1}[Hardware Error]: Error 0, type: corrected
[ 115.798415] {1}[Hardware Error]: fru_id: 00000000-0000-0000-0000-000000000000
[ 115.805596] {1}[Hardware Error]: fru_text:
[ 115.816105] {1}[Hardware Error]: section type: d2e2621c-f936-468d-0d84-15a4ed015c8b
[ 115.823880] {1}[Hardware Error]: section length: 88
[ 115.828779] {1}[Hardware Error]: 00000000: 01000001 00000002 5f434345 525f4543
[ 115.836153] {1}[Hardware Error]: 00000010: 0000574d 00000000 00000000 00000000
[ 115.843531] {1}[Hardware Error]: 00000020: 00000000 00000000 00000000 00000000
[ 115.850908] {1}[Hardware Error]: 00000030: 00000000 00000000 00000000 00000000
[ 115.858288] {1}[Hardware Error]: 00000040: fe800000 00000000 00000004 5f434345
[ 115.865665] {1}[Hardware Error]: 00000050: 525f4543 0000574d
Signed-off-by: Jonathan (Zhixiong) Zhang <zjzhang@codeaurora.org>
Signed-off-by: Tyler Baicar <tbaicar@codeaurora.org>
---
drivers/firmware/efi/cper.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/drivers/firmware/efi/cper.c b/drivers/firmware/efi/cper.c
index 2594245..f9ffba6 100644
--- a/drivers/firmware/efi/cper.c
+++ b/drivers/firmware/efi/cper.c
@@ -605,8 +605,16 @@ static void cper_estatus_print_section(
cper_print_proc_armv8(newpfx, armv8_err);
else
goto err_section_too_small;
- } else
- printk("%s""section type: unknown, %pUl\n", newpfx, sec_type);
+ } else {
+ const void *unknown_err;
+
+ unknown_err = acpi_hest_generic_data_payload(gdata);
+ printk("%ssection type: %pUl\n", newpfx, sec_type);
+ printk("%ssection length: %d\n", newpfx,
+ gdata->error_data_length);
+ print_hex_dump(newpfx, "", DUMP_PREFIX_OFFSET, 16, 4,
+ unknown_err, gdata->error_data_length, 0);
+ }
return;
--
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project.
^ permalink raw reply related
* [PATCH V3 06/10] acpi: apei: panic OS with fatal error status block
From: Tyler Baicar @ 2016-10-07 21:31 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1475875882-2604-1-git-send-email-tbaicar@codeaurora.org>
From: "Jonathan (Zhixiong) Zhang" <zjzhang@codeaurora.org>
Even if an error status block's severity is fatal, the kernel does not
honor the severity level and panic.
With the firmware first model, the platform could inform the OS about a
fatal hardware error through the non-NMI GHES notification type. The OS
should panic when a hardware error record is received with this
severity.
Call panic() after CPER data in error status block is printed if
severity is fatal, before each error section is handled.
Signed-off-by: Jonathan (Zhixiong) Zhang <zjzhang@codeaurora.org>
---
drivers/acpi/apei/ghes.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
index 28d5a09..36894c8 100644
--- a/drivers/acpi/apei/ghes.c
+++ b/drivers/acpi/apei/ghes.c
@@ -141,6 +141,8 @@ static unsigned long ghes_estatus_pool_size_request;
static struct ghes_estatus_cache *ghes_estatus_caches[GHES_ESTATUS_CACHES_SIZE];
static atomic_t ghes_estatus_cache_alloced;
+static int ghes_panic_timeout __read_mostly = 30;
+
static int ghes_ioremap_init(void)
{
ghes_ioremap_area = __get_vm_area(PAGE_SIZE * GHES_IOREMAP_PAGES,
@@ -715,6 +717,12 @@ static int ghes_proc(struct ghes *ghes)
if (ghes_print_estatus(NULL, ghes->generic, ghes->estatus))
ghes_estatus_cache_add(ghes->generic, ghes->estatus);
}
+ if (ghes_severity(ghes->estatus->error_severity) >= GHES_SEV_PANIC) {
+ if (panic_timeout == 0)
+ panic_timeout = ghes_panic_timeout;
+ panic("Fatal hardware error!");
+ }
+
ghes_do_proc(ghes, ghes->estatus);
if (ghes->generic_v2) {
@@ -859,8 +867,6 @@ static atomic_t ghes_in_nmi = ATOMIC_INIT(0);
static LIST_HEAD(ghes_nmi);
-static int ghes_panic_timeout __read_mostly = 30;
-
static void ghes_proc_in_irq(struct irq_work *irq_work)
{
struct llist_node *llnode, *next;
--
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project.
^ permalink raw reply related
* [PATCH V3 05/10] acpi: apei: handle SEA notification type for ARMv8
From: Tyler Baicar @ 2016-10-07 21:31 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1475875882-2604-1-git-send-email-tbaicar@codeaurora.org>
ARM APEI extension proposal added SEA (Synchrounous External
Abort) notification type for ARMv8.
Add a new GHES error source handling function for SEA. If an error
source's notification type is SEA, then this function can be registered
into the SEA exception handler. That way GHES will parse and report
SEA exceptions when they occur.
Signed-off-by: Jonathan (Zhixiong) Zhang <zjzhang@codeaurora.org>
Signed-off-by: Tyler Baicar <tbaicar@codeaurora.org>
Signed-off-by: Naveen Kaje <nkaje@codeaurora.org>
---
arch/arm64/Kconfig | 1 +
drivers/acpi/apei/Kconfig | 15 +++++++++
drivers/acpi/apei/ghes.c | 83 +++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 99 insertions(+)
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index b380c87..ae34349 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -53,6 +53,7 @@ config ARM64
select HANDLE_DOMAIN_IRQ
select HARDIRQS_SW_RESEND
select HAVE_ACPI_APEI if (ACPI && EFI)
+ select HAVE_ACPI_APEI_SEA if (ACPI && EFI)
select HAVE_ALIGNED_STRUCT_PAGE if SLUB
select HAVE_ARCH_AUDITSYSCALL
select HAVE_ARCH_BITREVERSE
diff --git a/drivers/acpi/apei/Kconfig b/drivers/acpi/apei/Kconfig
index b0140c8..fb99c1c 100644
--- a/drivers/acpi/apei/Kconfig
+++ b/drivers/acpi/apei/Kconfig
@@ -4,6 +4,21 @@ config HAVE_ACPI_APEI
config HAVE_ACPI_APEI_NMI
bool
+config HAVE_ACPI_APEI_SEA
+ bool "APEI Synchronous External Abort logging/recovering support"
+ depends on ARM64
+ help
+ This option should be enabled if the system supports
+ firmware first handling of SEA (Synchronous External Abort).
+ SEA happens with certain faults of data abort or instruction
+ abort synchronous exceptions on ARMv8 systems. If a system
+ supports firmware first handling of SEA, the platform analyzes
+ and handles hardware error notifications with SEA, and it may then
+ form a HW error record for the OS to parse and handle. This
+ option allows the OS to look for such HW error record, and
+ take appropriate action.
+
config ACPI_APEI
bool "ACPI Platform Error Interface (APEI)"
select MISC_FILESYSTEMS
diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
index c8488f1..28d5a09 100644
--- a/drivers/acpi/apei/ghes.c
+++ b/drivers/acpi/apei/ghes.c
@@ -50,6 +50,10 @@
#include <acpi/apei.h>
#include <asm/tlbflush.h>
+#ifdef CONFIG_HAVE_ACPI_APEI_SEA
+#include <asm/system_misc.h>
+#endif
+
#include "apei-internal.h"
#define GHES_PFX "GHES: "
@@ -779,6 +783,62 @@ static struct notifier_block ghes_notifier_sci = {
.notifier_call = ghes_notify_sci,
};
+#ifdef CONFIG_HAVE_ACPI_APEI_SEA
+static LIST_HEAD(ghes_sea);
+
+static int ghes_notify_sea(struct notifier_block *this,
+ unsigned long event, void *data)
+{
+ struct ghes *ghes;
+ int ret = NOTIFY_DONE;
+
+ rcu_read_lock();
+ list_for_each_entry_rcu(ghes, &ghes_sea, list) {
+ if (!ghes_proc(ghes))
+ ret = NOTIFY_OK;
+ }
+ rcu_read_unlock();
+
+ return ret;
+}
+
+static struct notifier_block ghes_notifier_sea = {
+ .notifier_call = ghes_notify_sea,
+};
+
+static int ghes_sea_add(struct ghes *ghes)
+{
+ mutex_lock(&ghes_list_mutex);
+ if (list_empty(&ghes_sea))
+ sea_register_handler_chain(&ghes_notifier_sea);
+ list_add_rcu(&ghes->list, &ghes_sea);
+ mutex_unlock(&ghes_list_mutex);
+ return 0;
+}
+
+static void ghes_sea_remove(struct ghes *ghes)
+{
+ mutex_lock(&ghes_list_mutex);
+ list_del_rcu(&ghes->list);
+ if (list_empty(&ghes_sea))
+ sea_unregister_handler_chain(&ghes_notifier_sea);
+ mutex_unlock(&ghes_list_mutex);
+}
+#else /* CONFIG_HAVE_ACPI_APEI_SEA */
+static inline int ghes_sea_add(struct ghes *ghes)
+{
+ pr_err(GHES_PFX "ID: %d, trying to add SEA notification which is not supported\n",
+ ghes->generic->header.source_id);
+ return -ENOTSUPP;
+}
+
+static inline void ghes_sea_remove(struct ghes *ghes)
+{
+ pr_err(GHES_PFX "ID: %d, trying to remove SEA notification which is not supported\n",
+ ghes->generic->header.source_id);
+}
+#endif /* CONFIG_HAVE_ACPI_APEI_SEA */
+
#ifdef CONFIG_HAVE_ACPI_APEI_NMI
/*
* printk is not safe in NMI context. So in NMI handler, we allocate
@@ -1023,6 +1083,14 @@ static int ghes_probe(struct platform_device *ghes_dev)
case ACPI_HEST_NOTIFY_EXTERNAL:
case ACPI_HEST_NOTIFY_SCI:
break;
+ case ACPI_HEST_NOTIFY_SEA:
+ if (!IS_ENABLED(CONFIG_HAVE_ACPI_APEI_SEA)) {
+ pr_warn(GHES_PFX "Generic hardware error source: %d notified via SEA is not supported\n",
+ generic->header.source_id);
+ rc = -ENOTSUPP;
+ goto err;
+ }
+ break;
case ACPI_HEST_NOTIFY_NMI:
if (!IS_ENABLED(CONFIG_HAVE_ACPI_APEI_NMI)) {
pr_warn(GHES_PFX "Generic hardware error source: %d notified via NMI interrupt is not supported!\n",
@@ -1034,6 +1102,13 @@ static int ghes_probe(struct platform_device *ghes_dev)
pr_warning(GHES_PFX "Generic hardware error source: %d notified via local interrupt is not supported!\n",
generic->header.source_id);
goto err;
+ case ACPI_HEST_NOTIFY_GPIO:
+ case ACPI_HEST_NOTIFY_SEI:
+ case ACPI_HEST_NOTIFY_GSIV:
+ pr_warn(GHES_PFX "Generic hardware error source: %d notified via notification type %u is not supported\n",
+ generic->header.source_id, generic->header.source_id);
+ rc = -ENOTSUPP;
+ goto err;
default:
pr_warning(FW_WARN GHES_PFX "Unknown notification type: %u for generic hardware error source: %d\n",
generic->notify.type, generic->header.source_id);
@@ -1088,6 +1163,11 @@ static int ghes_probe(struct platform_device *ghes_dev)
list_add_rcu(&ghes->list, &ghes_sci);
mutex_unlock(&ghes_list_mutex);
break;
+ case ACPI_HEST_NOTIFY_SEA:
+ rc = ghes_sea_add(ghes);
+ if (rc)
+ goto err_edac_unreg;
+ break;
case ACPI_HEST_NOTIFY_NMI:
ghes_nmi_add(ghes);
break;
@@ -1130,6 +1210,9 @@ static int ghes_remove(struct platform_device *ghes_dev)
unregister_acpi_hed_notifier(&ghes_notifier_sci);
mutex_unlock(&ghes_list_mutex);
break;
+ case ACPI_HEST_NOTIFY_SEA:
+ ghes_sea_remove(ghes);
+ break;
case ACPI_HEST_NOTIFY_NMI:
ghes_nmi_remove(ghes);
break;
--
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project.
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox