Commit c17dfb01 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc

Pull ARM SoC fixes from Olof Johansson:
 "The first real batch of fixes for this release cycle, so there are a
  few more than usual.

  Most of these are fixes and tweaks to board support (DT bugfixes,
  etc).  I've also picked up a couple of small cleanups that seemed
  innocent enough that there was little reason to wait (const/
  __initconst and Kconfig deps).

  Quite a bit of the changes on OMAP were due to fixes to no longer
  write to rodata from assembly when ARM_KERNMEM_PERMS was enabled, but
  there were also other fixes.

  Kirkwood had a bunch of gpio fixes for some boards.  OMAP had RTC
  fixes on OMAP5, and Nomadik had changes to MMC parameters in DT.

  All in all, mostly the usual mix of various fixes"

* tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (46 commits)
  ARM: multi_v7_defconfig: enable DW_WATCHDOG
  ARM: nomadik: fix up SD/MMC DT settings
  ARM64: tegra: Add chosen node for tegra132 norrin
  ARM: realview: use "depends on" instead of "if" after prompt
  ARM: tango: use "depends on" instead of "if" after prompt
  ARM: tango: use const and __initconst for smp_operations
  ARM: realview: use const and __initconst for smp_operations
  bus: uniphier-system-bus: revive tristate prompt
  arm64: dts: Add missing DMA Abort interrupt to Juno
  bus: vexpress-config: Add missing of_node_put
  ARM: dts: am57xx: sbc-am57x: correct Eth PHY settings
  ARM: dts: am57xx: cl-som-am57x: fix CPSW EMAC pinmux
  ARM: dts: am57xx: sbc-am57x: fix UART3 pinmux
  ARM: dts: am57xx: cl-som-am57x: update SPI Flash frequency
  ARM: dts: am57xx: cl-som-am57x: set HOST mode for USB2
  ARM: dts: am57xx: sbc-am57x: fix SB-SOM EEPROM I2C address
  ARM: dts: LogicPD Torpedo: Revert Duplicative Entries
  ARM: dts: am437x: pixcir_tangoc: use correct flags for irq types
  ARM: dts: am4372: fix irq type for arm twd and global timer
  ARM: dts: at91: sama5d4 xplained: fix phy0 IRQ type
  ...
parents 63fee123 381a65c2
...@@ -439,6 +439,7 @@ mailbox: mailbox@480C8000 { ...@@ -439,6 +439,7 @@ mailbox: mailbox@480C8000 {
ti,mbox-num-users = <4>; ti,mbox-num-users = <4>;
ti,mbox-num-fifos = <8>; ti,mbox-num-fifos = <8>;
mbox_wkupm3: wkup_m3 { mbox_wkupm3: wkup_m3 {
ti,mbox-send-noirq;
ti,mbox-tx = <0 0 0>; ti,mbox-tx = <0 0 0>;
ti,mbox-rx = <0 0 3>; ti,mbox-rx = <0 0 3>;
}; };
......
...@@ -73,7 +73,7 @@ scu: scu@48240000 { ...@@ -73,7 +73,7 @@ scu: scu@48240000 {
global_timer: timer@48240200 { global_timer: timer@48240200 {
compatible = "arm,cortex-a9-global-timer"; compatible = "arm,cortex-a9-global-timer";
reg = <0x48240200 0x100>; reg = <0x48240200 0x100>;
interrupts = <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_PPI 11 IRQ_TYPE_EDGE_RISING>;
interrupt-parent = <&gic>; interrupt-parent = <&gic>;
clocks = <&mpu_periphclk>; clocks = <&mpu_periphclk>;
}; };
...@@ -81,7 +81,7 @@ global_timer: timer@48240200 { ...@@ -81,7 +81,7 @@ global_timer: timer@48240200 {
local_timer: timer@48240600 { local_timer: timer@48240600 {
compatible = "arm,cortex-a9-twd-timer"; compatible = "arm,cortex-a9-twd-timer";
reg = <0x48240600 0x100>; reg = <0x48240600 0x100>;
interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_PPI 13 IRQ_TYPE_EDGE_RISING>;
interrupt-parent = <&gic>; interrupt-parent = <&gic>;
clocks = <&mpu_periphclk>; clocks = <&mpu_periphclk>;
}; };
...@@ -290,6 +290,7 @@ mailbox: mailbox@480C8000 { ...@@ -290,6 +290,7 @@ mailbox: mailbox@480C8000 {
ti,mbox-num-users = <4>; ti,mbox-num-users = <4>;
ti,mbox-num-fifos = <8>; ti,mbox-num-fifos = <8>;
mbox_wkupm3: wkup_m3 { mbox_wkupm3: wkup_m3 {
ti,mbox-send-noirq;
ti,mbox-tx = <0 0 0>; ti,mbox-tx = <0 0 0>;
ti,mbox-rx = <0 0 3>; ti,mbox-rx = <0 0 3>;
}; };
......
...@@ -590,8 +590,6 @@ pixcir_ts@5c { ...@@ -590,8 +590,6 @@ pixcir_ts@5c {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&pixcir_ts_pins>; pinctrl-0 = <&pixcir_ts_pins>;
reg = <0x5c>; reg = <0x5c>;
interrupt-parent = <&gpio3>;
interrupts = <22 0>;
attb-gpio = <&gpio3 22 GPIO_ACTIVE_HIGH>; attb-gpio = <&gpio3 22 GPIO_ACTIVE_HIGH>;
...@@ -599,7 +597,7 @@ pixcir_ts@5c { ...@@ -599,7 +597,7 @@ pixcir_ts@5c {
* 0x264 represents the offset of padconf register of * 0x264 represents the offset of padconf register of
* gpio3_22 from am43xx_pinmux base. * gpio3_22 from am43xx_pinmux base.
*/ */
interrupts-extended = <&gpio3 22 IRQ_TYPE_NONE>, interrupts-extended = <&gpio3 22 IRQ_TYPE_EDGE_FALLING>,
<&am43xx_pinmux 0x264>; <&am43xx_pinmux 0x264>;
interrupt-names = "tsc", "wakeup"; interrupt-names = "tsc", "wakeup";
......
...@@ -491,7 +491,7 @@ pixcir_ts@5c { ...@@ -491,7 +491,7 @@ pixcir_ts@5c {
pinctrl-0 = <&pixcir_ts_pins>; pinctrl-0 = <&pixcir_ts_pins>;
reg = <0x5c>; reg = <0x5c>;
interrupt-parent = <&gpio1>; interrupt-parent = <&gpio1>;
interrupts = <17 0>; interrupts = <17 IRQ_TYPE_EDGE_FALLING>;
attb-gpio = <&gpio1 17 GPIO_ACTIVE_HIGH>; attb-gpio = <&gpio1 17 GPIO_ACTIVE_HIGH>;
......
...@@ -167,7 +167,7 @@ DRA7XX_CORE_IOPAD(0x35b4, PIN_INPUT_PULLDOWN | MUX_MODE3) /* vin2a_d19.rgmii1_rc ...@@ -167,7 +167,7 @@ DRA7XX_CORE_IOPAD(0x35b4, PIN_INPUT_PULLDOWN | MUX_MODE3) /* vin2a_d19.rgmii1_rc
DRA7XX_CORE_IOPAD(0x35b8, PIN_INPUT_PULLDOWN | MUX_MODE3) /* vin2a_d20.rgmii1_rd3 */ DRA7XX_CORE_IOPAD(0x35b8, PIN_INPUT_PULLDOWN | MUX_MODE3) /* vin2a_d20.rgmii1_rd3 */
DRA7XX_CORE_IOPAD(0x35bc, PIN_INPUT_PULLDOWN | MUX_MODE3) /* vin2a_d21.rgmii1_rd2 */ DRA7XX_CORE_IOPAD(0x35bc, PIN_INPUT_PULLDOWN | MUX_MODE3) /* vin2a_d21.rgmii1_rd2 */
DRA7XX_CORE_IOPAD(0x35c0, PIN_INPUT_PULLDOWN | MUX_MODE3) /* vin2a_d22.rgmii1_rd1 */ DRA7XX_CORE_IOPAD(0x35c0, PIN_INPUT_PULLDOWN | MUX_MODE3) /* vin2a_d22.rgmii1_rd1 */
DRA7XX_CORE_IOPAD(0x35c4, PIN_INPUT_PULLUP | MUX_MODE3) /* vin2a_d23.rgmii1_rd0 */ DRA7XX_CORE_IOPAD(0x35c4, PIN_INPUT_PULLDOWN | MUX_MODE3) /* vin2a_d23.rgmii1_rd0 */
>; >;
}; };
...@@ -492,14 +492,14 @@ &qspi { ...@@ -492,14 +492,14 @@ &qspi {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&qspi1_pins>; pinctrl-0 = <&qspi1_pins>;
spi-max-frequency = <20000000>; spi-max-frequency = <48000000>;
spi_flash: spi_flash@0 { spi_flash: spi_flash@0 {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
compatible = "spansion,m25p80", "jedec,spi-nor"; compatible = "spansion,m25p80", "jedec,spi-nor";
reg = <0>; /* CS0 */ reg = <0>; /* CS0 */
spi-max-frequency = <20000000>; spi-max-frequency = <48000000>;
partition@0 { partition@0 {
label = "uboot"; label = "uboot";
...@@ -559,13 +559,13 @@ &mac { ...@@ -559,13 +559,13 @@ &mac {
&cpsw_emac0 { &cpsw_emac0 {
phy_id = <&davinci_mdio>, <0>; phy_id = <&davinci_mdio>, <0>;
phy-mode = "rgmii"; phy-mode = "rgmii-txid";
dual_emac_res_vlan = <0>; dual_emac_res_vlan = <0>;
}; };
&cpsw_emac1 { &cpsw_emac1 {
phy_id = <&davinci_mdio>, <1>; phy_id = <&davinci_mdio>, <1>;
phy-mode = "rgmii"; phy-mode = "rgmii-txid";
dual_emac_res_vlan = <1>; dual_emac_res_vlan = <1>;
}; };
...@@ -588,7 +588,7 @@ &usb1 { ...@@ -588,7 +588,7 @@ &usb1 {
}; };
&usb2 { &usb2 {
dr_mode = "peripheral"; dr_mode = "host";
}; };
&mcasp3 { &mcasp3 {
......
...@@ -25,8 +25,8 @@ aliases { ...@@ -25,8 +25,8 @@ aliases {
&dra7_pmx_core { &dra7_pmx_core {
uart3_pins_default: uart3_pins_default { uart3_pins_default: uart3_pins_default {
pinctrl-single,pins = < pinctrl-single,pins = <
DRA7XX_CORE_IOPAD(0x37f8, PIN_INPUT_SLEW | MUX_MODE2) /* uart2_ctsn.uart3_rxd */ DRA7XX_CORE_IOPAD(0x3648, PIN_INPUT_SLEW | MUX_MODE0) /* uart3_rxd */
DRA7XX_CORE_IOPAD(0x37fc, PIN_INPUT_SLEW | MUX_MODE1) /* uart2_rtsn.uart3_txd */ DRA7XX_CORE_IOPAD(0x364c, PIN_INPUT_SLEW | MUX_MODE0) /* uart3_txd */
>; >;
}; };
...@@ -108,9 +108,9 @@ &i2c5 { ...@@ -108,9 +108,9 @@ &i2c5 {
pinctrl-0 = <&i2c5_pins_default>; pinctrl-0 = <&i2c5_pins_default>;
clock-frequency = <400000>; clock-frequency = <400000>;
eeprom_base: atmel@50 { eeprom_base: atmel@54 {
compatible = "atmel,24c08"; compatible = "atmel,24c08";
reg = <0x50>; reg = <0x54>;
pagesize = <16>; pagesize = <16>;
}; };
......
...@@ -152,6 +152,7 @@ nand@d0000 { ...@@ -152,6 +152,7 @@ nand@d0000 {
nand-on-flash-bbt; nand-on-flash-bbt;
partitions { partitions {
compatible = "fixed-partitions";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
......
...@@ -114,9 +114,15 @@ m25p80@0 { ...@@ -114,9 +114,15 @@ m25p80@0 {
macb0: ethernet@f8008000 { macb0: ethernet@f8008000 {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&pinctrl_macb0_default>; pinctrl-0 = <&pinctrl_macb0_default &pinctrl_macb0_phy_irq>;
phy-mode = "rmii"; phy-mode = "rmii";
status = "okay"; status = "okay";
ethernet-phy@1 {
reg = <0x1>;
interrupt-parent = <&pioA>;
interrupts = <73 IRQ_TYPE_LEVEL_LOW>;
};
}; };
pdmic@f8018000 { pdmic@f8018000 {
...@@ -300,6 +306,10 @@ pinctrl_macb0_default: macb0_default { ...@@ -300,6 +306,10 @@ pinctrl_macb0_default: macb0_default {
bias-disable; bias-disable;
}; };
pinctrl_macb0_phy_irq: macb0_phy_irq {
pinmux = <PIN_PC9__GPIO>;
};
pinctrl_pdmic_default: pdmic_default { pinctrl_pdmic_default: pdmic_default {
pinmux = <PIN_PB26__PDMIC_DAT>, pinmux = <PIN_PB26__PDMIC_DAT>,
<PIN_PB27__PDMIC_CLK>; <PIN_PB27__PDMIC_CLK>;
......
...@@ -86,10 +86,12 @@ i2c0: i2c@f8014000 { ...@@ -86,10 +86,12 @@ i2c0: i2c@f8014000 {
macb0: ethernet@f8020000 { macb0: ethernet@f8020000 {
phy-mode = "rmii"; phy-mode = "rmii";
status = "okay"; status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_macb0_rmii &pinctrl_macb0_phy_irq>;
phy0: ethernet-phy@1 { phy0: ethernet-phy@1 {
interrupt-parent = <&pioE>; interrupt-parent = <&pioE>;
interrupts = <1 IRQ_TYPE_EDGE_FALLING>; interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
reg = <1>; reg = <1>;
}; };
}; };
...@@ -152,6 +154,10 @@ pinctrl_key_gpio: key_gpio_0 { ...@@ -152,6 +154,10 @@ pinctrl_key_gpio: key_gpio_0 {
atmel,pins = atmel,pins =
<AT91_PIOE 8 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>; <AT91_PIOE 8 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
}; };
pinctrl_macb0_phy_irq: macb0_phy_irq_0 {
atmel,pins =
<AT91_PIOE 1 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
};
}; };
}; };
}; };
......
...@@ -160,8 +160,15 @@ atmel_mxt_ts@4c { ...@@ -160,8 +160,15 @@ atmel_mxt_ts@4c {
}; };
macb0: ethernet@f8020000 { macb0: ethernet@f8020000 {
pinctrl-0 = <&pinctrl_macb0_rmii &pinctrl_macb0_phy_irq>;
phy-mode = "rmii"; phy-mode = "rmii";
status = "okay"; status = "okay";
ethernet-phy@1 {
reg = <0x1>;
interrupt-parent = <&pioE>;
interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
};
}; };
mmc1: mmc@fc000000 { mmc1: mmc@fc000000 {
...@@ -193,6 +200,10 @@ watchdog@fc068640 { ...@@ -193,6 +200,10 @@ watchdog@fc068640 {
pinctrl@fc06a000 { pinctrl@fc06a000 {
board { board {
pinctrl_macb0_phy_irq: macb0_phy_irq {
atmel,pins =
<AT91_PIOE 1 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
};
pinctrl_mmc0_cd: mmc0_cd { pinctrl_mmc0_cd: mmc0_cd {
atmel,pins = atmel,pins =
<AT91_PIOE 5 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>; <AT91_PIOE 5 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
......
...@@ -215,7 +215,7 @@ enter { ...@@ -215,7 +215,7 @@ enter {
}; };
panel: panel { panel: panel {
compatible = "qd,qd43003c0-40", "simple-panel"; compatible = "qiaodian,qd43003c0-40", "simple-panel";
backlight = <&backlight>; backlight = <&backlight>;
power-supply = <&panel_reg>; power-supply = <&panel_reg>;
#address-cells = <1>; #address-cells = <1>;
......
/* /*
* Device Tree file for Buffalo Linkstation LS-WVL/VL * Device Tree file for Buffalo Linkstation LS-WVL/VL
* *
* Copyright (C) 2015, rogershimizu@gmail.com * Copyright (C) 2015, 2016
* Roger Shimizu <rogershimizu@gmail.com>
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
...@@ -156,21 +157,21 @@ gpio_keys { ...@@ -156,21 +157,21 @@ gpio_keys {
button@1 { button@1 {
label = "Function Button"; label = "Function Button";
linux,code = <KEY_OPTION>; linux,code = <KEY_OPTION>;
gpios = <&gpio0 45 GPIO_ACTIVE_LOW>; gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
}; };
button@2 { button@2 {
label = "Power-on Switch"; label = "Power-on Switch";
linux,code = <KEY_RESERVED>; linux,code = <KEY_RESERVED>;
linux,input-type = <5>; linux,input-type = <5>;
gpios = <&gpio0 46 GPIO_ACTIVE_LOW>; gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
}; };
button@3 { button@3 {
label = "Power-auto Switch"; label = "Power-auto Switch";
linux,code = <KEY_ESC>; linux,code = <KEY_ESC>;
linux,input-type = <5>; linux,input-type = <5>;
gpios = <&gpio0 47 GPIO_ACTIVE_LOW>; gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
}; };
}; };
...@@ -185,38 +186,38 @@ &pmx_led_hdderr0 ...@@ -185,38 +186,38 @@ &pmx_led_hdderr0
led@1 { led@1 {
label = "lswvl:red:alarm"; label = "lswvl:red:alarm";
gpios = <&gpio0 36 GPIO_ACTIVE_LOW>; gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
}; };
led@2 { led@2 {
label = "lswvl:red:func"; label = "lswvl:red:func";
gpios = <&gpio0 37 GPIO_ACTIVE_LOW>; gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
}; };
led@3 { led@3 {
label = "lswvl:amber:info"; label = "lswvl:amber:info";
gpios = <&gpio0 38 GPIO_ACTIVE_LOW>; gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
}; };
led@4 { led@4 {
label = "lswvl:blue:func"; label = "lswvl:blue:func";
gpios = <&gpio0 39 GPIO_ACTIVE_LOW>; gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
}; };
led@5 { led@5 {
label = "lswvl:blue:power"; label = "lswvl:blue:power";
gpios = <&gpio0 40 GPIO_ACTIVE_LOW>; gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
default-state = "keep"; default-state = "keep";
}; };
led@6 { led@6 {
label = "lswvl:red:hdderr0"; label = "lswvl:red:hdderr0";
gpios = <&gpio0 34 GPIO_ACTIVE_LOW>; gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
}; };
led@7 { led@7 {
label = "lswvl:red:hdderr1"; label = "lswvl:red:hdderr1";
gpios = <&gpio0 35 GPIO_ACTIVE_LOW>; gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
}; };
}; };
...@@ -233,7 +234,7 @@ gpio_fan { ...@@ -233,7 +234,7 @@ gpio_fan {
3250 1 3250 1
5000 0>; 5000 0>;
alarm-gpios = <&gpio0 43 GPIO_ACTIVE_HIGH>; alarm-gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>;
}; };
restart_poweroff { restart_poweroff {
......
/* /*
* Device Tree file for Buffalo Linkstation LS-WXL/WSXL * Device Tree file for Buffalo Linkstation LS-WXL/WSXL
* *
* Copyright (C) 2015, rogershimizu@gmail.com * Copyright (C) 2015, 2016
* Roger Shimizu <rogershimizu@gmail.com>
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
...@@ -156,21 +157,21 @@ gpio_keys { ...@@ -156,21 +157,21 @@ gpio_keys {
button@1 { button@1 {
label = "Function Button"; label = "Function Button";
linux,code = <KEY_OPTION>; linux,code = <KEY_OPTION>;
gpios = <&gpio1 41 GPIO_ACTIVE_LOW>; gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
}; };
button@2 { button@2 {
label = "Power-on Switch"; label = "Power-on Switch";
linux,code = <KEY_RESERVED>; linux,code = <KEY_RESERVED>;
linux,input-type = <5>; linux,input-type = <5>;
gpios = <&gpio1 42 GPIO_ACTIVE_LOW>; gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
}; };
button@3 { button@3 {
label = "Power-auto Switch"; label = "Power-auto Switch";
linux,code = <KEY_ESC>; linux,code = <KEY_ESC>;
linux,input-type = <5>; linux,input-type = <5>;
gpios = <&gpio1 43 GPIO_ACTIVE_LOW>; gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
}; };
}; };
...@@ -185,12 +186,12 @@ &pmx_led_hdderr0 ...@@ -185,12 +186,12 @@ &pmx_led_hdderr0
led@1 { led@1 {
label = "lswxl:blue:func"; label = "lswxl:blue:func";
gpios = <&gpio1 36 GPIO_ACTIVE_LOW>; gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
}; };
led@2 { led@2 {
label = "lswxl:red:alarm"; label = "lswxl:red:alarm";
gpios = <&gpio1 49 GPIO_ACTIVE_LOW>; gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
}; };
led@3 { led@3 {
...@@ -200,23 +201,23 @@ led@3 { ...@@ -200,23 +201,23 @@ led@3 {
led@4 { led@4 {
label = "lswxl:blue:power"; label = "lswxl:blue:power";
gpios = <&gpio1 8 GPIO_ACTIVE_LOW>; gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
default-state = "keep";
}; };
led@5 { led@5 {
label = "lswxl:red:func"; label = "lswxl:red:func";
gpios = <&gpio1 5 GPIO_ACTIVE_LOW>; gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
default-state = "keep";
}; };
led@6 { led@6 {
label = "lswxl:red:hdderr0"; label = "lswxl:red:hdderr0";
gpios = <&gpio1 2 GPIO_ACTIVE_LOW>; gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
}; };
led@7 { led@7 {
label = "lswxl:red:hdderr1"; label = "lswxl:red:hdderr1";
gpios = <&gpio1 3 GPIO_ACTIVE_LOW>; gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
}; };
}; };
...@@ -225,15 +226,15 @@ gpio_fan { ...@@ -225,15 +226,15 @@ gpio_fan {
pinctrl-0 = <&pmx_fan_low &pmx_fan_high &pmx_fan_lock>; pinctrl-0 = <&pmx_fan_low &pmx_fan_high &pmx_fan_lock>;
pinctrl-names = "default"; pinctrl-names = "default";
gpios = <&gpio0 47 GPIO_ACTIVE_LOW gpios = <&gpio1 16 GPIO_ACTIVE_LOW
&gpio0 48 GPIO_ACTIVE_LOW>; &gpio1 15 GPIO_ACTIVE_LOW>;
gpio-fan,speed-map = <0 3 gpio-fan,speed-map = <0 3
1500 2 1500 2
3250 1 3250 1
5000 0>; 5000 0>;
alarm-gpios = <&gpio1 49 GPIO_ACTIVE_HIGH>; alarm-gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
}; };
restart_poweroff { restart_poweroff {
...@@ -256,7 +257,7 @@ usb_power: regulator@1 { ...@@ -256,7 +257,7 @@ usb_power: regulator@1 {
enable-active-high; enable-active-high;
regulator-always-on; regulator-always-on;
regulator-boot-on; regulator-boot-on;
gpio = <&gpio0 37 GPIO_ACTIVE_HIGH>; gpio = <&gpio1 5 GPIO_ACTIVE_HIGH>;
}; };
hdd_power0: regulator@2 { hdd_power0: regulator@2 {
compatible = "regulator-fixed"; compatible = "regulator-fixed";
......
...@@ -131,6 +131,7 @@ &nand { ...@@ -131,6 +131,7 @@ &nand {
chip-delay = <40>; chip-delay = <40>;
status = "okay"; status = "okay";
partitions { partitions {
compatible = "fixed-partitions";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
......
...@@ -112,14 +112,6 @@ &i2c3 { ...@@ -112,14 +112,6 @@ &i2c3 {
clock-frequency = <400000>; clock-frequency = <400000>;
}; };
&i2c2 {
clock-frequency = <400000>;
};
&i2c3 {
clock-frequency = <400000>;
};
/* /*
* Only found on the wireless SOM. For the SOM without wireless, the pins for * Only found on the wireless SOM. For the SOM without wireless, the pins for
* MMC3 can be routed with jumpers to the second MMC slot on the devkit and * MMC3 can be routed with jumpers to the second MMC slot on the devkit and
...@@ -143,6 +135,7 @@ wlcore: wlcore@2 { ...@@ -143,6 +135,7 @@ wlcore: wlcore@2 {
interrupt-parent = <&gpio5>; interrupt-parent = <&gpio5>;
interrupts = <24 IRQ_TYPE_LEVEL_HIGH>; /* gpio 152 */ interrupts = <24 IRQ_TYPE_LEVEL_HIGH>; /* gpio 152 */
ref-clock-frequency = <26000000>; ref-clock-frequency = <26000000>;
tcxo-clock-frequency = <26000000>;
}; };
}; };
......
...@@ -130,6 +130,16 @@ sound: sound { ...@@ -130,6 +130,16 @@ sound: sound {
}; };
}; };
&gpio8 {
/* TI trees use GPIO instead of msecure, see also muxing */
p234 {
gpio-hog;
gpios = <10 GPIO_ACTIVE_HIGH>;
output-high;
line-name = "gpio8_234/msecure";
};
};
&omap5_pmx_core { &omap5_pmx_core {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = < pinctrl-0 = <
...@@ -213,6 +223,13 @@ OMAP5_IOPAD(0x1bc, PIN_OUTPUT | MUX_MODE6) /* mcspi1_clk.gpio5_140 */ ...@@ -213,6 +223,13 @@ OMAP5_IOPAD(0x1bc, PIN_OUTPUT | MUX_MODE6) /* mcspi1_clk.gpio5_140 */
>; >;
}; };
/* TI trees use GPIO mode; msecure mode does not work reliably? */
palmas_msecure_pins: palmas_msecure_pins {
pinctrl-single,pins = <
OMAP5_IOPAD(0x180, PIN_OUTPUT | MUX_MODE6) /* gpio8_234 */
>;
};
usbhost_pins: pinmux_usbhost_pins { usbhost_pins: pinmux_usbhost_pins {
pinctrl-single,pins = < pinctrl-single,pins = <
OMAP5_IOPAD(0x0c4, PIN_INPUT | MUX_MODE0) /* usbb2_hsic_strobe */ OMAP5_IOPAD(0x0c4, PIN_INPUT | MUX_MODE0) /* usbb2_hsic_strobe */
...@@ -278,6 +295,12 @@ &omap5_pmx_wkup { ...@@ -278,6 +295,12 @@ &omap5_pmx_wkup {
&usbhost_wkup_pins &usbhost_wkup_pins
>; >;
palmas_sys_nirq_pins: pinmux_palmas_sys_nirq_pins {
pinctrl-single,pins = <
OMAP5_IOPAD(0x068, PIN_INPUT_PULLUP | MUX_MODE0) /* sys_nirq1 */
>;
};
usbhost_wkup_pins: pinmux_usbhost_wkup_pins { usbhost_wkup_pins: pinmux_usbhost_wkup_pins {
pinctrl-single,pins = < pinctrl-single,pins = <
OMAP5_IOPAD(0x05a, PIN_OUTPUT | MUX_MODE0) /* fref_clk1_out, USB hub clk */ OMAP5_IOPAD(0x05a, PIN_OUTPUT | MUX_MODE0) /* fref_clk1_out, USB hub clk */
...@@ -345,6 +368,8 @@ palmas: palmas@48 { ...@@ -345,6 +368,8 @@ palmas: palmas@48 {
interrupt-controller; interrupt-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
ti,system-power-controller; ti,system-power-controller;
pinctrl-names = "default";
pinctrl-0 = <&palmas_sys_nirq_pins &palmas_msecure_pins>;
extcon_usb3: palmas_usb { extcon_usb3: palmas_usb {
compatible = "ti,palmas-usb-vid"; compatible = "ti,palmas-usb-vid";
...@@ -358,6 +383,14 @@ clk32kgaudio: palmas_clk32k@1 { ...@@ -358,6 +383,14 @@ clk32kgaudio: palmas_clk32k@1 {
#clock-cells = <0>; #clock-cells = <0>;
}; };
rtc {
compatible = "ti,palmas-rtc";
interrupt-parent = <&palmas>;
interrupts = <8 IRQ_TYPE_NONE>;
ti,backup-battery-chargeable;
ti,backup-battery-charge-high-current;
};
palmas_pmic { palmas_pmic {
compatible = "ti,palmas-pmic"; compatible = "ti,palmas-pmic";
interrupt-parent = <&palmas>; interrupt-parent = <&palmas>;
......
/* /*
* Device Tree file for Buffalo Linkstation LS-WTGL * Device Tree file for Buffalo Linkstation LS-WTGL
* *
* Copyright (C) 2015, Roger Shimizu <rogershimizu@gmail.com> * Copyright (C) 2015, 2016
* Roger Shimizu <rogershimizu@gmail.com>
* *
* This file is dual-licensed: you can use it either under the terms * This file is dual-licensed: you can use it either under the terms
* of the GPL or the X11 license, at your option. Note that this dual * of the GPL or the X11 license, at your option. Note that this dual
...@@ -69,8 +70,6 @@ soc { ...@@ -69,8 +70,6 @@ soc {
internal-regs { internal-regs {
pinctrl: pinctrl@10000 { pinctrl: pinctrl@10000 {
pinctrl-0 = <&pmx_usb_power &pmx_power_hdd
&pmx_fan_low &pmx_fan_high &pmx_fan_lock>;
pinctrl-names = "default"; pinctrl-names = "default";
pmx_led_power: pmx-leds { pmx_led_power: pmx-leds {
...@@ -162,6 +161,7 @@ gpio_leds { ...@@ -162,6 +161,7 @@ gpio_leds {
led@1 { led@1 {
label = "lswtgl:blue:power"; label = "lswtgl:blue:power";
gpios = <&gpio0 0 GPIO_ACTIVE_LOW>; gpios = <&gpio0 0 GPIO_ACTIVE_LOW>;
default-state = "keep";
}; };
led@2 { led@2 {
...@@ -188,7 +188,7 @@ gpio_fan { ...@@ -188,7 +188,7 @@ gpio_fan {
3250 1 3250 1
5000 0>; 5000 0>;
alarm-gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>; alarm-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
}; };
restart_poweroff { restart_poweroff {
......
...@@ -1342,7 +1342,7 @@ rtc@fc0686b0 { ...@@ -1342,7 +1342,7 @@ rtc@fc0686b0 {
dbgu: serial@fc069000 { dbgu: serial@fc069000 {
compatible = "atmel,at91sam9260-dbgu", "atmel,at91sam9260-usart"; compatible = "atmel,at91sam9260-dbgu", "atmel,at91sam9260-usart";
reg = <0xfc069000 0x200>; reg = <0xfc069000 0x200>;
interrupts = <2 IRQ_TYPE_LEVEL_HIGH 7>; interrupts = <45 IRQ_TYPE_LEVEL_HIGH 7>;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&pinctrl_dbgu>; pinctrl-0 = <&pinctrl_dbgu>;
clocks = <&dbgu_clk>; clocks = <&dbgu_clk>;
......
...@@ -127,22 +127,14 @@ mmcsd_default_mux { ...@@ -127,22 +127,14 @@ mmcsd_default_mux {
}; };
mmcsd_default_mode: mmcsd_default { mmcsd_default_mode: mmcsd_default {
mmcsd_default_cfg1 { mmcsd_default_cfg1 {
/* MCCLK */ /*
pins = "GPIO8_B10"; * MCCLK, MCCMDDIR, MCDAT0DIR, MCDAT31DIR, MCDATDIR2
ste,output = <0>; * MCCMD, MCDAT3-0, MCMSFBCLK
}; */
mmcsd_default_cfg2 { pins = "GPIO8_B10", "GPIO9_A10", "GPIO10_C11", "GPIO11_B11",
/* MCCMDDIR, MCDAT0DIR, MCDAT31DIR, MCDATDIR2 */ "GPIO12_A11", "GPIO13_C12", "GPIO14_B12", "GPIO15_A12",
pins = "GPIO10_C11", "GPIO15_A12", "GPIO16_C13", "GPIO23_D15", "GPIO24_C15";
"GPIO16_C13", "GPIO23_D15"; ste,output = <2>;
ste,output = <1>;
};
mmcsd_default_cfg3 {
/* MCCMD, MCDAT3-0, MCMSFBCLK */
pins = "GPIO9_A10", "GPIO11_B11",
"GPIO12_A11", "GPIO13_C12",
"GPIO14_B12", "GPIO24_C15";
ste,input = <1>;
}; };
}; };
}; };
...@@ -802,10 +794,21 @@ mmcsd: sdi@101f6000 { ...@@ -802,10 +794,21 @@ mmcsd: sdi@101f6000 {
clock-names = "mclk", "apb_pclk"; clock-names = "mclk", "apb_pclk";
interrupt-parent = <&vica>; interrupt-parent = <&vica>;
interrupts = <22>; interrupts = <22>;
max-frequency = <48000000>; max-frequency = <400000>;
bus-width = <4>; bus-width = <4>;
cap-mmc-highspeed; cap-mmc-highspeed;
cap-sd-highspeed; cap-sd-highspeed;
full-pwr-cycle;
/*
* The STw4811 circuit used with the Nomadik strictly
* requires that all of these signal direction pins be
* routed and used for its 4-bit levelshifter.
*/
st,sig-dir-dat0;
st,sig-dir-dat2;
st,sig-dir-dat31;
st,sig-dir-cmd;
st,sig-pin-fbclk;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&mmcsd_default_mux>, <&mmcsd_default_mode>; pinctrl-0 = <&mmcsd_default_mux>, <&mmcsd_default_mode>;
vmmc-supply = <&vmmc_regulator>; vmmc-supply = <&vmmc_regulator>;
......
...@@ -426,6 +426,7 @@ CONFIG_SUNXI_WATCHDOG=y ...@@ -426,6 +426,7 @@ CONFIG_SUNXI_WATCHDOG=y
CONFIG_IMX2_WDT=y CONFIG_IMX2_WDT=y
CONFIG_TEGRA_WATCHDOG=m CONFIG_TEGRA_WATCHDOG=m
CONFIG_MESON_WATCHDOG=y CONFIG_MESON_WATCHDOG=y
CONFIG_DW_WATCHDOG=y
CONFIG_DIGICOLOR_WATCHDOG=y CONFIG_DIGICOLOR_WATCHDOG=y
CONFIG_MFD_AS3711=y CONFIG_MFD_AS3711=y
CONFIG_MFD_AS3722=y CONFIG_MFD_AS3722=y
......
...@@ -50,6 +50,7 @@ CONFIG_SOC_AM33XX=y ...@@ -50,6 +50,7 @@ CONFIG_SOC_AM33XX=y
CONFIG_SOC_AM43XX=y CONFIG_SOC_AM43XX=y
CONFIG_SOC_DRA7XX=y CONFIG_SOC_DRA7XX=y
CONFIG_ARM_THUMBEE=y CONFIG_ARM_THUMBEE=y
CONFIG_ARM_KERNMEM_PERMS=y
CONFIG_ARM_ERRATA_411920=y CONFIG_ARM_ERRATA_411920=y
CONFIG_ARM_ERRATA_430973=y CONFIG_ARM_ERRATA_430973=y
CONFIG_SMP=y CONFIG_SMP=y
...@@ -177,6 +178,7 @@ CONFIG_TI_CPTS=y ...@@ -177,6 +178,7 @@ CONFIG_TI_CPTS=y
CONFIG_AT803X_PHY=y CONFIG_AT803X_PHY=y
CONFIG_SMSC_PHY=y CONFIG_SMSC_PHY=y
CONFIG_USB_USBNET=m CONFIG_USB_USBNET=m
CONFIG_USB_NET_SMSC75XX=m
CONFIG_USB_NET_SMSC95XX=m CONFIG_USB_NET_SMSC95XX=m
CONFIG_USB_ALI_M5632=y CONFIG_USB_ALI_M5632=y
CONFIG_USB_AN2720=y CONFIG_USB_AN2720=y
...@@ -354,6 +356,11 @@ CONFIG_USB_MUSB_DSPS=m ...@@ -354,6 +356,11 @@ CONFIG_USB_MUSB_DSPS=m
CONFIG_USB_INVENTRA_DMA=y CONFIG_USB_INVENTRA_DMA=y
CONFIG_USB_TI_CPPI41_DMA=y CONFIG_USB_TI_CPPI41_DMA=y
CONFIG_USB_DWC3=m CONFIG_USB_DWC3=m
CONFIG_USB_SERIAL=m
CONFIG_USB_SERIAL_GENERIC=y
CONFIG_USB_SERIAL_SIMPLE=m
CONFIG_USB_SERIAL_FTDI_SIO=m
CONFIG_USB_SERIAL_PL2303=m
CONFIG_USB_TEST=m CONFIG_USB_TEST=m
CONFIG_AM335X_PHY_USB=y CONFIG_AM335X_PHY_USB=y
CONFIG_USB_GADGET=m CONFIG_USB_GADGET=m
...@@ -387,6 +394,7 @@ CONFIG_NEW_LEDS=y ...@@ -387,6 +394,7 @@ CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=m CONFIG_LEDS_CLASS=m
CONFIG_LEDS_GPIO=m CONFIG_LEDS_GPIO=m
CONFIG_LEDS_PWM=m CONFIG_LEDS_PWM=m
CONFIG_LEDS_PCA963X=m
CONFIG_LEDS_TRIGGERS=y CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=m CONFIG_LEDS_TRIGGER_TIMER=m
CONFIG_LEDS_TRIGGER_ONESHOT=m CONFIG_LEDS_TRIGGER_ONESHOT=m
...@@ -449,6 +457,8 @@ CONFIG_NLS_CODEPAGE_437=y ...@@ -449,6 +457,8 @@ CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_ISO8859_1=y CONFIG_NLS_ISO8859_1=y
CONFIG_PRINTK_TIME=y CONFIG_PRINTK_TIME=y
CONFIG_DEBUG_INFO=y CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_INFO_SPLIT=y
CONFIG_DEBUG_INFO_DWARF4=y
CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ=y
CONFIG_SCHEDSTATS=y CONFIG_SCHEDSTATS=y
CONFIG_TIMER_STATS=y CONFIG_TIMER_STATS=y
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/of.h> #include <linux/of.h>
#include <linux/pinctrl/machine.h> #include <linux/pinctrl/machine.h>
#include <linux/platform_data/mailbox-omap.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <asm/mach/map.h> #include <asm/mach/map.h>
...@@ -66,32 +65,6 @@ static int __init omap3_l3_init(void) ...@@ -66,32 +65,6 @@ static int __init omap3_l3_init(void)
} }
omap_postcore_initcall(omap3_l3_init); omap_postcore_initcall(omap3_l3_init);
#if defined(CONFIG_OMAP2PLUS_MBOX) || defined(CONFIG_OMAP2PLUS_MBOX_MODULE)
static inline void __init omap_init_mbox(void)
{
struct omap_hwmod *oh;
struct platform_device *pdev;
struct omap_mbox_pdata *pdata;
oh = omap_hwmod_lookup("mailbox");
if (!oh) {
pr_err("%s: unable to find hwmod\n", __func__);
return;
}
if (!oh->dev_attr) {
pr_err("%s: hwmod doesn't have valid attrs\n", __func__);
return;
}
pdata = (struct omap_mbox_pdata *)oh->dev_attr;
pdev = omap_device_build("omap-mailbox", -1, oh, pdata, sizeof(*pdata));
WARN(IS_ERR(pdev), "%s: could not build device, err %ld\n",
__func__, PTR_ERR(pdev));
}
#else
static inline void omap_init_mbox(void) { }
#endif /* CONFIG_OMAP2PLUS_MBOX */
static inline void omap_init_sti(void) {} static inline void omap_init_sti(void) {}
#if defined(CONFIG_SPI_OMAP24XX) || defined(CONFIG_SPI_OMAP24XX_MODULE) #if defined(CONFIG_SPI_OMAP24XX) || defined(CONFIG_SPI_OMAP24XX_MODULE)
...@@ -229,7 +202,6 @@ static int __init omap2_init_devices(void) ...@@ -229,7 +202,6 @@ static int __init omap2_init_devices(void)
* please keep these calls, and their implementations above, * please keep these calls, and their implementations above,
* in alphabetical order so they're easier to sort through. * in alphabetical order so they're easier to sort through.
*/ */
omap_init_mbox();
omap_init_mcspi(); omap_init_mcspi();
omap_init_sham(); omap_init_sham();
omap_init_aes(); omap_init_aes();
......
...@@ -23,6 +23,8 @@ ...@@ -23,6 +23,8 @@
#include <linux/platform_data/pinctrl-single.h> #include <linux/platform_data/pinctrl-single.h>
#include <linux/platform_data/iommu-omap.h> #include <linux/platform_data/iommu-omap.h>
#include <linux/platform_data/wkup_m3.h> #include <linux/platform_data/wkup_m3.h>
#include <linux/platform_data/pwm_omap_dmtimer.h>
#include <plat/dmtimer.h>
#include "common.h" #include "common.h"
#include "common-board-devices.h" #include "common-board-devices.h"
...@@ -449,6 +451,24 @@ void omap_auxdata_legacy_init(struct device *dev) ...@@ -449,6 +451,24 @@ void omap_auxdata_legacy_init(struct device *dev)
dev->platform_data = &twl_gpio_auxdata; dev->platform_data = &twl_gpio_auxdata;
} }
/* Dual mode timer PWM callbacks platdata */
#if IS_ENABLED(CONFIG_OMAP_DM_TIMER)
struct pwm_omap_dmtimer_pdata pwm_dmtimer_pdata = {
.request_by_node = omap_dm_timer_request_by_node,
.free = omap_dm_timer_free,
.enable = omap_dm_timer_enable,
.disable = omap_dm_timer_disable,
.get_fclk = omap_dm_timer_get_fclk,
.start = omap_dm_timer_start,
.stop = omap_dm_timer_stop,
.set_load = omap_dm_timer_set_load,
.set_match = omap_dm_timer_set_match,
.set_pwm = omap_dm_timer_set_pwm,
.set_prescaler = omap_dm_timer_set_prescaler,
.write_counter = omap_dm_timer_write_counter,
};
#endif
/* /*
* Few boards still need auxdata populated before we populate * Few boards still need auxdata populated before we populate
* the dev entries in of_platform_populate(). * the dev entries in of_platform_populate().
...@@ -502,6 +522,9 @@ static struct of_dev_auxdata omap_auxdata_lookup[] __initdata = { ...@@ -502,6 +522,9 @@ static struct of_dev_auxdata omap_auxdata_lookup[] __initdata = {
OF_DEV_AUXDATA("ti,am4372-wkup-m3", 0x44d00000, "44d00000.wkup_m3", OF_DEV_AUXDATA("ti,am4372-wkup-m3", 0x44d00000, "44d00000.wkup_m3",
&wkup_m3_data), &wkup_m3_data),
#endif #endif
#if IS_ENABLED(CONFIG_OMAP_DM_TIMER)
OF_DEV_AUXDATA("ti,omap-dmtimer-pwm", 0, NULL, &pwm_dmtimer_pdata),
#endif
#if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5) #if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5)
OF_DEV_AUXDATA("ti,omap4-iommu", 0x4a066000, "4a066000.mmu", OF_DEV_AUXDATA("ti,omap4-iommu", 0x4a066000, "4a066000.mmu",
&omap4_iommu_pdata), &omap4_iommu_pdata),
......
...@@ -86,13 +86,18 @@ ENTRY(enable_omap3630_toggle_l2_on_restore) ...@@ -86,13 +86,18 @@ ENTRY(enable_omap3630_toggle_l2_on_restore)
stmfd sp!, {lr} @ save registers on stack stmfd sp!, {lr} @ save registers on stack
/* Setup so that we will disable and enable l2 */ /* Setup so that we will disable and enable l2 */
mov r1, #0x1 mov r1, #0x1
adrl r2, l2dis_3630 @ may be too distant for plain adr adrl r3, l2dis_3630_offset @ may be too distant for plain adr
str r1, [r2] ldr r2, [r3] @ value for offset
str r1, [r2, r3] @ write to l2dis_3630
ldmfd sp!, {pc} @ restore regs and return ldmfd sp!, {pc} @ restore regs and return
ENDPROC(enable_omap3630_toggle_l2_on_restore) ENDPROC(enable_omap3630_toggle_l2_on_restore)
.text /*
/* Function to call rom code to save secure ram context */ * Function to call rom code to save secure ram context. This gets
* relocated to SRAM, so it can be all in .data section. Otherwise
* we need to initialize api_params separately.
*/
.data
.align 3 .align 3
ENTRY(save_secure_ram_context) ENTRY(save_secure_ram_context)
stmfd sp!, {r4 - r11, lr} @ save registers on stack stmfd sp!, {r4 - r11, lr} @ save registers on stack
...@@ -126,6 +131,8 @@ ENDPROC(save_secure_ram_context) ...@@ -126,6 +131,8 @@ ENDPROC(save_secure_ram_context)
ENTRY(save_secure_ram_context_sz) ENTRY(save_secure_ram_context_sz)
.word . - save_secure_ram_context .word . - save_secure_ram_context
.text
/* /*
* ====================== * ======================
* == Idle entry point == * == Idle entry point ==
...@@ -289,12 +296,6 @@ wait_sdrc_ready: ...@@ -289,12 +296,6 @@ wait_sdrc_ready:
bic r5, r5, #0x40 bic r5, r5, #0x40
str r5, [r4] str r5, [r4]
/*
* PC-relative stores lead to undefined behaviour in Thumb-2: use a r7 as a
* base instead.
* Be careful not to clobber r7 when maintaing this code.
*/
is_dll_in_lock_mode: is_dll_in_lock_mode:
/* Is dll in lock mode? */ /* Is dll in lock mode? */
ldr r4, sdrc_dlla_ctrl ldr r4, sdrc_dlla_ctrl
...@@ -302,11 +303,7 @@ is_dll_in_lock_mode: ...@@ -302,11 +303,7 @@ is_dll_in_lock_mode:
tst r5, #0x4 tst r5, #0x4
bne exit_nonoff_modes @ Return if locked bne exit_nonoff_modes @ Return if locked
/* wait till dll locks */ /* wait till dll locks */
adr r7, kick_counter
wait_dll_lock_timed: wait_dll_lock_timed:
ldr r4, wait_dll_lock_counter
add r4, r4, #1
str r4, [r7, #wait_dll_lock_counter - kick_counter]
ldr r4, sdrc_dlla_status ldr r4, sdrc_dlla_status
/* Wait 20uS for lock */ /* Wait 20uS for lock */
mov r6, #8 mov r6, #8
...@@ -330,9 +327,6 @@ kick_dll: ...@@ -330,9 +327,6 @@ kick_dll:
orr r6, r6, #(1<<3) @ enable dll orr r6, r6, #(1<<3) @ enable dll
str r6, [r4] str r6, [r4]
dsb dsb
ldr r4, kick_counter
add r4, r4, #1
str r4, [r7] @ kick_counter
b wait_dll_lock_timed b wait_dll_lock_timed
exit_nonoff_modes: exit_nonoff_modes:
...@@ -360,15 +354,6 @@ sdrc_dlla_status: ...@@ -360,15 +354,6 @@ sdrc_dlla_status:
.word SDRC_DLLA_STATUS_V .word SDRC_DLLA_STATUS_V
sdrc_dlla_ctrl: sdrc_dlla_ctrl:
.word SDRC_DLLA_CTRL_V .word SDRC_DLLA_CTRL_V
/*
* When exporting to userspace while the counters are in SRAM,
* these 2 words need to be at the end to facilitate retrival!
*/
kick_counter:
.word 0
wait_dll_lock_counter:
.word 0
ENTRY(omap3_do_wfi_sz) ENTRY(omap3_do_wfi_sz)
.word . - omap3_do_wfi .word . - omap3_do_wfi
...@@ -437,7 +422,9 @@ ENTRY(omap3_restore) ...@@ -437,7 +422,9 @@ ENTRY(omap3_restore)
cmp r2, #0x0 @ Check if target power state was OFF or RET cmp r2, #0x0 @ Check if target power state was OFF or RET
bne logic_l1_restore bne logic_l1_restore
ldr r0, l2dis_3630 adr r1, l2dis_3630_offset @ address for offset
ldr r0, [r1] @ value for offset
ldr r0, [r1, r0] @ value at l2dis_3630
cmp r0, #0x1 @ should we disable L2 on 3630? cmp r0, #0x1 @ should we disable L2 on 3630?
bne skipl2dis bne skipl2dis
mrc p15, 0, r0, c1, c0, 1 mrc p15, 0, r0, c1, c0, 1
...@@ -449,12 +436,14 @@ skipl2dis: ...@@ -449,12 +436,14 @@ skipl2dis:
and r1, #0x700 and r1, #0x700
cmp r1, #0x300 cmp r1, #0x300
beq l2_inv_gp beq l2_inv_gp
adr r0, l2_inv_api_params_offset
ldr r3, [r0]
add r3, r3, r0 @ r3 points to dummy parameters
mov r0, #40 @ set service ID for PPA mov r0, #40 @ set service ID for PPA
mov r12, r0 @ copy secure Service ID in r12 mov r12, r0 @ copy secure Service ID in r12
mov r1, #0 @ set task id for ROM code in r1 mov r1, #0 @ set task id for ROM code in r1
mov r2, #4 @ set some flags in r2, r6 mov r2, #4 @ set some flags in r2, r6
mov r6, #0xff mov r6, #0xff
adr r3, l2_inv_api_params @ r3 points to dummy parameters
dsb @ data write barrier dsb @ data write barrier
dmb @ data memory barrier dmb @ data memory barrier
smc #1 @ call SMI monitor (smi #1) smc #1 @ call SMI monitor (smi #1)
...@@ -488,8 +477,8 @@ skipl2dis: ...@@ -488,8 +477,8 @@ skipl2dis:
b logic_l1_restore b logic_l1_restore
.align .align
l2_inv_api_params: l2_inv_api_params_offset:
.word 0x1, 0x00 .long l2_inv_api_params - .
l2_inv_gp: l2_inv_gp:
/* Execute smi to invalidate L2 cache */ /* Execute smi to invalidate L2 cache */
mov r12, #0x1 @ set up to invalidate L2 mov r12, #0x1 @ set up to invalidate L2
...@@ -506,7 +495,9 @@ l2_inv_gp: ...@@ -506,7 +495,9 @@ l2_inv_gp:
mov r12, #0x2 mov r12, #0x2
smc #0 @ Call SMI monitor (smieq) smc #0 @ Call SMI monitor (smieq)
logic_l1_restore: logic_l1_restore:
ldr r1, l2dis_3630 adr r0, l2dis_3630_offset @ adress for offset
ldr r1, [r0] @ value for offset
ldr r1, [r0, r1] @ value at l2dis_3630
cmp r1, #0x1 @ Test if L2 re-enable needed on 3630 cmp r1, #0x1 @ Test if L2 re-enable needed on 3630
bne skipl2reen bne skipl2reen
mrc p15, 0, r1, c1, c0, 1 mrc p15, 0, r1, c1, c0, 1
...@@ -535,9 +526,17 @@ control_stat: ...@@ -535,9 +526,17 @@ control_stat:
.word CONTROL_STAT .word CONTROL_STAT
control_mem_rta: control_mem_rta:
.word CONTROL_MEM_RTA_CTRL .word CONTROL_MEM_RTA_CTRL
l2dis_3630_offset:
.long l2dis_3630 - .
.data
l2dis_3630: l2dis_3630:
.word 0 .word 0
.data
l2_inv_api_params:
.word 0x1, 0x00
/* /*
* Internal functions * Internal functions
*/ */
......
...@@ -29,12 +29,6 @@ ...@@ -29,12 +29,6 @@
dsb dsb
.endm .endm
ppa_zero_params:
.word 0x0
ppa_por_params:
.word 1, 0
#ifdef CONFIG_ARCH_OMAP4 #ifdef CONFIG_ARCH_OMAP4
/* /*
...@@ -266,7 +260,9 @@ ENTRY(omap4_cpu_resume) ...@@ -266,7 +260,9 @@ ENTRY(omap4_cpu_resume)
beq skip_ns_smp_enable beq skip_ns_smp_enable
ppa_actrl_retry: ppa_actrl_retry:
mov r0, #OMAP4_PPA_CPU_ACTRL_SMP_INDEX mov r0, #OMAP4_PPA_CPU_ACTRL_SMP_INDEX
adr r3, ppa_zero_params @ Pointer to parameters adr r1, ppa_zero_params_offset
ldr r3, [r1]
add r3, r3, r1 @ Pointer to ppa_zero_params
mov r1, #0x0 @ Process ID mov r1, #0x0 @ Process ID
mov r2, #0x4 @ Flag mov r2, #0x4 @ Flag
mov r6, #0xff mov r6, #0xff
...@@ -303,7 +299,9 @@ skip_ns_smp_enable: ...@@ -303,7 +299,9 @@ skip_ns_smp_enable:
ldr r0, =OMAP4_PPA_L2_POR_INDEX ldr r0, =OMAP4_PPA_L2_POR_INDEX
ldr r1, =OMAP44XX_SAR_RAM_BASE ldr r1, =OMAP44XX_SAR_RAM_BASE
ldr r4, [r1, #L2X0_PREFETCH_CTRL_OFFSET] ldr r4, [r1, #L2X0_PREFETCH_CTRL_OFFSET]
adr r3, ppa_por_params adr r1, ppa_por_params_offset
ldr r3, [r1]
add r3, r3, r1 @ Pointer to ppa_por_params
str r4, [r3, #0x04] str r4, [r3, #0x04]
mov r1, #0x0 @ Process ID mov r1, #0x0 @ Process ID
mov r2, #0x4 @ Flag mov r2, #0x4 @ Flag
...@@ -328,6 +326,8 @@ skip_l2en: ...@@ -328,6 +326,8 @@ skip_l2en:
#endif #endif
b cpu_resume @ Jump to generic resume b cpu_resume @ Jump to generic resume
ppa_por_params_offset:
.long ppa_por_params - .
ENDPROC(omap4_cpu_resume) ENDPROC(omap4_cpu_resume)
#endif /* CONFIG_ARCH_OMAP4 */ #endif /* CONFIG_ARCH_OMAP4 */
...@@ -380,4 +380,13 @@ ENTRY(omap_do_wfi) ...@@ -380,4 +380,13 @@ ENTRY(omap_do_wfi)
nop nop
ldmfd sp!, {pc} ldmfd sp!, {pc}
ppa_zero_params_offset:
.long ppa_zero_params - .
ENDPROC(omap_do_wfi) ENDPROC(omap_do_wfi)
.data
ppa_zero_params:
.word 0
ppa_por_params:
.word 1, 0
menuconfig ARCH_REALVIEW menuconfig ARCH_REALVIEW
bool "ARM Ltd. RealView family" if ARCH_MULTI_V5 || ARCH_MULTI_V6 || ARCH_MULTI_V7 bool "ARM Ltd. RealView family"
depends on ARCH_MULTI_V5 || ARCH_MULTI_V6 || ARCH_MULTI_V7
select ARM_AMBA select ARM_AMBA
select ARM_TIMER_SP804 select ARM_TIMER_SP804
select COMMON_CLK_VERSATILE select COMMON_CLK_VERSATILE
......
...@@ -80,7 +80,7 @@ static void __init realview_smp_prepare_cpus(unsigned int max_cpus) ...@@ -80,7 +80,7 @@ static void __init realview_smp_prepare_cpus(unsigned int max_cpus)
virt_to_phys(versatile_secondary_startup)); virt_to_phys(versatile_secondary_startup));
} }
struct smp_operations realview_dt_smp_ops __initdata = { static const struct smp_operations realview_dt_smp_ops __initconst = {
.smp_prepare_cpus = realview_smp_prepare_cpus, .smp_prepare_cpus = realview_smp_prepare_cpus,
.smp_secondary_init = versatile_secondary_init, .smp_secondary_init = versatile_secondary_init,
.smp_boot_secondary = versatile_boot_secondary, .smp_boot_secondary = versatile_boot_secondary,
......
config ARCH_TANGO config ARCH_TANGO
bool "Sigma Designs Tango4 (SMP87xx)" if ARCH_MULTI_V7 bool "Sigma Designs Tango4 (SMP87xx)"
depends on ARCH_MULTI_V7
# Cortex-A9 MPCore r3p0, PL310 r3p2 # Cortex-A9 MPCore r3p0, PL310 r3p2
select ARCH_HAS_HOLES_MEMORYMODEL select ARCH_HAS_HOLES_MEMORYMODEL
select ARM_ERRATA_754322 select ARM_ERRATA_754322
......
...@@ -9,7 +9,7 @@ static int tango_boot_secondary(unsigned int cpu, struct task_struct *idle) ...@@ -9,7 +9,7 @@ static int tango_boot_secondary(unsigned int cpu, struct task_struct *idle)
return 0; return 0;
} }
static struct smp_operations tango_smp_ops __initdata = { static const struct smp_operations tango_smp_ops __initconst = {
.smp_boot_secondary = tango_boot_secondary, .smp_boot_secondary = tango_boot_secondary,
}; };
......
...@@ -115,6 +115,7 @@ dma@7ff00000 { ...@@ -115,6 +115,7 @@ dma@7ff00000 {
<GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>,
......
...@@ -12,6 +12,8 @@ aliases { ...@@ -12,6 +12,8 @@ aliases {
rtc1 = "/rtc@0,7000e000"; rtc1 = "/rtc@0,7000e000";
}; };
chosen { };
memory { memory {
device_type = "memory"; device_type = "memory";
reg = <0x0 0x80000000 0x0 0x80000000>; reg = <0x0 0x80000000 0x0 0x80000000>;
......
...@@ -132,7 +132,7 @@ config SUNXI_RSB ...@@ -132,7 +132,7 @@ config SUNXI_RSB
and AC100/AC200 ICs. and AC100/AC200 ICs.
config UNIPHIER_SYSTEM_BUS config UNIPHIER_SYSTEM_BUS
bool "UniPhier System Bus driver" tristate "UniPhier System Bus driver"
depends on ARCH_UNIPHIER && OF depends on ARCH_UNIPHIER && OF
default y default y
help help
......
...@@ -192,9 +192,11 @@ static int __init vexpress_config_init(void) ...@@ -192,9 +192,11 @@ static int __init vexpress_config_init(void)
/* Need the config devices early, before the "normal" devices... */ /* Need the config devices early, before the "normal" devices... */
for_each_compatible_node(node, NULL, "arm,vexpress,config-bus") { for_each_compatible_node(node, NULL, "arm,vexpress,config-bus") {
err = vexpress_config_populate(node); err = vexpress_config_populate(node);
if (err) if (err) {
of_node_put(node);
break; break;
} }
}
return err; return err;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment