mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 20:22:09 +00:00
ARM: SoC fixes for 4.4-rc
Here are a bunch of small bug fixes for various ARM platforms, nothing really sticks out this week, most of either fixes bugs in code that was just added in 4.4, or that has been broken for many years without anyone noticing. at91/sama5d2 - fix sama5de hardware setup of sd/mmc interface - proper selection of pinctrl drivers. PIO4 is necessary for sama5d2 berlin - fix incorrect clock input for SDIO exynos - Fix potential NULL pointer dereference in Exynos PMU driver. imx - Fix vf610 SAI clock configuration bug which is discovered by the newly added master mode support in SAI audio driver. - Fix buggy L2 cache latency values in vf610 device trees, which may cause system hang when cpu runs at a higher frequency. ixp4xx - fix prototypes for readl/writel functions ls2080a - use little-endian register access for GPIO and SDHCI omap - Fix clock source for ARM TWD and global timers on am437x - Always select REGULATOR_FIXED_VOLTAGE for omap2+ instead of when MACH_OMAP3_PANDORA is selected - Fix SPI DMA handles for dm816x as only some were mapped - Fix up mbox cells for dm816x to make mailbox usable pxa - use PWM lookup table for all ezx machines s3c24xx - Remove incorrect __init annotation from s3c24xx cpufreq driver structures. versatile - fix PCI IRQ mapping on Versatile PB -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIVAwUAVmyQMWCrR//JCVInAQIIDA//VyJ2UoTJ2JC3thVP56P/ZXh7Pz8VDqnq cgoFUio27IeHPSgs+W9qWliOrb+LaXkuOl8CKgepm+Bv7j8Y+uryP4X2rKQ3ZRmy 2f5+uUqAIZ0Co2aJdtG395lY9TKNHl6cPEskcbgL7cjdgj7QBqfIyj22QZbj6yRp kp8pj+cKXBFRLa5PvePon2w03MA/bLaP30VzKCSL1zchcs52rxekU694V3ISNa63 eshyyKf354Sl9hP4Y8xCdl/mboymKzQxEGDQS/Fcb8h/OQ3djoh+7EKdVbdyZ2A7 phgfazd2aE7wQ5GVIkMNV/MzGHj9xpiD4Z1Hi/2E8WdzuXJTRicS4bJihRAIualt H1FOEdgqT+xS4JUYxAvl46fwwqcFJfixtGgKka27sJTtk+Y1kHjASWvueZKlHMIK ln9CF7PoecF0InQaY2N8Vy05Qcp5MuoB/0v+XlftI0sAtIXNeo142H2NQZCsO+1U bJDyb5E4z06jzqk7IOK4/AKyEAV9KZPDws+ZxcNH/faPT10epK7MeZdetbD7b8q3 pkY7s5iXV8uBox7FtHoamrlMFgAzN9Qh0E4bcw70aKaJZZ02ozTXCvJIKjoIPMne FsvidQToznqbA2RSXpxRQrcXrMxvURaPCRBe7CxrCoynmhIxd4UHND2HJ4OG645z 4SAGOzOlZKM= =fgEd -----END PGP SIGNATURE----- Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc Pull ARM SoC fixes from Arnd Bergmann: "Here are a bunch of small bug fixes for various ARM platforms, nothing really sticks out this week, most of either fixes bugs in code that was just added in 4.4, or that has been broken for many years without anyone noticing. at91/sama5d2: - fix sama5de hardware setup of sd/mmc interface - proper selection of pinctrl drivers. PIO4 is necessary for sama5d2 berlin: - fix incorrect clock input for SDIO exynos: - Fix potential NULL pointer dereference in Exynos PMU driver. imx: - Fix vf610 SAI clock configuration bug which is discovered by the newly added master mode support in SAI audio driver. - Fix buggy L2 cache latency values in vf610 device trees, which may cause system hang when cpu runs at a higher frequency. ixp4xx: - fix prototypes for readl/writel functions ls2080a: - use little-endian register access for GPIO and SDHCI omap: - Fix clock source for ARM TWD and global timers on am437x - Always select REGULATOR_FIXED_VOLTAGE for omap2+ instead of when MACH_OMAP3_PANDORA is selected - Fix SPI DMA handles for dm816x as only some were mapped - Fix up mbox cells for dm816x to make mailbox usable pxa: - use PWM lookup table for all ezx machines s3c24xx: - Remove incorrect __init annotation from s3c24xx cpufreq driver structures. versatile: - fix PCI IRQ mapping on Versatile PB" * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: ls2080a/dts: Add little endian property for GPIO IP block dt-bindings: define little-endian property for QorIQ GPIO ARM64: dts: ls2080a: fix eSDHC endianness ARM: dts: vf610: use reset values for L2 cache latencies ARM: pxa: use PWM lookup table for all machines ARM: dts: berlin: add 2nd clock for BG2Q sdhci0 and sdhci1 ARM: dts: berlin: correct BG2Q's sdhci2 2nd clock ARM: dts: am4372: fix clock source for arm twd and global timers ARM: at91: fix pinctrl driver selection ARM: at91/dt: add always-on to 1.8V regulator ARM: dts: vf610: fix clock definition for SAI2 ARM: imx: clk-vf610: fix SAI clock tree ARM: ixp4xx: fix read{b,w,l} return types irqchip/versatile-fpga: Fix PCI IRQ mapping on Versatile PB ARM: OMAP2+: enable REGULATOR_FIXED_VOLTAGE ARM: dts: add dm816x missing spi DT dma handles ARM: dts: add dm816x missing #mbox-cells cpufreq: s3c24xx: Do not mark s3c2410_plls_add as __init ARM: EXYNOS: Fix potential NULL pointer access in exynos_sys_powerdown_conf
This commit is contained in:
commit
097b285d32
@ -11,6 +11,10 @@ Required properties:
|
|||||||
0 = active high
|
0 = active high
|
||||||
1 = active low
|
1 = active low
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- little-endian : GPIO registers are used as little endian. If not
|
||||||
|
present registers are used as big endian by default.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
gpio0: gpio@1100 {
|
gpio0: gpio@1100 {
|
||||||
|
@ -74,7 +74,7 @@
|
|||||||
reg = <0x48240200 0x100>;
|
reg = <0x48240200 0x100>;
|
||||||
interrupts = <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupt-parent = <&gic>;
|
interrupt-parent = <&gic>;
|
||||||
clocks = <&dpll_mpu_m2_ck>;
|
clocks = <&mpu_periphclk>;
|
||||||
};
|
};
|
||||||
|
|
||||||
local_timer: timer@48240600 {
|
local_timer: timer@48240600 {
|
||||||
@ -82,7 +82,7 @@
|
|||||||
reg = <0x48240600 0x100>;
|
reg = <0x48240600 0x100>;
|
||||||
interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupt-parent = <&gic>;
|
interrupt-parent = <&gic>;
|
||||||
clocks = <&dpll_mpu_m2_ck>;
|
clocks = <&mpu_periphclk>;
|
||||||
};
|
};
|
||||||
|
|
||||||
l2-cache-controller@48242000 {
|
l2-cache-controller@48242000 {
|
||||||
|
@ -259,6 +259,14 @@
|
|||||||
ti,invert-autoidle-bit;
|
ti,invert-autoidle-bit;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
mpu_periphclk: mpu_periphclk {
|
||||||
|
#clock-cells = <0>;
|
||||||
|
compatible = "fixed-factor-clock";
|
||||||
|
clocks = <&dpll_mpu_m2_ck>;
|
||||||
|
clock-mult = <1>;
|
||||||
|
clock-div = <2>;
|
||||||
|
};
|
||||||
|
|
||||||
dpll_ddr_ck: dpll_ddr_ck {
|
dpll_ddr_ck: dpll_ddr_ck {
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
compatible = "ti,am3-dpll-clock";
|
compatible = "ti,am3-dpll-clock";
|
||||||
|
@ -184,6 +184,7 @@
|
|||||||
regulator-name = "VDD_SDHC_1V8";
|
regulator-name = "VDD_SDHC_1V8";
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <1800000>;
|
regulator-max-microvolt = <1800000>;
|
||||||
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -118,7 +118,8 @@
|
|||||||
sdhci0: sdhci@ab0000 {
|
sdhci0: sdhci@ab0000 {
|
||||||
compatible = "mrvl,pxav3-mmc";
|
compatible = "mrvl,pxav3-mmc";
|
||||||
reg = <0xab0000 0x200>;
|
reg = <0xab0000 0x200>;
|
||||||
clocks = <&chip_clk CLKID_SDIO1XIN>;
|
clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO>;
|
||||||
|
clock-names = "io", "core";
|
||||||
interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
@ -126,7 +127,8 @@
|
|||||||
sdhci1: sdhci@ab0800 {
|
sdhci1: sdhci@ab0800 {
|
||||||
compatible = "mrvl,pxav3-mmc";
|
compatible = "mrvl,pxav3-mmc";
|
||||||
reg = <0xab0800 0x200>;
|
reg = <0xab0800 0x200>;
|
||||||
clocks = <&chip_clk CLKID_SDIO1XIN>;
|
clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO>;
|
||||||
|
clock-names = "io", "core";
|
||||||
interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
@ -135,7 +137,7 @@
|
|||||||
compatible = "mrvl,pxav3-mmc";
|
compatible = "mrvl,pxav3-mmc";
|
||||||
reg = <0xab1000 0x200>;
|
reg = <0xab1000 0x200>;
|
||||||
interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&chip_clk CLKID_NFC_ECC>, <&chip_clk CLKID_NFC>;
|
clocks = <&chip_clk CLKID_NFC_ECC>, <&chip_clk CLKID_SDIO>;
|
||||||
clock-names = "io", "core";
|
clock-names = "io", "core";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
@ -218,6 +218,7 @@
|
|||||||
reg = <0x480c8000 0x2000>;
|
reg = <0x480c8000 0x2000>;
|
||||||
interrupts = <77>;
|
interrupts = <77>;
|
||||||
ti,hwmods = "mailbox";
|
ti,hwmods = "mailbox";
|
||||||
|
#mbox-cells = <1>;
|
||||||
ti,mbox-num-users = <4>;
|
ti,mbox-num-users = <4>;
|
||||||
ti,mbox-num-fifos = <12>;
|
ti,mbox-num-fifos = <12>;
|
||||||
mbox_dsp: mbox_dsp {
|
mbox_dsp: mbox_dsp {
|
||||||
@ -279,8 +280,11 @@
|
|||||||
ti,spi-num-cs = <4>;
|
ti,spi-num-cs = <4>;
|
||||||
ti,hwmods = "mcspi1";
|
ti,hwmods = "mcspi1";
|
||||||
dmas = <&edma 16 &edma 17
|
dmas = <&edma 16 &edma 17
|
||||||
&edma 18 &edma 19>;
|
&edma 18 &edma 19
|
||||||
dma-names = "tx0", "rx0", "tx1", "rx1";
|
&edma 20 &edma 21
|
||||||
|
&edma 22 &edma 23>;
|
||||||
|
dma-names = "tx0", "rx0", "tx1", "rx1",
|
||||||
|
"tx2", "rx2", "tx3", "rx3";
|
||||||
};
|
};
|
||||||
|
|
||||||
mmc1: mmc@48060000 {
|
mmc1: mmc@48060000 {
|
||||||
|
@ -18,8 +18,3 @@
|
|||||||
reg = <0x80000000 0x10000000>;
|
reg = <0x80000000 0x10000000>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&L2 {
|
|
||||||
arm,data-latency = <2 1 2>;
|
|
||||||
arm,tag-latency = <3 2 3>;
|
|
||||||
};
|
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
reg = <0x40006000 0x1000>;
|
reg = <0x40006000 0x1000>;
|
||||||
cache-unified;
|
cache-unified;
|
||||||
cache-level = <2>;
|
cache-level = <2>;
|
||||||
arm,data-latency = <1 1 1>;
|
arm,data-latency = <3 3 3>;
|
||||||
arm,tag-latency = <2 2 2>;
|
arm,tag-latency = <2 2 2>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -178,8 +178,10 @@
|
|||||||
compatible = "fsl,vf610-sai";
|
compatible = "fsl,vf610-sai";
|
||||||
reg = <0x40031000 0x1000>;
|
reg = <0x40031000 0x1000>;
|
||||||
interrupts = <86 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <86 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&clks VF610_CLK_SAI2>;
|
clocks = <&clks VF610_CLK_SAI2>,
|
||||||
clock-names = "sai";
|
<&clks VF610_CLK_SAI2_DIV>,
|
||||||
|
<&clks 0>, <&clks 0>;
|
||||||
|
clock-names = "bus", "mclk1", "mclk2", "mclk3";
|
||||||
dma-names = "tx", "rx";
|
dma-names = "tx", "rx";
|
||||||
dmas = <&edma0 0 21>,
|
dmas = <&edma0 0 21>,
|
||||||
<&edma0 0 20>;
|
<&edma0 0 20>;
|
||||||
|
@ -4,7 +4,6 @@ menuconfig ARCH_AT91
|
|||||||
select ARCH_REQUIRE_GPIOLIB
|
select ARCH_REQUIRE_GPIOLIB
|
||||||
select COMMON_CLK_AT91
|
select COMMON_CLK_AT91
|
||||||
select PINCTRL
|
select PINCTRL
|
||||||
select PINCTRL_AT91
|
|
||||||
select SOC_BUS
|
select SOC_BUS
|
||||||
|
|
||||||
if ARCH_AT91
|
if ARCH_AT91
|
||||||
@ -17,6 +16,7 @@ config SOC_SAMA5D2
|
|||||||
select HAVE_AT91_USB_CLK
|
select HAVE_AT91_USB_CLK
|
||||||
select HAVE_AT91_H32MX
|
select HAVE_AT91_H32MX
|
||||||
select HAVE_AT91_GENERATED_CLK
|
select HAVE_AT91_GENERATED_CLK
|
||||||
|
select PINCTRL_AT91PIO4
|
||||||
help
|
help
|
||||||
Select this if ou are using one of Atmel's SAMA5D2 family SoC.
|
Select this if ou are using one of Atmel's SAMA5D2 family SoC.
|
||||||
|
|
||||||
@ -27,6 +27,7 @@ config SOC_SAMA5D3
|
|||||||
select HAVE_AT91_UTMI
|
select HAVE_AT91_UTMI
|
||||||
select HAVE_AT91_SMD
|
select HAVE_AT91_SMD
|
||||||
select HAVE_AT91_USB_CLK
|
select HAVE_AT91_USB_CLK
|
||||||
|
select PINCTRL_AT91
|
||||||
help
|
help
|
||||||
Select this if you are using one of Atmel's SAMA5D3 family SoC.
|
Select this if you are using one of Atmel's SAMA5D3 family SoC.
|
||||||
This support covers SAMA5D31, SAMA5D33, SAMA5D34, SAMA5D35, SAMA5D36.
|
This support covers SAMA5D31, SAMA5D33, SAMA5D34, SAMA5D35, SAMA5D36.
|
||||||
@ -40,6 +41,7 @@ config SOC_SAMA5D4
|
|||||||
select HAVE_AT91_SMD
|
select HAVE_AT91_SMD
|
||||||
select HAVE_AT91_USB_CLK
|
select HAVE_AT91_USB_CLK
|
||||||
select HAVE_AT91_H32MX
|
select HAVE_AT91_H32MX
|
||||||
|
select PINCTRL_AT91
|
||||||
help
|
help
|
||||||
Select this if you are using one of Atmel's SAMA5D4 family SoC.
|
Select this if you are using one of Atmel's SAMA5D4 family SoC.
|
||||||
|
|
||||||
@ -50,6 +52,7 @@ config SOC_AT91RM9200
|
|||||||
select CPU_ARM920T
|
select CPU_ARM920T
|
||||||
select HAVE_AT91_USB_CLK
|
select HAVE_AT91_USB_CLK
|
||||||
select MIGHT_HAVE_PCI
|
select MIGHT_HAVE_PCI
|
||||||
|
select PINCTRL_AT91
|
||||||
select SOC_SAM_V4_V5
|
select SOC_SAM_V4_V5
|
||||||
select SRAM if PM
|
select SRAM if PM
|
||||||
help
|
help
|
||||||
@ -65,6 +68,7 @@ config SOC_AT91SAM9
|
|||||||
select HAVE_AT91_UTMI
|
select HAVE_AT91_UTMI
|
||||||
select HAVE_FB_ATMEL
|
select HAVE_FB_ATMEL
|
||||||
select MEMORY
|
select MEMORY
|
||||||
|
select PINCTRL_AT91
|
||||||
select SOC_SAM_V4_V5
|
select SOC_SAM_V4_V5
|
||||||
select SRAM if PM
|
select SRAM if PM
|
||||||
help
|
help
|
||||||
|
@ -41,8 +41,10 @@
|
|||||||
* implementation should be moved down into the pinctrl driver and get
|
* implementation should be moved down into the pinctrl driver and get
|
||||||
* called as part of the generic suspend/resume path.
|
* called as part of the generic suspend/resume path.
|
||||||
*/
|
*/
|
||||||
|
#ifdef CONFIG_PINCTRL_AT91
|
||||||
extern void at91_pinctrl_gpio_suspend(void);
|
extern void at91_pinctrl_gpio_suspend(void);
|
||||||
extern void at91_pinctrl_gpio_resume(void);
|
extern void at91_pinctrl_gpio_resume(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
static struct {
|
static struct {
|
||||||
unsigned long uhp_udp_mask;
|
unsigned long uhp_udp_mask;
|
||||||
@ -151,8 +153,9 @@ static void at91_pm_suspend(suspend_state_t state)
|
|||||||
|
|
||||||
static int at91_pm_enter(suspend_state_t state)
|
static int at91_pm_enter(suspend_state_t state)
|
||||||
{
|
{
|
||||||
|
#ifdef CONFIG_PINCTRL_AT91
|
||||||
at91_pinctrl_gpio_suspend();
|
at91_pinctrl_gpio_suspend();
|
||||||
|
#endif
|
||||||
switch (state) {
|
switch (state) {
|
||||||
/*
|
/*
|
||||||
* Suspend-to-RAM is like STANDBY plus slow clock mode, so
|
* Suspend-to-RAM is like STANDBY plus slow clock mode, so
|
||||||
@ -192,7 +195,9 @@ static int at91_pm_enter(suspend_state_t state)
|
|||||||
error:
|
error:
|
||||||
target_state = PM_SUSPEND_ON;
|
target_state = PM_SUSPEND_ON;
|
||||||
|
|
||||||
|
#ifdef CONFIG_PINCTRL_AT91
|
||||||
at91_pinctrl_gpio_resume();
|
at91_pinctrl_gpio_resume();
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -748,8 +748,12 @@ static void exynos5_powerdown_conf(enum sys_powerdown mode)
|
|||||||
void exynos_sys_powerdown_conf(enum sys_powerdown mode)
|
void exynos_sys_powerdown_conf(enum sys_powerdown mode)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
const struct exynos_pmu_data *pmu_data;
|
||||||
|
|
||||||
const struct exynos_pmu_data *pmu_data = pmu_context->pmu_data;
|
if (!pmu_context)
|
||||||
|
return;
|
||||||
|
|
||||||
|
pmu_data = pmu_context->pmu_data;
|
||||||
|
|
||||||
if (pmu_data->powerdown_conf)
|
if (pmu_data->powerdown_conf)
|
||||||
pmu_data->powerdown_conf(mode);
|
pmu_data->powerdown_conf(mode);
|
||||||
|
@ -143,7 +143,7 @@ static inline void __indirect_writesl(volatile void __iomem *bus_addr,
|
|||||||
writel(*vaddr++, bus_addr);
|
writel(*vaddr++, bus_addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline unsigned char __indirect_readb(const volatile void __iomem *p)
|
static inline u8 __indirect_readb(const volatile void __iomem *p)
|
||||||
{
|
{
|
||||||
u32 addr = (u32)p;
|
u32 addr = (u32)p;
|
||||||
u32 n, byte_enables, data;
|
u32 n, byte_enables, data;
|
||||||
@ -166,7 +166,7 @@ static inline void __indirect_readsb(const volatile void __iomem *bus_addr,
|
|||||||
*vaddr++ = readb(bus_addr);
|
*vaddr++ = readb(bus_addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline unsigned short __indirect_readw(const volatile void __iomem *p)
|
static inline u16 __indirect_readw(const volatile void __iomem *p)
|
||||||
{
|
{
|
||||||
u32 addr = (u32)p;
|
u32 addr = (u32)p;
|
||||||
u32 n, byte_enables, data;
|
u32 n, byte_enables, data;
|
||||||
@ -189,7 +189,7 @@ static inline void __indirect_readsw(const volatile void __iomem *bus_addr,
|
|||||||
*vaddr++ = readw(bus_addr);
|
*vaddr++ = readw(bus_addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline unsigned long __indirect_readl(const volatile void __iomem *p)
|
static inline u32 __indirect_readl(const volatile void __iomem *p)
|
||||||
{
|
{
|
||||||
u32 addr = (__force u32)p;
|
u32 addr = (__force u32)p;
|
||||||
u32 data;
|
u32 data;
|
||||||
@ -350,7 +350,7 @@ static inline void insl(u32 io_addr, void *p, u32 count)
|
|||||||
((unsigned long)p <= (PIO_MASK + PIO_OFFSET)))
|
((unsigned long)p <= (PIO_MASK + PIO_OFFSET)))
|
||||||
|
|
||||||
#define ioread8(p) ioread8(p)
|
#define ioread8(p) ioread8(p)
|
||||||
static inline unsigned int ioread8(const void __iomem *addr)
|
static inline u8 ioread8(const void __iomem *addr)
|
||||||
{
|
{
|
||||||
unsigned long port = (unsigned long __force)addr;
|
unsigned long port = (unsigned long __force)addr;
|
||||||
if (__is_io_address(port))
|
if (__is_io_address(port))
|
||||||
@ -378,7 +378,7 @@ static inline void ioread8_rep(const void __iomem *addr, void *vaddr, u32 count)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define ioread16(p) ioread16(p)
|
#define ioread16(p) ioread16(p)
|
||||||
static inline unsigned int ioread16(const void __iomem *addr)
|
static inline u16 ioread16(const void __iomem *addr)
|
||||||
{
|
{
|
||||||
unsigned long port = (unsigned long __force)addr;
|
unsigned long port = (unsigned long __force)addr;
|
||||||
if (__is_io_address(port))
|
if (__is_io_address(port))
|
||||||
@ -407,7 +407,7 @@ static inline void ioread16_rep(const void __iomem *addr, void *vaddr,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define ioread32(p) ioread32(p)
|
#define ioread32(p) ioread32(p)
|
||||||
static inline unsigned int ioread32(const void __iomem *addr)
|
static inline u32 ioread32(const void __iomem *addr)
|
||||||
{
|
{
|
||||||
unsigned long port = (unsigned long __force)addr;
|
unsigned long port = (unsigned long __force)addr;
|
||||||
if (__is_io_address(port))
|
if (__is_io_address(port))
|
||||||
|
@ -121,6 +121,7 @@ config ARCH_OMAP2PLUS_TYPICAL
|
|||||||
select NEON if CPU_V7
|
select NEON if CPU_V7
|
||||||
select PM
|
select PM
|
||||||
select REGULATOR
|
select REGULATOR
|
||||||
|
select REGULATOR_FIXED_VOLTAGE
|
||||||
select TWL4030_CORE if ARCH_OMAP3 || ARCH_OMAP4
|
select TWL4030_CORE if ARCH_OMAP3 || ARCH_OMAP4
|
||||||
select TWL4030_POWER if ARCH_OMAP3 || ARCH_OMAP4
|
select TWL4030_POWER if ARCH_OMAP3 || ARCH_OMAP4
|
||||||
select VFP
|
select VFP
|
||||||
@ -201,7 +202,6 @@ config MACH_OMAP3_PANDORA
|
|||||||
depends on ARCH_OMAP3
|
depends on ARCH_OMAP3
|
||||||
default y
|
default y
|
||||||
select OMAP_PACKAGE_CBB
|
select OMAP_PACKAGE_CBB
|
||||||
select REGULATOR_FIXED_VOLTAGE if REGULATOR
|
|
||||||
|
|
||||||
config MACH_NOKIA_N810
|
config MACH_NOKIA_N810
|
||||||
bool
|
bool
|
||||||
|
@ -889,6 +889,7 @@ static void __init e680_init(void)
|
|||||||
|
|
||||||
pxa_set_keypad_info(&e680_keypad_platform_data);
|
pxa_set_keypad_info(&e680_keypad_platform_data);
|
||||||
|
|
||||||
|
pwm_add_table(ezx_pwm_lookup, ARRAY_SIZE(ezx_pwm_lookup));
|
||||||
platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
|
platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
|
||||||
platform_add_devices(ARRAY_AND_SIZE(e680_devices));
|
platform_add_devices(ARRAY_AND_SIZE(e680_devices));
|
||||||
}
|
}
|
||||||
@ -956,6 +957,7 @@ static void __init a1200_init(void)
|
|||||||
|
|
||||||
pxa_set_keypad_info(&a1200_keypad_platform_data);
|
pxa_set_keypad_info(&a1200_keypad_platform_data);
|
||||||
|
|
||||||
|
pwm_add_table(ezx_pwm_lookup, ARRAY_SIZE(ezx_pwm_lookup));
|
||||||
platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
|
platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
|
||||||
platform_add_devices(ARRAY_AND_SIZE(a1200_devices));
|
platform_add_devices(ARRAY_AND_SIZE(a1200_devices));
|
||||||
}
|
}
|
||||||
@ -1148,6 +1150,7 @@ static void __init a910_init(void)
|
|||||||
platform_device_register(&a910_camera);
|
platform_device_register(&a910_camera);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pwm_add_table(ezx_pwm_lookup, ARRAY_SIZE(ezx_pwm_lookup));
|
||||||
platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
|
platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
|
||||||
platform_add_devices(ARRAY_AND_SIZE(a910_devices));
|
platform_add_devices(ARRAY_AND_SIZE(a910_devices));
|
||||||
}
|
}
|
||||||
@ -1215,6 +1218,7 @@ static void __init e6_init(void)
|
|||||||
|
|
||||||
pxa_set_keypad_info(&e6_keypad_platform_data);
|
pxa_set_keypad_info(&e6_keypad_platform_data);
|
||||||
|
|
||||||
|
pwm_add_table(ezx_pwm_lookup, ARRAY_SIZE(ezx_pwm_lookup));
|
||||||
platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
|
platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
|
||||||
platform_add_devices(ARRAY_AND_SIZE(e6_devices));
|
platform_add_devices(ARRAY_AND_SIZE(e6_devices));
|
||||||
}
|
}
|
||||||
@ -1256,6 +1260,7 @@ static void __init e2_init(void)
|
|||||||
|
|
||||||
pxa_set_keypad_info(&e2_keypad_platform_data);
|
pxa_set_keypad_info(&e2_keypad_platform_data);
|
||||||
|
|
||||||
|
pwm_add_table(ezx_pwm_lookup, ARRAY_SIZE(ezx_pwm_lookup));
|
||||||
platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
|
platform_add_devices(ARRAY_AND_SIZE(ezx_devices));
|
||||||
platform_add_devices(ARRAY_AND_SIZE(e2_devices));
|
platform_add_devices(ARRAY_AND_SIZE(e2_devices));
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
#include <plat/cpu.h>
|
#include <plat/cpu.h>
|
||||||
#include <plat/cpu-freq-core.h>
|
#include <plat/cpu-freq-core.h>
|
||||||
|
|
||||||
static struct cpufreq_frequency_table s3c2440_plls_12[] __initdata = {
|
static struct cpufreq_frequency_table s3c2440_plls_12[] = {
|
||||||
{ .frequency = 75000000, .driver_data = PLLVAL(0x75, 3, 3), }, /* FVco 600.000000 */
|
{ .frequency = 75000000, .driver_data = PLLVAL(0x75, 3, 3), }, /* FVco 600.000000 */
|
||||||
{ .frequency = 80000000, .driver_data = PLLVAL(0x98, 4, 3), }, /* FVco 640.000000 */
|
{ .frequency = 80000000, .driver_data = PLLVAL(0x98, 4, 3), }, /* FVco 640.000000 */
|
||||||
{ .frequency = 90000000, .driver_data = PLLVAL(0x70, 2, 3), }, /* FVco 720.000000 */
|
{ .frequency = 90000000, .driver_data = PLLVAL(0x70, 2, 3), }, /* FVco 720.000000 */
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
#include <plat/cpu.h>
|
#include <plat/cpu.h>
|
||||||
#include <plat/cpu-freq-core.h>
|
#include <plat/cpu-freq-core.h>
|
||||||
|
|
||||||
static struct cpufreq_frequency_table s3c2440_plls_169344[] __initdata = {
|
static struct cpufreq_frequency_table s3c2440_plls_169344[] = {
|
||||||
{ .frequency = 78019200, .driver_data = PLLVAL(121, 5, 3), }, /* FVco 624.153600 */
|
{ .frequency = 78019200, .driver_data = PLLVAL(121, 5, 3), }, /* FVco 624.153600 */
|
||||||
{ .frequency = 84067200, .driver_data = PLLVAL(131, 5, 3), }, /* FVco 672.537600 */
|
{ .frequency = 84067200, .driver_data = PLLVAL(131, 5, 3), }, /* FVco 672.537600 */
|
||||||
{ .frequency = 90115200, .driver_data = PLLVAL(141, 5, 3), }, /* FVco 720.921600 */
|
{ .frequency = 90115200, .driver_data = PLLVAL(141, 5, 3), }, /* FVco 720.921600 */
|
||||||
|
@ -269,6 +269,7 @@
|
|||||||
clock-frequency = <0>; /* Updated by bootloader */
|
clock-frequency = <0>; /* Updated by bootloader */
|
||||||
voltage-ranges = <1800 1800 3300 3300>;
|
voltage-ranges = <1800 1800 3300 3300>;
|
||||||
sdhci,auto-cmd12;
|
sdhci,auto-cmd12;
|
||||||
|
little-endian;
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -277,6 +278,7 @@
|
|||||||
reg = <0x0 0x2300000 0x0 0x10000>;
|
reg = <0x0 0x2300000 0x0 0x10000>;
|
||||||
interrupts = <0 36 0x4>; /* Level high type */
|
interrupts = <0 36 0x4>; /* Level high type */
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
|
little-endian;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <2>;
|
#interrupt-cells = <2>;
|
||||||
@ -287,6 +289,7 @@
|
|||||||
reg = <0x0 0x2310000 0x0 0x10000>;
|
reg = <0x0 0x2310000 0x0 0x10000>;
|
||||||
interrupts = <0 36 0x4>; /* Level high type */
|
interrupts = <0 36 0x4>; /* Level high type */
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
|
little-endian;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <2>;
|
#interrupt-cells = <2>;
|
||||||
@ -297,6 +300,7 @@
|
|||||||
reg = <0x0 0x2320000 0x0 0x10000>;
|
reg = <0x0 0x2320000 0x0 0x10000>;
|
||||||
interrupts = <0 37 0x4>; /* Level high type */
|
interrupts = <0 37 0x4>; /* Level high type */
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
|
little-endian;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <2>;
|
#interrupt-cells = <2>;
|
||||||
@ -307,6 +311,7 @@
|
|||||||
reg = <0x0 0x2330000 0x0 0x10000>;
|
reg = <0x0 0x2330000 0x0 0x10000>;
|
||||||
interrupts = <0 37 0x4>; /* Level high type */
|
interrupts = <0 37 0x4>; /* Level high type */
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
|
little-endian;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <2>;
|
#interrupt-cells = <2>;
|
||||||
|
@ -335,22 +335,22 @@ static void __init vf610_clocks_init(struct device_node *ccm_node)
|
|||||||
clk[VF610_CLK_SAI0_SEL] = imx_clk_mux("sai0_sel", CCM_CSCMR1, 0, 2, sai_sels, 4);
|
clk[VF610_CLK_SAI0_SEL] = imx_clk_mux("sai0_sel", CCM_CSCMR1, 0, 2, sai_sels, 4);
|
||||||
clk[VF610_CLK_SAI0_EN] = imx_clk_gate("sai0_en", "sai0_sel", CCM_CSCDR1, 16);
|
clk[VF610_CLK_SAI0_EN] = imx_clk_gate("sai0_en", "sai0_sel", CCM_CSCDR1, 16);
|
||||||
clk[VF610_CLK_SAI0_DIV] = imx_clk_divider("sai0_div", "sai0_en", CCM_CSCDR1, 0, 4);
|
clk[VF610_CLK_SAI0_DIV] = imx_clk_divider("sai0_div", "sai0_en", CCM_CSCDR1, 0, 4);
|
||||||
clk[VF610_CLK_SAI0] = imx_clk_gate2("sai0", "sai0_div", CCM_CCGR0, CCM_CCGRx_CGn(15));
|
clk[VF610_CLK_SAI0] = imx_clk_gate2("sai0", "ipg_bus", CCM_CCGR0, CCM_CCGRx_CGn(15));
|
||||||
|
|
||||||
clk[VF610_CLK_SAI1_SEL] = imx_clk_mux("sai1_sel", CCM_CSCMR1, 2, 2, sai_sels, 4);
|
clk[VF610_CLK_SAI1_SEL] = imx_clk_mux("sai1_sel", CCM_CSCMR1, 2, 2, sai_sels, 4);
|
||||||
clk[VF610_CLK_SAI1_EN] = imx_clk_gate("sai1_en", "sai1_sel", CCM_CSCDR1, 17);
|
clk[VF610_CLK_SAI1_EN] = imx_clk_gate("sai1_en", "sai1_sel", CCM_CSCDR1, 17);
|
||||||
clk[VF610_CLK_SAI1_DIV] = imx_clk_divider("sai1_div", "sai1_en", CCM_CSCDR1, 4, 4);
|
clk[VF610_CLK_SAI1_DIV] = imx_clk_divider("sai1_div", "sai1_en", CCM_CSCDR1, 4, 4);
|
||||||
clk[VF610_CLK_SAI1] = imx_clk_gate2("sai1", "sai1_div", CCM_CCGR1, CCM_CCGRx_CGn(0));
|
clk[VF610_CLK_SAI1] = imx_clk_gate2("sai1", "ipg_bus", CCM_CCGR1, CCM_CCGRx_CGn(0));
|
||||||
|
|
||||||
clk[VF610_CLK_SAI2_SEL] = imx_clk_mux("sai2_sel", CCM_CSCMR1, 4, 2, sai_sels, 4);
|
clk[VF610_CLK_SAI2_SEL] = imx_clk_mux("sai2_sel", CCM_CSCMR1, 4, 2, sai_sels, 4);
|
||||||
clk[VF610_CLK_SAI2_EN] = imx_clk_gate("sai2_en", "sai2_sel", CCM_CSCDR1, 18);
|
clk[VF610_CLK_SAI2_EN] = imx_clk_gate("sai2_en", "sai2_sel", CCM_CSCDR1, 18);
|
||||||
clk[VF610_CLK_SAI2_DIV] = imx_clk_divider("sai2_div", "sai2_en", CCM_CSCDR1, 8, 4);
|
clk[VF610_CLK_SAI2_DIV] = imx_clk_divider("sai2_div", "sai2_en", CCM_CSCDR1, 8, 4);
|
||||||
clk[VF610_CLK_SAI2] = imx_clk_gate2("sai2", "sai2_div", CCM_CCGR1, CCM_CCGRx_CGn(1));
|
clk[VF610_CLK_SAI2] = imx_clk_gate2("sai2", "ipg_bus", CCM_CCGR1, CCM_CCGRx_CGn(1));
|
||||||
|
|
||||||
clk[VF610_CLK_SAI3_SEL] = imx_clk_mux("sai3_sel", CCM_CSCMR1, 6, 2, sai_sels, 4);
|
clk[VF610_CLK_SAI3_SEL] = imx_clk_mux("sai3_sel", CCM_CSCMR1, 6, 2, sai_sels, 4);
|
||||||
clk[VF610_CLK_SAI3_EN] = imx_clk_gate("sai3_en", "sai3_sel", CCM_CSCDR1, 19);
|
clk[VF610_CLK_SAI3_EN] = imx_clk_gate("sai3_en", "sai3_sel", CCM_CSCDR1, 19);
|
||||||
clk[VF610_CLK_SAI3_DIV] = imx_clk_divider("sai3_div", "sai3_en", CCM_CSCDR1, 12, 4);
|
clk[VF610_CLK_SAI3_DIV] = imx_clk_divider("sai3_div", "sai3_en", CCM_CSCDR1, 12, 4);
|
||||||
clk[VF610_CLK_SAI3] = imx_clk_gate2("sai3", "sai3_div", CCM_CCGR1, CCM_CCGRx_CGn(2));
|
clk[VF610_CLK_SAI3] = imx_clk_gate2("sai3", "ipg_bus", CCM_CCGR1, CCM_CCGRx_CGn(2));
|
||||||
|
|
||||||
clk[VF610_CLK_NFC_SEL] = imx_clk_mux("nfc_sel", CCM_CSCMR1, 12, 2, nfc_sels, 4);
|
clk[VF610_CLK_NFC_SEL] = imx_clk_mux("nfc_sel", CCM_CSCMR1, 12, 2, nfc_sels, 4);
|
||||||
clk[VF610_CLK_NFC_EN] = imx_clk_gate("nfc_en", "nfc_sel", CCM_CSCDR2, 9);
|
clk[VF610_CLK_NFC_EN] = imx_clk_gate("nfc_en", "nfc_sel", CCM_CSCDR2, 9);
|
||||||
|
@ -648,7 +648,7 @@ late_initcall(s3c_cpufreq_initcall);
|
|||||||
*
|
*
|
||||||
* Register the given set of PLLs with the system.
|
* Register the given set of PLLs with the system.
|
||||||
*/
|
*/
|
||||||
int __init s3c_plltab_register(struct cpufreq_frequency_table *plls,
|
int s3c_plltab_register(struct cpufreq_frequency_table *plls,
|
||||||
unsigned int plls_no)
|
unsigned int plls_no)
|
||||||
{
|
{
|
||||||
struct cpufreq_frequency_table *vals;
|
struct cpufreq_frequency_table *vals;
|
||||||
|
@ -210,7 +210,12 @@ int __init fpga_irq_of_init(struct device_node *node,
|
|||||||
parent_irq = -1;
|
parent_irq = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_VERSATILE
|
||||||
|
fpga_irq_init(base, node->name, IRQ_SIC_START, parent_irq, valid_mask,
|
||||||
|
node);
|
||||||
|
#else
|
||||||
fpga_irq_init(base, node->name, 0, parent_irq, valid_mask, node);
|
fpga_irq_init(base, node->name, 0, parent_irq, valid_mask, node);
|
||||||
|
#endif
|
||||||
|
|
||||||
writel(clear_mask, base + IRQ_ENABLE_CLEAR);
|
writel(clear_mask, base + IRQ_ENABLE_CLEAR);
|
||||||
writel(clear_mask, base + FIQ_ENABLE_CLEAR);
|
writel(clear_mask, base + FIQ_ENABLE_CLEAR);
|
||||||
|
Loading…
Reference in New Issue
Block a user