Commit 6d9431a7 authored by Linus Torvalds's avatar Linus Torvalds

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

Pull ARM SoC fixes from Arnd Bergmann:
 "These bug fixes are for the largest part for mvebu/kirkwood, which saw
  a few regressions after the clock infrastructure was enabled, and for
  OMAP, which showed a few more preexisting bugs with the new
  multiplatform support.

  Other small fixes are for imx, mxs, tegra, spear and socfpga"

* tag 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (37 commits)
  ARM: spear3xx: Use correct pl080 header file
  Arm: socfpga: pl330: Add #dma-cells for generic dma binding support
  ARM: multiplatform: Sort the max gpio numbers.
  ARM: imx: fix typo "DEBUG_IMX50_IMX53_UART"
  ARM: imx: pll1_sys should be an initial on clk
  arm: mach-orion5x: fix typo in compatible string of a .dts file
  arm: mvebu: fix address-cells in mpic DT node
  arm: plat-orion: fix address decoding when > 4GB is used
  arm: mvebu: Reduce reg-io-width with UARTs
  ARM: Dove: add RTC device node
  arm: mvebu: enable the USB ports on Armada 370 Reference Design board
  ARM: dove: drop "select COMMON_CLK_DOVE"
  rtc: rtc-mv: Add support for clk to avoid lockups
  gpio: mvebu: Add clk support to prevent lockup
  ARM: kirkwood: fix to retain gbe MAC addresses for DT kernels
  ARM: kirkwood: of_serial: fix clock gating by removing clock-frequency
  ARM: mxs: cfa10049: Fix fb initialisation function
  ARM: SPEAr13xx: Fix typo "ARCH_HAVE_CPUFREQ"
  ARM: OMAP: RX-51: add missing USB phy binding
  clk: Tegra: Remove duplicate smp_twd clock
  ...
parents 4388817f 27f423fe
...@@ -556,7 +556,6 @@ config ARCH_IXP4XX ...@@ -556,7 +556,6 @@ config ARCH_IXP4XX
config ARCH_DOVE config ARCH_DOVE
bool "Marvell Dove" bool "Marvell Dove"
select ARCH_REQUIRE_GPIOLIB select ARCH_REQUIRE_GPIOLIB
select COMMON_CLK_DOVE
select CPU_V7 select CPU_V7
select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS
select MIGHT_HAVE_PCI select MIGHT_HAVE_PCI
...@@ -1657,13 +1656,16 @@ config LOCAL_TIMERS ...@@ -1657,13 +1656,16 @@ config LOCAL_TIMERS
accounting to be spread across the timer interval, preventing a accounting to be spread across the timer interval, preventing a
"thundering herd" at every timer tick. "thundering herd" at every timer tick.
# The GPIO number here must be sorted by descending number. In case of
# a multiplatform kernel, we just want the highest value required by the
# selected platforms.
config ARCH_NR_GPIO config ARCH_NR_GPIO
int int
default 1024 if ARCH_SHMOBILE || ARCH_TEGRA default 1024 if ARCH_SHMOBILE || ARCH_TEGRA
default 355 if ARCH_U8500
default 264 if MACH_H4700
default 512 if SOC_OMAP5 default 512 if SOC_OMAP5
default 355 if ARCH_U8500
default 288 if ARCH_VT8500 || ARCH_SUNXI default 288 if ARCH_VT8500 || ARCH_SUNXI
default 264 if MACH_H4700
default 0 default 0
help help
Maximum number of GPIOs in the system. Maximum number of GPIOs in the system.
......
...@@ -492,7 +492,7 @@ config DEBUG_IMX_UART_PORT ...@@ -492,7 +492,7 @@ config DEBUG_IMX_UART_PORT
DEBUG_IMX31_UART || \ DEBUG_IMX31_UART || \
DEBUG_IMX35_UART || \ DEBUG_IMX35_UART || \
DEBUG_IMX51_UART || \ DEBUG_IMX51_UART || \
DEBUG_IMX50_IMX53_UART || \ DEBUG_IMX53_UART || \
DEBUG_IMX6Q_UART DEBUG_IMX6Q_UART
default 1 default 1
help help
......
...@@ -115,4 +115,4 @@ i: ...@@ -115,4 +115,4 @@ i:
$(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \ $(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \
$(obj)/Image System.map "$(INSTALL_PATH)" $(obj)/Image System.map "$(INSTALL_PATH)"
subdir- := bootp compressed subdir- := bootp compressed dts
...@@ -64,5 +64,13 @@ mvsdio@d00d4000 { ...@@ -64,5 +64,13 @@ mvsdio@d00d4000 {
status = "okay"; status = "okay";
/* No CD or WP GPIOs */ /* No CD or WP GPIOs */
}; };
usb@d0050000 {
status = "okay";
};
usb@d0051000 {
status = "okay";
};
}; };
}; };
...@@ -31,7 +31,6 @@ cpu@0 { ...@@ -31,7 +31,6 @@ cpu@0 {
mpic: interrupt-controller@d0020000 { mpic: interrupt-controller@d0020000 {
compatible = "marvell,mpic"; compatible = "marvell,mpic";
#interrupt-cells = <1>; #interrupt-cells = <1>;
#address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
interrupt-controller; interrupt-controller;
}; };
...@@ -54,7 +53,7 @@ serial@d0012000 { ...@@ -54,7 +53,7 @@ serial@d0012000 {
reg = <0xd0012000 0x100>; reg = <0xd0012000 0x100>;
reg-shift = <2>; reg-shift = <2>;
interrupts = <41>; interrupts = <41>;
reg-io-width = <4>; reg-io-width = <1>;
status = "disabled"; status = "disabled";
}; };
serial@d0012100 { serial@d0012100 {
...@@ -62,7 +61,7 @@ serial@d0012100 { ...@@ -62,7 +61,7 @@ serial@d0012100 {
reg = <0xd0012100 0x100>; reg = <0xd0012100 0x100>;
reg-shift = <2>; reg-shift = <2>;
interrupts = <42>; interrupts = <42>;
reg-io-width = <4>; reg-io-width = <1>;
status = "disabled"; status = "disabled";
}; };
......
...@@ -46,7 +46,7 @@ serial@d0012200 { ...@@ -46,7 +46,7 @@ serial@d0012200 {
reg = <0xd0012200 0x100>; reg = <0xd0012200 0x100>;
reg-shift = <2>; reg-shift = <2>;
interrupts = <43>; interrupts = <43>;
reg-io-width = <4>; reg-io-width = <1>;
status = "disabled"; status = "disabled";
}; };
serial@d0012300 { serial@d0012300 {
...@@ -54,7 +54,7 @@ serial@d0012300 { ...@@ -54,7 +54,7 @@ serial@d0012300 {
reg = <0xd0012300 0x100>; reg = <0xd0012300 0x100>;
reg-shift = <2>; reg-shift = <2>;
interrupts = <44>; interrupts = <44>;
reg-io-width = <4>; reg-io-width = <1>;
status = "disabled"; status = "disabled";
}; };
......
...@@ -105,7 +105,7 @@ clk_i2c: i2c { ...@@ -105,7 +105,7 @@ clk_i2c: i2c {
compatible = "fixed-clock"; compatible = "fixed-clock";
reg = <1>; reg = <1>;
#clock-cells = <0>; #clock-cells = <0>;
clock-frequency = <150000000>; clock-frequency = <250000000>;
}; };
}; };
}; };
...@@ -197,6 +197,11 @@ sata0: sata@a0000 { ...@@ -197,6 +197,11 @@ sata0: sata@a0000 {
status = "disabled"; status = "disabled";
}; };
rtc@d8500 {
compatible = "marvell,orion-rtc";
reg = <0xd8500 0x20>;
};
crypto: crypto@30000 { crypto: crypto@30000 {
compatible = "marvell,orion-crypto"; compatible = "marvell,orion-crypto";
reg = <0x30000 0x10000>, reg = <0x30000 0x10000>,
......
...@@ -42,10 +42,9 @@ pinctrl_disp1_1: disp1-grp1 { ...@@ -42,10 +42,9 @@ pinctrl_disp1_1: disp1-grp1 {
fsl,pins = <689 0x10000 /* DISP1_DRDY */ fsl,pins = <689 0x10000 /* DISP1_DRDY */
482 0x10000 /* DISP1_HSYNC */ 482 0x10000 /* DISP1_HSYNC */
489 0x10000 /* DISP1_VSYNC */ 489 0x10000 /* DISP1_VSYNC */
684 0x10000 /* DISP1_DAT_0 */
515 0x10000 /* DISP1_DAT_22 */ 515 0x10000 /* DISP1_DAT_22 */
523 0x10000 /* DISP1_DAT_23 */ 523 0x10000 /* DISP1_DAT_23 */
543 0x10000 /* DISP1_DAT_21 */ 545 0x10000 /* DISP1_DAT_21 */
553 0x10000 /* DISP1_DAT_20 */ 553 0x10000 /* DISP1_DAT_20 */
558 0x10000 /* DISP1_DAT_19 */ 558 0x10000 /* DISP1_DAT_19 */
564 0x10000 /* DISP1_DAT_18 */ 564 0x10000 /* DISP1_DAT_18 */
......
...@@ -42,12 +42,10 @@ orange-usb { ...@@ -42,12 +42,10 @@ orange-usb {
ocp@f1000000 { ocp@f1000000 {
serial@12000 { serial@12000 {
clock-frequency = <166666667>;
status = "okay"; status = "okay";
}; };
serial@12100 { serial@12100 {
clock-frequency = <166666667>;
status = "okay"; status = "okay";
}; };
}; };
......
...@@ -50,7 +50,6 @@ lm75: lm75@48 { ...@@ -50,7 +50,6 @@ lm75: lm75@48 {
}; };
}; };
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "okay"; status = "okay";
}; };
}; };
......
...@@ -37,7 +37,6 @@ pmx_led_orange: pmx-led-orange { ...@@ -37,7 +37,6 @@ pmx_led_orange: pmx-led-orange {
}; };
}; };
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "ok"; status = "ok";
}; };
......
...@@ -38,7 +38,6 @@ pmx_led_wifi_ap: pmx-led-wifi-ap { ...@@ -38,7 +38,6 @@ pmx_led_wifi_ap: pmx-led-wifi-ap {
}; };
}; };
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "ok"; status = "ok";
}; };
......
...@@ -73,7 +73,6 @@ pmx_led_orange: pmx-led_orange { ...@@ -73,7 +73,6 @@ pmx_led_orange: pmx-led_orange {
}; };
}; };
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "ok"; status = "ok";
}; };
......
...@@ -51,7 +51,6 @@ pmx_button_usb_copy: pmx-button-usb-copy { ...@@ -51,7 +51,6 @@ pmx_button_usb_copy: pmx-button-usb-copy {
}; };
}; };
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "okay"; status = "okay";
}; };
......
...@@ -78,7 +78,6 @@ lm63: lm63@4c { ...@@ -78,7 +78,6 @@ lm63: lm63@4c {
}; };
}; };
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "ok"; status = "ok";
}; };
......
...@@ -115,7 +115,6 @@ lm63: lm63@4c { ...@@ -115,7 +115,6 @@ lm63: lm63@4c {
}; };
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "ok"; status = "ok";
}; };
......
...@@ -34,7 +34,6 @@ pmx_i2c_gpio_scl: pmx-gpio-scl { ...@@ -34,7 +34,6 @@ pmx_i2c_gpio_scl: pmx-gpio-scl {
}; };
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "ok"; status = "ok";
}; };
......
...@@ -13,7 +13,6 @@ memory { ...@@ -13,7 +13,6 @@ memory {
ocp@f1000000 { ocp@f1000000 {
serial@12000 { serial@12000 {
clock-frequency = <166666667>;
status = "okay"; status = "okay";
}; };
}; };
......
...@@ -13,7 +13,6 @@ memory { ...@@ -13,7 +13,6 @@ memory {
ocp@f1000000 { ocp@f1000000 {
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "okay"; status = "okay";
}; };
}; };
......
...@@ -90,7 +90,6 @@ eeprom@57 { ...@@ -90,7 +90,6 @@ eeprom@57 {
}; };
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "ok"; status = "ok";
}; };
......
...@@ -23,7 +23,6 @@ pmx_ns2_sata1: pmx-ns2-sata1 { ...@@ -23,7 +23,6 @@ pmx_ns2_sata1: pmx-ns2-sata1 {
}; };
serial@12000 { serial@12000 {
clock-frequency = <166666667>;
status = "okay"; status = "okay";
}; };
......
...@@ -117,7 +117,6 @@ pmx_pwr_off: pmx-pwr-off { ...@@ -117,7 +117,6 @@ pmx_pwr_off: pmx-pwr-off {
}; };
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "ok"; status = "ok";
}; };
......
...@@ -18,12 +18,10 @@ chosen { ...@@ -18,12 +18,10 @@ chosen {
ocp@f1000000 { ocp@f1000000 {
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "ok"; status = "ok";
}; };
serial@12100 { serial@12100 {
clock-frequency = <200000000>;
status = "ok"; status = "ok";
}; };
......
...@@ -108,7 +108,6 @@ pmx_led_wifi_yellow: pmx-led-wifi-yellow { ...@@ -108,7 +108,6 @@ pmx_led_wifi_yellow: pmx-led-wifi-yellow {
}; };
serial@12000 { serial@12000 {
clock-frequency = <200000000>;
status = "ok"; status = "ok";
}; };
......
...@@ -38,6 +38,7 @@ gpio0: gpio@10100 { ...@@ -38,6 +38,7 @@ gpio0: gpio@10100 {
interrupt-controller; interrupt-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
interrupts = <35>, <36>, <37>, <38>; interrupts = <35>, <36>, <37>, <38>;
clocks = <&gate_clk 7>;
}; };
gpio1: gpio@10140 { gpio1: gpio@10140 {
...@@ -49,6 +50,7 @@ gpio1: gpio@10140 { ...@@ -49,6 +50,7 @@ gpio1: gpio@10140 {
interrupt-controller; interrupt-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
interrupts = <39>, <40>, <41>; interrupts = <39>, <40>, <41>;
clocks = <&gate_clk 7>;
}; };
serial@12000 { serial@12000 {
...@@ -57,7 +59,6 @@ serial@12000 { ...@@ -57,7 +59,6 @@ serial@12000 {
reg-shift = <2>; reg-shift = <2>;
interrupts = <33>; interrupts = <33>;
clocks = <&gate_clk 7>; clocks = <&gate_clk 7>;
/* set clock-frequency in board dts */
status = "disabled"; status = "disabled";
}; };
...@@ -67,7 +68,6 @@ serial@12100 { ...@@ -67,7 +68,6 @@ serial@12100 {
reg-shift = <2>; reg-shift = <2>;
interrupts = <34>; interrupts = <34>;
clocks = <&gate_clk 7>; clocks = <&gate_clk 7>;
/* set clock-frequency in board dts */
status = "disabled"; status = "disabled";
}; };
...@@ -75,6 +75,7 @@ rtc@10300 { ...@@ -75,6 +75,7 @@ rtc@10300 {
compatible = "marvell,kirkwood-rtc", "marvell,orion-rtc"; compatible = "marvell,kirkwood-rtc", "marvell,orion-rtc";
reg = <0x10300 0x20>; reg = <0x10300 0x20>;
interrupts = <53>; interrupts = <53>;
clocks = <&gate_clk 7>;
}; };
spi@10600 { spi@10600 {
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
/ { / {
model = "LaCie Ethernet Disk mini V2"; model = "LaCie Ethernet Disk mini V2";
compatible = "lacie,ethernet-disk-mini-v2", "marvell-orion5x-88f5182", "marvell,orion5x"; compatible = "lacie,ethernet-disk-mini-v2", "marvell,orion5x-88f5182", "marvell,orion5x";
memory { memory {
reg = <0x00000000 0x4000000>; /* 64 MB */ reg = <0x00000000 0x4000000>; /* 64 MB */
......
...@@ -75,6 +75,9 @@ pdma: pdma@ffe01000 { ...@@ -75,6 +75,9 @@ pdma: pdma@ffe01000 {
compatible = "arm,pl330", "arm,primecell"; compatible = "arm,pl330", "arm,primecell";
reg = <0xffe01000 0x1000>; reg = <0xffe01000 0x1000>;
interrupts = <0 180 4>; interrupts = <0 180 4>;
#dma-cells = <1>;
#dma-channels = <8>;
#dma-requests = <32>;
}; };
}; };
......
...@@ -118,6 +118,7 @@ timer@50004600 { ...@@ -118,6 +118,7 @@ timer@50004600 {
compatible = "arm,cortex-a9-twd-timer"; compatible = "arm,cortex-a9-twd-timer";
reg = <0x50040600 0x20>; reg = <0x50040600 0x20>;
interrupts = <1 13 0x304>; interrupts = <1 13 0x304>;
clocks = <&tegra_car 132>;
}; };
intc: interrupt-controller { intc: interrupt-controller {
......
...@@ -119,6 +119,7 @@ timer@50004600 { ...@@ -119,6 +119,7 @@ timer@50004600 {
compatible = "arm,cortex-a9-twd-timer"; compatible = "arm,cortex-a9-twd-timer";
reg = <0x50040600 0x20>; reg = <0x50040600 0x20>;
interrupts = <1 13 0xf04>; interrupts = <1 13 0xf04>;
clocks = <&tegra_car 214>;
}; };
intc: interrupt-controller { intc: interrupt-controller {
......
...@@ -116,6 +116,7 @@ CONFIG_SND_SOC=y ...@@ -116,6 +116,7 @@ CONFIG_SND_SOC=y
CONFIG_SND_MXS_SOC=y CONFIG_SND_MXS_SOC=y
CONFIG_SND_SOC_MXS_SGTL5000=y CONFIG_SND_SOC_MXS_SGTL5000=y
CONFIG_USB=y CONFIG_USB=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_CHIPIDEA=y CONFIG_USB_CHIPIDEA=y
CONFIG_USB_CHIPIDEA_HOST=y CONFIG_USB_CHIPIDEA_HOST=y
CONFIG_USB_STORAGE=y CONFIG_USB_STORAGE=y
......
...@@ -126,6 +126,8 @@ CONFIG_INPUT_MISC=y ...@@ -126,6 +126,8 @@ CONFIG_INPUT_MISC=y
CONFIG_INPUT_TWL4030_PWRBUTTON=y CONFIG_INPUT_TWL4030_PWRBUTTON=y
CONFIG_VT_HW_CONSOLE_BINDING=y CONFIG_VT_HW_CONSOLE_BINDING=y
# CONFIG_LEGACY_PTYS is not set # CONFIG_LEGACY_PTYS is not set
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=32 CONFIG_SERIAL_8250_NR_UARTS=32
CONFIG_SERIAL_8250_EXTENDED=y CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_MANY_PORTS=y CONFIG_SERIAL_8250_MANY_PORTS=y
......
...@@ -172,7 +172,7 @@ static struct clk *clk[clk_max]; ...@@ -172,7 +172,7 @@ static struct clk *clk[clk_max];
static struct clk_onecell_data clk_data; static struct clk_onecell_data clk_data;
static enum mx6q_clks const clks_init_on[] __initconst = { static enum mx6q_clks const clks_init_on[] __initconst = {
mmdc_ch0_axi, rom, mmdc_ch0_axi, rom, pll1_sys,
}; };
static struct clk_div_table clk_enet_ref_table[] = { static struct clk_div_table clk_enet_ref_table[] = {
......
...@@ -26,16 +26,16 @@ ENDPROC(v7_secondary_startup) ...@@ -26,16 +26,16 @@ ENDPROC(v7_secondary_startup)
#ifdef CONFIG_PM #ifdef CONFIG_PM
/* /*
* The following code is located into the .data section. This is to * The following code must assume it is running from physical address
* allow phys_l2x0_saved_regs to be accessed with a relative load * where absolute virtual addresses to the data section have to be
* as we are running on physical address here. * turned into relative ones.
*/ */
.data
.align
#ifdef CONFIG_CACHE_L2X0 #ifdef CONFIG_CACHE_L2X0
.macro pl310_resume .macro pl310_resume
ldr r2, phys_l2x0_saved_regs adr r0, l2x0_saved_regs_offset
ldr r2, [r0]
add r2, r2, r0
ldr r0, [r2, #L2X0_R_PHY_BASE] @ get physical base of l2x0 ldr r0, [r2, #L2X0_R_PHY_BASE] @ get physical base of l2x0
ldr r1, [r2, #L2X0_R_AUX_CTRL] @ get aux_ctrl value ldr r1, [r2, #L2X0_R_AUX_CTRL] @ get aux_ctrl value
str r1, [r0, #L2X0_AUX_CTRL] @ restore aux_ctrl str r1, [r0, #L2X0_AUX_CTRL] @ restore aux_ctrl
...@@ -43,9 +43,9 @@ ENDPROC(v7_secondary_startup) ...@@ -43,9 +43,9 @@ ENDPROC(v7_secondary_startup)
str r1, [r0, #L2X0_CTRL] @ re-enable L2 str r1, [r0, #L2X0_CTRL] @ re-enable L2
.endm .endm
.globl phys_l2x0_saved_regs l2x0_saved_regs_offset:
phys_l2x0_saved_regs: .word l2x0_saved_regs - .
.long 0
#else #else
.macro pl310_resume .macro pl310_resume
.endm .endm
......
...@@ -22,8 +22,6 @@ ...@@ -22,8 +22,6 @@
#include "common.h" #include "common.h"
#include "hardware.h" #include "hardware.h"
extern unsigned long phys_l2x0_saved_regs;
static int imx6q_suspend_finish(unsigned long val) static int imx6q_suspend_finish(unsigned long val)
{ {
cpu_do_idle(); cpu_do_idle();
...@@ -57,18 +55,5 @@ static const struct platform_suspend_ops imx6q_pm_ops = { ...@@ -57,18 +55,5 @@ static const struct platform_suspend_ops imx6q_pm_ops = {
void __init imx6q_pm_init(void) void __init imx6q_pm_init(void)
{ {
/*
* The l2x0 core code provides an infrastucture to save and restore
* l2x0 registers across suspend/resume cycle. But because imx6q
* retains L2 content during suspend and needs to resume L2 before
* MMU is enabled, it can only utilize register saving support and
* have to take care of restoring on its own. So we save physical
* address of the data structure used by l2x0 core to save registers,
* and later restore the necessary ones in imx6q resume entry.
*/
#ifdef CONFIG_CACHE_L2X0
phys_l2x0_saved_regs = __pa(&l2x0_saved_regs);
#endif
suspend_set_ops(&imx6q_pm_ops); suspend_set_ops(&imx6q_pm_ops);
} }
...@@ -41,16 +41,12 @@ static void __init kirkwood_legacy_clk_init(void) ...@@ -41,16 +41,12 @@ static void __init kirkwood_legacy_clk_init(void)
struct device_node *np = of_find_compatible_node( struct device_node *np = of_find_compatible_node(
NULL, NULL, "marvell,kirkwood-gating-clock"); NULL, NULL, "marvell,kirkwood-gating-clock");
struct of_phandle_args clkspec; struct of_phandle_args clkspec;
struct clk *clk;
clkspec.np = np; clkspec.np = np;
clkspec.args_count = 1; clkspec.args_count = 1;
clkspec.args[0] = CGC_BIT_GE0;
orion_clkdev_add(NULL, "mv643xx_eth_port.0",
of_clk_get_from_provider(&clkspec));
clkspec.args[0] = CGC_BIT_PEX0; clkspec.args[0] = CGC_BIT_PEX0;
orion_clkdev_add("0", "pcie", orion_clkdev_add("0", "pcie",
of_clk_get_from_provider(&clkspec)); of_clk_get_from_provider(&clkspec));
...@@ -59,9 +55,24 @@ static void __init kirkwood_legacy_clk_init(void) ...@@ -59,9 +55,24 @@ static void __init kirkwood_legacy_clk_init(void)
orion_clkdev_add("1", "pcie", orion_clkdev_add("1", "pcie",
of_clk_get_from_provider(&clkspec)); of_clk_get_from_provider(&clkspec));
clkspec.args[0] = CGC_BIT_GE1; clkspec.args[0] = CGC_BIT_SDIO;
orion_clkdev_add(NULL, "mv643xx_eth_port.1", orion_clkdev_add(NULL, "mvsdio",
of_clk_get_from_provider(&clkspec)); of_clk_get_from_provider(&clkspec));
/*
* The ethernet interfaces forget the MAC address assigned by
* u-boot if the clocks are turned off. Until proper DT support
* is available we always enable them for now.
*/
clkspec.args[0] = CGC_BIT_GE0;
clk = of_clk_get_from_provider(&clkspec);
orion_clkdev_add(NULL, "mv643xx_eth_port.0", clk);
clk_prepare_enable(clk);
clkspec.args[0] = CGC_BIT_GE1;
clk = of_clk_get_from_provider(&clkspec);
orion_clkdev_add(NULL, "mv643xx_eth_port.1", clk);
clk_prepare_enable(clk);
} }
static void __init kirkwood_of_clk_init(void) static void __init kirkwood_of_clk_init(void)
......
...@@ -100,7 +100,7 @@ static struct irq_domain_ops icoll_irq_domain_ops = { ...@@ -100,7 +100,7 @@ static struct irq_domain_ops icoll_irq_domain_ops = {
.xlate = irq_domain_xlate_onecell, .xlate = irq_domain_xlate_onecell,
}; };
void __init icoll_of_init(struct device_node *np, static void __init icoll_of_init(struct device_node *np,
struct device_node *interrupt_parent) struct device_node *interrupt_parent)
{ {
/* /*
......
...@@ -402,17 +402,17 @@ static void __init cfa10049_init(void) ...@@ -402,17 +402,17 @@ static void __init cfa10049_init(void)
{ {
enable_clk_enet_out(); enable_clk_enet_out();
update_fec_mac_prop(OUI_CRYSTALFONTZ); update_fec_mac_prop(OUI_CRYSTALFONTZ);
mxsfb_pdata.mode_list = cfa10049_video_modes;
mxsfb_pdata.mode_count = ARRAY_SIZE(cfa10049_video_modes);
mxsfb_pdata.default_bpp = 32;
mxsfb_pdata.ld_intf_width = STMLCDIF_18BIT;
} }
static void __init cfa10037_init(void) static void __init cfa10037_init(void)
{ {
enable_clk_enet_out(); enable_clk_enet_out();
update_fec_mac_prop(OUI_CRYSTALFONTZ); update_fec_mac_prop(OUI_CRYSTALFONTZ);
mxsfb_pdata.mode_list = cfa10049_video_modes;
mxsfb_pdata.mode_count = ARRAY_SIZE(cfa10049_video_modes);
mxsfb_pdata.default_bpp = 32;
mxsfb_pdata.ld_intf_width = STMLCDIF_18BIT;
} }
static void __init apf28_init(void) static void __init apf28_init(void)
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include <mach/mx23.h> #include <mach/mx23.h>
#include <mach/mx28.h> #include <mach/mx28.h>
#include <mach/common.h>
/* /*
* Define the MX23 memory map. * Define the MX23 memory map.
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include <asm/processor.h> /* for cpu_relax() */ #include <asm/processor.h> /* for cpu_relax() */
#include <mach/mxs.h> #include <mach/mxs.h>
#include <mach/common.h>
#define OCOTP_WORD_OFFSET 0x20 #define OCOTP_WORD_OFFSET 0x20
#define OCOTP_WORD_COUNT 0x20 #define OCOTP_WORD_COUNT 0x20
......
...@@ -31,6 +31,8 @@ ...@@ -31,6 +31,8 @@
#include <plat/i2c.h> #include <plat/i2c.h>
#include <mach/irqs.h>
#if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850) #if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850)
void omap7xx_map_io(void); void omap7xx_map_io(void);
#else #else
......
...@@ -311,9 +311,6 @@ config MACH_OMAP_ZOOM2 ...@@ -311,9 +311,6 @@ config MACH_OMAP_ZOOM2
default y default y
select OMAP_PACKAGE_CBB select OMAP_PACKAGE_CBB
select REGULATOR_FIXED_VOLTAGE if REGULATOR select REGULATOR_FIXED_VOLTAGE if REGULATOR
select SERIAL_8250
select SERIAL_8250_CONSOLE
select SERIAL_CORE_CONSOLE
config MACH_OMAP_ZOOM3 config MACH_OMAP_ZOOM3
bool "OMAP3630 Zoom3 board" bool "OMAP3630 Zoom3 board"
...@@ -321,9 +318,6 @@ config MACH_OMAP_ZOOM3 ...@@ -321,9 +318,6 @@ config MACH_OMAP_ZOOM3
default y default y
select OMAP_PACKAGE_CBP select OMAP_PACKAGE_CBP
select REGULATOR_FIXED_VOLTAGE if REGULATOR select REGULATOR_FIXED_VOLTAGE if REGULATOR
select SERIAL_8250
select SERIAL_8250_CONSOLE
select SERIAL_CORE_CONSOLE
config MACH_CM_T35 config MACH_CM_T35
bool "CompuLab CM-T35/CM-T3730 modules" bool "CompuLab CM-T35/CM-T3730 modules"
......
...@@ -102,6 +102,7 @@ DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)") ...@@ -102,6 +102,7 @@ DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)")
.init_irq = omap_intc_of_init, .init_irq = omap_intc_of_init,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = omap_generic_init, .init_machine = omap_generic_init,
.init_late = omap3_init_late,
.init_time = omap3_sync32k_timer_init, .init_time = omap3_sync32k_timer_init,
.dt_compat = omap3_boards_compat, .dt_compat = omap3_boards_compat,
.restart = omap3xxx_restart, .restart = omap3xxx_restart,
...@@ -119,6 +120,7 @@ DT_MACHINE_START(OMAP3_GP_DT, "Generic OMAP3-GP (Flattened Device Tree)") ...@@ -119,6 +120,7 @@ DT_MACHINE_START(OMAP3_GP_DT, "Generic OMAP3-GP (Flattened Device Tree)")
.init_irq = omap_intc_of_init, .init_irq = omap_intc_of_init,
.handle_irq = omap3_intc_handle_irq, .handle_irq = omap3_intc_handle_irq,
.init_machine = omap_generic_init, .init_machine = omap_generic_init,
.init_late = omap3_init_late,
.init_time = omap3_secure_sync32k_timer_init, .init_time = omap3_secure_sync32k_timer_init,
.dt_compat = omap3_gp_boards_compat, .dt_compat = omap3_gp_boards_compat,
.restart = omap3xxx_restart, .restart = omap3xxx_restart,
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include <linux/io.h> #include <linux/io.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/leds.h> #include <linux/leds.h>
#include <linux/usb/phy.h>
#include <linux/usb/musb.h> #include <linux/usb/musb.h>
#include <linux/platform_data/spi-omap2-mcspi.h> #include <linux/platform_data/spi-omap2-mcspi.h>
...@@ -98,6 +99,7 @@ static void __init rx51_init(void) ...@@ -98,6 +99,7 @@ static void __init rx51_init(void)
sdrc_params = nokia_get_sdram_timings(); sdrc_params = nokia_get_sdram_timings();
omap_sdrc_init(sdrc_params, sdrc_params); omap_sdrc_init(sdrc_params, sdrc_params);
usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
usb_musb_init(&musb_board_data); usb_musb_init(&musb_board_data);
rx51_peripherals_init(); rx51_peripherals_init();
......
...@@ -108,7 +108,6 @@ void omap35xx_init_late(void); ...@@ -108,7 +108,6 @@ void omap35xx_init_late(void);
void omap3630_init_late(void); void omap3630_init_late(void);
void am35xx_init_late(void); void am35xx_init_late(void);
void ti81xx_init_late(void); void ti81xx_init_late(void);
void omap4430_init_late(void);
int omap2_common_pm_late_init(void); int omap2_common_pm_late_init(void);
#if defined(CONFIG_SOC_OMAP2420) || defined(CONFIG_SOC_OMAP2430) #if defined(CONFIG_SOC_OMAP2420) || defined(CONFIG_SOC_OMAP2430)
......
...@@ -1122,9 +1122,6 @@ int gpmc_calc_timings(struct gpmc_timings *gpmc_t, ...@@ -1122,9 +1122,6 @@ int gpmc_calc_timings(struct gpmc_timings *gpmc_t,
/* TODO: remove, see function definition */ /* TODO: remove, see function definition */
gpmc_convert_ps_to_ns(gpmc_t); gpmc_convert_ps_to_ns(gpmc_t);
/* Now the GPMC is initialised, unreserve the chip-selects */
gpmc_cs_map = 0;
return 0; return 0;
} }
...@@ -1383,6 +1380,9 @@ static int gpmc_probe(struct platform_device *pdev) ...@@ -1383,6 +1380,9 @@ static int gpmc_probe(struct platform_device *pdev)
if (IS_ERR_VALUE(gpmc_setup_irq())) if (IS_ERR_VALUE(gpmc_setup_irq()))
dev_warn(gpmc_dev, "gpmc_setup_irq failed\n"); dev_warn(gpmc_dev, "gpmc_setup_irq failed\n");
/* Now the GPMC is initialised, unreserve the chip-selects */
gpmc_cs_map = 0;
rc = gpmc_probe_dt(pdev); rc = gpmc_probe_dt(pdev);
if (rc < 0) { if (rc < 0) {
clk_disable_unprepare(gpmc_l3_clk); clk_disable_unprepare(gpmc_l3_clk);
......
...@@ -211,8 +211,6 @@ static int __init _omap_mux_get_by_name(struct omap_mux_partition *partition, ...@@ -211,8 +211,6 @@ static int __init _omap_mux_get_by_name(struct omap_mux_partition *partition,
return -EINVAL; return -EINVAL;
} }
pr_err("%s: Could not find signal %s\n", __func__, muxname);
return -ENODEV; return -ENODEV;
} }
...@@ -234,6 +232,8 @@ int __init omap_mux_get_by_name(const char *muxname, ...@@ -234,6 +232,8 @@ int __init omap_mux_get_by_name(const char *muxname,
return mux_mode; return mux_mode;
} }
pr_err("%s: Could not find signal %s\n", __func__, muxname);
return -ENODEV; return -ENODEV;
} }
...@@ -739,8 +739,9 @@ static void __init omap_mux_dbg_create_entry( ...@@ -739,8 +739,9 @@ static void __init omap_mux_dbg_create_entry(
list_for_each_entry(e, &partition->muxmodes, node) { list_for_each_entry(e, &partition->muxmodes, node) {
struct omap_mux *m = &e->mux; struct omap_mux *m = &e->mux;
(void)debugfs_create_file(m->muxnames[0], S_IWUSR, mux_dbg_dir, (void)debugfs_create_file(m->muxnames[0], S_IWUSR | S_IRUGO,
m, &omap_mux_dbg_signal_fops); mux_dbg_dir, m,
&omap_mux_dbg_signal_fops);
} }
} }
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
#define pr_fmt(fmt) "SPEAr3xx: " fmt #define pr_fmt(fmt) "SPEAr3xx: " fmt
#include <linux/amba/pl022.h> #include <linux/amba/pl022.h>
#include <linux/amba/pl08x.h> #include <linux/amba/pl080.h>
#include <linux/io.h> #include <linux/io.h>
#include <plat/pl080.h> #include <plat/pl080.h>
#include <mach/generic.h> #include <mach/generic.h>
......
...@@ -157,9 +157,12 @@ void __init orion_setup_cpu_mbus_target(const struct orion_addr_map_cfg *cfg, ...@@ -157,9 +157,12 @@ void __init orion_setup_cpu_mbus_target(const struct orion_addr_map_cfg *cfg,
u32 size = readl(ddr_window_cpu_base + DDR_SIZE_CS_OFF(i)); u32 size = readl(ddr_window_cpu_base + DDR_SIZE_CS_OFF(i));
/* /*
* Chip select enabled? * We only take care of entries for which the chip
* select is enabled, and that don't have high base
* address bits set (devices can only access the first
* 32 bits of the memory).
*/ */
if (size & 1) { if ((size & 1) && !(base & 0xF)) {
struct mbus_dram_window *w; struct mbus_dram_window *w;
w = &orion_mbus_dram_info.cs[cs++]; w = &orion_mbus_dram_info.cs[cs++];
......
...@@ -10,7 +10,7 @@ choice ...@@ -10,7 +10,7 @@ choice
config ARCH_SPEAR13XX config ARCH_SPEAR13XX
bool "ST SPEAr13xx with Device Tree" bool "ST SPEAr13xx with Device Tree"
select ARCH_HAVE_CPUFREQ select ARCH_HAS_CPUFREQ
select ARM_GIC select ARM_GIC
select CPU_V7 select CPU_V7
select GPIO_SPEAR_SPICS select GPIO_SPEAR_SPICS
......
...@@ -1292,7 +1292,6 @@ static struct tegra_clk_duplicate tegra_clk_duplicates[] = { ...@@ -1292,7 +1292,6 @@ static struct tegra_clk_duplicate tegra_clk_duplicates[] = {
TEGRA_CLK_DUPLICATE(usbd, "tegra-ehci.0", NULL), TEGRA_CLK_DUPLICATE(usbd, "tegra-ehci.0", NULL),
TEGRA_CLK_DUPLICATE(usbd, "tegra-otg", NULL), TEGRA_CLK_DUPLICATE(usbd, "tegra-otg", NULL),
TEGRA_CLK_DUPLICATE(cclk, NULL, "cpu"), TEGRA_CLK_DUPLICATE(cclk, NULL, "cpu"),
TEGRA_CLK_DUPLICATE(twd, "smp_twd", NULL),
TEGRA_CLK_DUPLICATE(clk_max, NULL, NULL), /* Must be the last entry */ TEGRA_CLK_DUPLICATE(clk_max, NULL, NULL), /* Must be the last entry */
}; };
......
...@@ -1931,7 +1931,6 @@ static struct tegra_clk_duplicate tegra_clk_duplicates[] = { ...@@ -1931,7 +1931,6 @@ static struct tegra_clk_duplicate tegra_clk_duplicates[] = {
TEGRA_CLK_DUPLICATE(cml1, "tegra_sata_cml", NULL), TEGRA_CLK_DUPLICATE(cml1, "tegra_sata_cml", NULL),
TEGRA_CLK_DUPLICATE(cml0, "tegra_pcie", "cml"), TEGRA_CLK_DUPLICATE(cml0, "tegra_pcie", "cml"),
TEGRA_CLK_DUPLICATE(pciex, "tegra_pcie", "pciex"), TEGRA_CLK_DUPLICATE(pciex, "tegra_pcie", "pciex"),
TEGRA_CLK_DUPLICATE(twd, "smp_twd", NULL),
TEGRA_CLK_DUPLICATE(vcp, "nvavp", "vcp"), TEGRA_CLK_DUPLICATE(vcp, "nvavp", "vcp"),
TEGRA_CLK_DUPLICATE(clk_max, NULL, NULL), /* MUST be the last entry */ TEGRA_CLK_DUPLICATE(clk_max, NULL, NULL), /* MUST be the last entry */
}; };
......
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
#include <linux/io.h> #include <linux/io.h>
#include <linux/of_irq.h> #include <linux/of_irq.h>
#include <linux/of_device.h> #include <linux/of_device.h>
#include <linux/clk.h>
#include <linux/pinctrl/consumer.h> #include <linux/pinctrl/consumer.h>
/* /*
...@@ -496,6 +497,7 @@ static int mvebu_gpio_probe(struct platform_device *pdev) ...@@ -496,6 +497,7 @@ static int mvebu_gpio_probe(struct platform_device *pdev)
struct resource *res; struct resource *res;
struct irq_chip_generic *gc; struct irq_chip_generic *gc;
struct irq_chip_type *ct; struct irq_chip_type *ct;
struct clk *clk;
unsigned int ngpios; unsigned int ngpios;
int soc_variant; int soc_variant;
int i, cpu, id; int i, cpu, id;
...@@ -529,6 +531,11 @@ static int mvebu_gpio_probe(struct platform_device *pdev) ...@@ -529,6 +531,11 @@ static int mvebu_gpio_probe(struct platform_device *pdev)
return id; return id;
} }
clk = devm_clk_get(&pdev->dev, NULL);
/* Not all SoCs require a clock.*/
if (!IS_ERR(clk))
clk_prepare_enable(clk);
mvchip->soc_variant = soc_variant; mvchip->soc_variant = soc_variant;
mvchip->chip.label = dev_name(&pdev->dev); mvchip->chip.label = dev_name(&pdev->dev);
mvchip->chip.dev = &pdev->dev; mvchip->chip.dev = &pdev->dev;
......
...@@ -648,7 +648,7 @@ void gic_raise_softirq(const struct cpumask *mask, unsigned int irq) ...@@ -648,7 +648,7 @@ void gic_raise_softirq(const struct cpumask *mask, unsigned int irq)
/* Convert our logical CPU mask into a physical one. */ /* Convert our logical CPU mask into a physical one. */
for_each_cpu(cpu, mask) for_each_cpu(cpu, mask)
map |= 1 << cpu_logical_map(cpu); map |= gic_cpu_map[cpu];
/* /*
* Ensure that stores to Normal memory are visible to the * Ensure that stores to Normal memory are visible to the
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/of.h> #include <linux/of.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/clk.h>
#include <linux/gfp.h> #include <linux/gfp.h>
#include <linux/module.h> #include <linux/module.h>
...@@ -41,6 +42,7 @@ struct rtc_plat_data { ...@@ -41,6 +42,7 @@ struct rtc_plat_data {
struct rtc_device *rtc; struct rtc_device *rtc;
void __iomem *ioaddr; void __iomem *ioaddr;
int irq; int irq;
struct clk *clk;
}; };
static int mv_rtc_set_time(struct device *dev, struct rtc_time *tm) static int mv_rtc_set_time(struct device *dev, struct rtc_time *tm)
...@@ -221,6 +223,7 @@ static int mv_rtc_probe(struct platform_device *pdev) ...@@ -221,6 +223,7 @@ static int mv_rtc_probe(struct platform_device *pdev)
struct rtc_plat_data *pdata; struct rtc_plat_data *pdata;
resource_size_t size; resource_size_t size;
u32 rtc_time; u32 rtc_time;
int ret = 0;
res = platform_get_resource(pdev, IORESOURCE_MEM, 0); res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!res) if (!res)
...@@ -239,11 +242,17 @@ static int mv_rtc_probe(struct platform_device *pdev) ...@@ -239,11 +242,17 @@ static int mv_rtc_probe(struct platform_device *pdev)
if (!pdata->ioaddr) if (!pdata->ioaddr)
return -ENOMEM; return -ENOMEM;
pdata->clk = devm_clk_get(&pdev->dev, NULL);
/* Not all SoCs require a clock.*/
if (!IS_ERR(pdata->clk))
clk_prepare_enable(pdata->clk);
/* make sure the 24 hours mode is enabled */ /* make sure the 24 hours mode is enabled */
rtc_time = readl(pdata->ioaddr + RTC_TIME_REG_OFFS); rtc_time = readl(pdata->ioaddr + RTC_TIME_REG_OFFS);
if (rtc_time & RTC_HOURS_12H_MODE) { if (rtc_time & RTC_HOURS_12H_MODE) {
dev_err(&pdev->dev, "24 Hours mode not supported.\n"); dev_err(&pdev->dev, "24 Hours mode not supported.\n");
return -EINVAL; ret = -EINVAL;
goto out;
} }
/* make sure it is actually functional */ /* make sure it is actually functional */
...@@ -252,7 +261,8 @@ static int mv_rtc_probe(struct platform_device *pdev) ...@@ -252,7 +261,8 @@ static int mv_rtc_probe(struct platform_device *pdev)
rtc_time = readl(pdata->ioaddr + RTC_TIME_REG_OFFS); rtc_time = readl(pdata->ioaddr + RTC_TIME_REG_OFFS);
if (rtc_time == 0x01000000) { if (rtc_time == 0x01000000) {
dev_err(&pdev->dev, "internal RTC not ticking\n"); dev_err(&pdev->dev, "internal RTC not ticking\n");
return -ENODEV; ret = -ENODEV;
goto out;
} }
} }
...@@ -268,8 +278,10 @@ static int mv_rtc_probe(struct platform_device *pdev) ...@@ -268,8 +278,10 @@ static int mv_rtc_probe(struct platform_device *pdev)
} else } else
pdata->rtc = rtc_device_register(pdev->name, &pdev->dev, pdata->rtc = rtc_device_register(pdev->name, &pdev->dev,
&mv_rtc_ops, THIS_MODULE); &mv_rtc_ops, THIS_MODULE);
if (IS_ERR(pdata->rtc)) if (IS_ERR(pdata->rtc)) {
return PTR_ERR(pdata->rtc); ret = PTR_ERR(pdata->rtc);
goto out;
}
if (pdata->irq >= 0) { if (pdata->irq >= 0) {
writel(0, pdata->ioaddr + RTC_ALARM_INTERRUPT_MASK_REG_OFFS); writel(0, pdata->ioaddr + RTC_ALARM_INTERRUPT_MASK_REG_OFFS);
...@@ -282,6 +294,11 @@ static int mv_rtc_probe(struct platform_device *pdev) ...@@ -282,6 +294,11 @@ static int mv_rtc_probe(struct platform_device *pdev)
} }
return 0; return 0;
out:
if (!IS_ERR(pdata->clk))
clk_disable_unprepare(pdata->clk);
return ret;
} }
static int __exit mv_rtc_remove(struct platform_device *pdev) static int __exit mv_rtc_remove(struct platform_device *pdev)
...@@ -292,6 +309,9 @@ static int __exit mv_rtc_remove(struct platform_device *pdev) ...@@ -292,6 +309,9 @@ static int __exit mv_rtc_remove(struct platform_device *pdev)
device_init_wakeup(&pdev->dev, 0); device_init_wakeup(&pdev->dev, 0);
rtc_device_unregister(pdata->rtc); rtc_device_unregister(pdata->rtc);
if (!IS_ERR(pdata->clk))
clk_disable_unprepare(pdata->clk);
return 0; return 0;
} }
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include <linux/lcd.h> #include <linux/lcd.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <mach/hardware.h>
#include <mach/board-ams-delta.h> #include <mach/board-ams-delta.h>
#include "omapfb.h" #include "omapfb.h"
......
...@@ -24,7 +24,10 @@ ...@@ -24,7 +24,10 @@
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <asm/gpio.h> #include <asm/gpio.h>
#include <mach/hardware.h>
#include <mach/mux.h> #include <mach/mux.h>
#include "omapfb.h" #include "omapfb.h"
static int osk_panel_init(struct lcd_panel *panel, struct omapfb_device *fbdev) static int osk_panel_init(struct lcd_panel *panel, struct omapfb_device *fbdev)
......
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