ARM: SoC fixes
A series of fixes (and in some cases, some cleanups): Via Tony Lindgren: - A collection of OMAP regression fixes, in particular because firmware no longer sets up all pin states before starting the kernel. - cpufreq fixes for OMAP (Rafael is on vacation and this was pre-agreed). - A longer series of misc regression fixes and cleanups, warning removals, etc for OMAP From Arnd Bergmann: - A series of warning fixes for various platforms (defconfig builds) Misc: - A couple of tegra fixes, one for i.MX, some vt8500 fixes, etc. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQIcBAABAgAGBQJQdeoEAAoJEIwa5zzehBx3odkP/2Z7UwXYYja63dmUYErWSQJU CtPa5U7UlbM9hWVzuGplCBbNuDEmZ8PlUboiX0Q0ml0Jl4KtOYAbuq6st96Vmn9z z6VkApTzAmlo1p8C+Y/liEL3Kr9PKV4zWi4VMLDUgSiP65hVtbe/hEjRSty14iTC sF5Ao42YO0y8L1e7d2OSbK0DQyHCnk/cbOQJnzaX5fN31uE2GSM4nFY1ty5gb3aB +LyyGx6pd26LxsGYtLIzlpV+qkFeGcGAU16pJj10Xo4UNKUjwVfq2k1Nn0t4I06f 1gs+lGRqfj2ciVTIdJd+OUFb2gI0DfLhASzb6efQzggOTDHxNFyew8+Yve82muEA 0G2as/yW9GSGw1Zdkh4FCtr/1VgORTsXWEPCSx+oWn1hCOn5PtcGHYjYBpPh/drb EhYioL3s5ZzXT2+RhKf3JEfFNEupyPrTFsNpGtNSjB7b5XkSU39BcykXc/ghXmeB XOrcOO5cvsGVcEcKJjJaPtYznkULh/aU8mu+/D0AZFW24ke8ya1mR5t6W0+PBEnL sePinBHWKzLtswQrij0NKT781SqZAFwqvlAh+t5kwOo68m1E3Kt6afjZ0B4dsJlG XIcxUyHeE+LvJgy/IOIOJUflnmUgghvUtbsHL5SIjssmijHrzYpu/ikfYCt+Ti0f CAzGeHrS41sGAnN4vWit =vAh+ -----END PGP SIGNATURE----- Merge tag 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc Pull ARM SoC fixes from Olof Johansson: "A series of fixes (and in some cases, some cleanups): Via Tony Lindgren: - A collection of OMAP regression fixes, in particular because firmware no longer sets up all pin states before starting the kernel. - cpufreq fixes for OMAP (Rafael is on vacation and this was pre-agreed). - A longer series of misc regression fixes and cleanups, warning removals, etc for OMAP From Arnd Bergmann: - A series of warning fixes for various platforms (defconfig builds) Misc: - A couple of tegra fixes, one for i.MX, some vt8500 fixes, etc." * tag 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (73 commits) ARM: pxa: armcore: fix PCI PIO warnings ARM: integrator: use __iomem pointers for MMIO, part 2 ARM: assabet: fix bogus warning in get_assabet_scr (again) ARM: shmobile: mark shmobile_init_late as __init ARM: integrator_cp: fix build failure ARM: OMAP4/AM335x: hwmod: fix disable_module regression in hardreset handling ARM: OMAP3: fix workaround for EMU clockdomain arm/omap: Replace board_ref_clock with enum values ARM: OMAP2+: remove duplicated include from board-omap3stalker.c arch/arm/plat-omap/omap-pm-noop.c: Remove unecessary semicolon arch/arm/mach-omap2: Remove unecessary semicolon arch/arm/mach-omap1/devices.c: Remove unecessary semicolon ARM/dts: omap5-evm: pinmux configuration for audio ARM/dts: Add pinctrl driver entries for omap5 ARM/dts: omap4-panda: pinmux configuration for audio ARM/dts: omap4-sdp: pinmux configuration for audio ARM/dts: omap5-evm: Disable unused McBSP3 ARM/dts: omap4-sdp: Disable unused McBSP3 ARM/dts: omap4-panda: Disable unused audio IPs ARM: OMAP: board-omap4panda: Pin mux configuration for audio needs ...
This commit is contained in:
commit
da06a8d7be
75 changed files with 436 additions and 223 deletions
|
@ -7,7 +7,7 @@ as "armctrl" in the SoC documentation, hence naming of this binding.
|
|||
|
||||
Required properties:
|
||||
|
||||
- compatible : should be "brcm,bcm2835-armctrl-ic.txt"
|
||||
- compatible : should be "brcm,bcm2835-armctrl-ic"
|
||||
- reg : Specifies base physical address and size of the registers.
|
||||
- interrupt-controller : Identifies the node as an interrupt controller
|
||||
- #interrupt-cells : Specifies the number of cells needed to encode an
|
||||
|
|
|
@ -7,7 +7,7 @@ free running counter values, and generates an interrupt.
|
|||
|
||||
Required properties:
|
||||
|
||||
- compatible : should be "brcm,bcm2835-system-timer.txt"
|
||||
- compatible : should be "brcm,bcm2835-system-timer"
|
||||
- reg : Specifies base physical address and size of the registers.
|
||||
- interrupts : A list of 4 interrupt sinks; one per timer channel.
|
||||
- clock-frequency : The frequency of the clock that drives the counter, in Hz.
|
||||
|
|
|
@ -494,7 +494,6 @@ config ARCH_IOP32X
|
|||
depends on MMU
|
||||
select CPU_XSCALE
|
||||
select NEED_MACH_GPIO_H
|
||||
select NEED_MACH_IO_H
|
||||
select NEED_RET_TO_USER
|
||||
select PLAT_IOP
|
||||
select PCI
|
||||
|
@ -508,7 +507,6 @@ config ARCH_IOP33X
|
|||
depends on MMU
|
||||
select CPU_XSCALE
|
||||
select NEED_MACH_GPIO_H
|
||||
select NEED_MACH_IO_H
|
||||
select NEED_RET_TO_USER
|
||||
select PLAT_IOP
|
||||
select PCI
|
||||
|
@ -1772,6 +1770,7 @@ source "mm/Kconfig"
|
|||
config FORCE_MAX_ZONEORDER
|
||||
int "Maximum zone order" if ARCH_SHMOBILE
|
||||
range 11 64 if ARCH_SHMOBILE
|
||||
default "12" if SOC_AM33XX
|
||||
default "9" if SA1111
|
||||
default "11"
|
||||
help
|
||||
|
|
|
@ -25,14 +25,6 @@ dtb-$(CONFIG_ARCH_EXYNOS) += exynos4210-origen.dtb \
|
|||
exynos4210-trats.dtb \
|
||||
exynos5250-smdk5250.dtb
|
||||
dtb-$(CONFIG_ARCH_HIGHBANK) += highbank.dtb
|
||||
dtb-$(CONFIG_ARCH_IMX5) += imx51-babbage.dtb \
|
||||
imx53-ard.dtb \
|
||||
imx53-evk.dtb \
|
||||
imx53-qsb.dtb \
|
||||
imx53-smd.dtb
|
||||
dtb-$(CONFIG_SOC_IMX6Q) += imx6q-arm2.dtb \
|
||||
imx6q-sabrelite.dtb \
|
||||
imx6q-sabresd.dtb
|
||||
dtb-$(CONFIG_ARCH_LPC32XX) += ea3250.dtb phy3250.dtb
|
||||
dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-dns320.dtb \
|
||||
kirkwood-dns325.dtb \
|
||||
|
@ -76,7 +68,9 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
|
|||
omap4-pandaES.dtb \
|
||||
omap4-var_som.dtb \
|
||||
omap4-sdp.dtb \
|
||||
omap5-evm.dtb
|
||||
omap5-evm.dtb \
|
||||
am335x-evm.dtb \
|
||||
am335x-bone.dtb
|
||||
dtb-$(CONFIG_ARCH_PRIMA2) += prima2-evb.dtb
|
||||
dtb-$(CONFIG_ARCH_U8500) += snowball.dtb
|
||||
dtb-$(CONFIG_ARCH_SHMOBILE) += emev2-kzm9d.dtb \
|
||||
|
@ -104,5 +98,8 @@ dtb-$(CONFIG_ARCH_VEXPRESS) += vexpress-v2p-ca5s.dtb \
|
|||
vexpress-v2p-ca15-tc1.dtb \
|
||||
vexpress-v2p-ca15_a7.dtb \
|
||||
xenvm-4.2.dtb
|
||||
dtb-$(CONFIG_ARCH_VT8500) += vt8500-bv07.dtb \
|
||||
wm8505-ref.dtb \
|
||||
wm8650-mid.dtb
|
||||
|
||||
endif
|
||||
|
|
|
@ -59,6 +59,41 @@
|
|||
};
|
||||
};
|
||||
|
||||
&omap4_pmx_core {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <
|
||||
&twl6040_pins
|
||||
&mcpdm_pins
|
||||
&mcbsp1_pins
|
||||
>;
|
||||
|
||||
twl6040_pins: pinmux_twl6040_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xe0 0x3 /* hdq_sio.gpio_127 OUTPUT | MODE3 */
|
||||
0x160 0x100 /* sys_nirq2.sys_nirq2 INPUT | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
mcpdm_pins: pinmux_mcpdm_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xc6 0x108 /* abe_pdm_ul_data.abe_pdm_ul_data INPUT PULLDOWN | MODE0 */
|
||||
0xc8 0x108 /* abe_pdm_dl_data.abe_pdm_dl_data INPUT PULLDOWN | MODE0 */
|
||||
0xca 0x118 /* abe_pdm_frame.abe_pdm_frame INPUT PULLUP | MODE0 */
|
||||
0xcc 0x108 /* abe_pdm_lb_clk.abe_pdm_lb_clk INPUT PULLDOWN | MODE0 */
|
||||
0xce 0x108 /* abe_clks.abe_clks INPUT PULLDOWN | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
mcbsp1_pins: pinmux_mcbsp1_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xbe 0x100 /* abe_mcbsp1_clkx.abe_mcbsp1_clkx INPUT | MODE0 */
|
||||
0xc0 0x108 /* abe_mcbsp1_dr.abe_mcbsp1_dr INPUT PULLDOWN | MODE0 */
|
||||
0xc2 0x8 /* abe_mcbsp1_dx.abe_mcbsp1_dx OUTPUT PULLDOWN | MODE0 */
|
||||
0xc4 0x100 /* abe_mcbsp1_fsx.abe_mcbsp1_fsx INPUT | MODE0 */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
clock-frequency = <400000>;
|
||||
|
||||
|
@ -137,3 +172,15 @@
|
|||
cs1-used;
|
||||
device-handle = <&elpida_ECB240ABACN>;
|
||||
};
|
||||
|
||||
&mcbsp2 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&mcbsp3 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&dmic {
|
||||
status = "disabled";
|
||||
};
|
||||
|
|
|
@ -117,6 +117,15 @@
|
|||
};
|
||||
|
||||
&omap4_pmx_core {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <
|
||||
&twl6040_pins
|
||||
&mcpdm_pins
|
||||
&dmic_pins
|
||||
&mcbsp1_pins
|
||||
&mcbsp2_pins
|
||||
>;
|
||||
|
||||
uart2_pins: pinmux_uart2_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xd8 0x118 /* uart2_cts.uart2_cts INPUT_PULLUP | MODE0 */
|
||||
|
@ -141,6 +150,50 @@
|
|||
0x11e 0 /* uart4_tx.uart4_tx OUTPUT | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
twl6040_pins: pinmux_twl6040_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xe0 0x3 /* hdq_sio.gpio_127 OUTPUT | MODE3 */
|
||||
0x160 0x100 /* sys_nirq2.sys_nirq2 INPUT | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
mcpdm_pins: pinmux_mcpdm_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xc6 0x108 /* abe_pdm_ul_data.abe_pdm_ul_data INPUT PULLDOWN | MODE0 */
|
||||
0xc8 0x108 /* abe_pdm_dl_data.abe_pdm_dl_data INPUT PULLDOWN | MODE0 */
|
||||
0xca 0x118 /* abe_pdm_frame.abe_pdm_frame INPUT PULLUP | MODE0 */
|
||||
0xcc 0x108 /* abe_pdm_lb_clk.abe_pdm_lb_clk INPUT PULLDOWN | MODE0 */
|
||||
0xce 0x108 /* abe_clks.abe_clks INPUT PULLDOWN | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
dmic_pins: pinmux_dmic_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xd0 0 /* abe_dmic_clk1.abe_dmic_clk1 OUTPUT | MODE0 */
|
||||
0xd2 0x100 /* abe_dmic_din1.abe_dmic_din1 INPUT | MODE0 */
|
||||
0xd4 0x100 /* abe_dmic_din2.abe_dmic_din2 INPUT | MODE0 */
|
||||
0xd6 0x100 /* abe_dmic_din3.abe_dmic_din3 INPUT | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
mcbsp1_pins: pinmux_mcbsp1_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xbe 0x100 /* abe_mcbsp1_clkx.abe_mcbsp1_clkx INPUT | MODE0 */
|
||||
0xc0 0x108 /* abe_mcbsp1_dr.abe_mcbsp1_dr INPUT PULLDOWN | MODE0 */
|
||||
0xc2 0x8 /* abe_mcbsp1_dx.abe_mcbsp1_dx OUTPUT PULLDOWN | MODE0 */
|
||||
0xc4 0x100 /* abe_mcbsp1_fsx.abe_mcbsp1_fsx INPUT | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
mcbsp2_pins: pinmux_mcbsp2_pins {
|
||||
pinctrl-single,pins = <
|
||||
0xb6 0x100 /* abe_mcbsp2_clkx.abe_mcbsp2_clkx INPUT | MODE0 */
|
||||
0xb8 0x108 /* abe_mcbsp2_dr.abe_mcbsp2_dr INPUT PULLDOWN | MODE0 */
|
||||
0xba 0x8 /* abe_mcbsp2_dx.abe_mcbsp2_dx OUTPUT PULLDOWN | MODE0 */
|
||||
0xbc 0x100 /* abe_mcbsp2_fsx.abe_mcbsp2_fsx INPUT | MODE0 */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
|
@ -349,3 +402,7 @@
|
|||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart4_pins>;
|
||||
};
|
||||
|
||||
&mcbsp3 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
|
|
@ -27,6 +27,60 @@
|
|||
|
||||
};
|
||||
|
||||
&omap5_pmx_core {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <
|
||||
&twl6040_pins
|
||||
&mcpdm_pins
|
||||
&dmic_pins
|
||||
&mcbsp1_pins
|
||||
&mcbsp2_pins
|
||||
>;
|
||||
|
||||
twl6040_pins: pinmux_twl6040_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x18a 0x6 /* perslimbus2_clock.gpio5_145 OUTPUT | MODE6 */
|
||||
>;
|
||||
};
|
||||
|
||||
mcpdm_pins: pinmux_mcpdm_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x142 0x108 /* abe_clks.abe_clks INPUT PULLDOWN | MODE0 */
|
||||
0x15c 0x108 /* abemcpdm_ul_data.abemcpdm_ul_data INPUT PULLDOWN | MODE0 */
|
||||
0x15e 0x108 /* abemcpdm_dl_data.abemcpdm_dl_data INPUT PULLDOWN | MODE0 */
|
||||
0x160 0x118 /* abemcpdm_frame.abemcpdm_frame INPUT PULLUP | MODE0 */
|
||||
0x162 0x108 /* abemcpdm_lb_clk.abemcpdm_lb_clk INPUT PULLDOWN | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
dmic_pins: pinmux_dmic_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x144 0x100 /* abedmic_din1.abedmic_din1 INPUT | MODE0 */
|
||||
0x146 0x100 /* abedmic_din2.abedmic_din2 INPUT | MODE0 */
|
||||
0x148 0x100 /* abedmic_din3.abedmic_din3 INPUT | MODE0 */
|
||||
0x14a 0 /* abedmic_clk1.abedmic_clk1 OUTPUT | MODE0 */
|
||||
>;
|
||||
};
|
||||
|
||||
mcbsp1_pins: pinmux_mcbsp1_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x14c 0x101 /* abedmic_clk2.abemcbsp1_fsx INPUT | MODE1 */
|
||||
0x14e 0x9 /* abedmic_clk3.abemcbsp1_dx OUTPUT PULLDOWN | MODE1 */
|
||||
0x150 0x101 /* abeslimbus1_clock.abemcbsp1_clkx INPUT | MODE0 */
|
||||
0x152 0x109 /* abeslimbus1_data.abemcbsp1_dr INPUT PULLDOWN | MODE1 */
|
||||
>;
|
||||
};
|
||||
|
||||
mcbsp2_pins: pinmux_mcbsp2_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x154 0x108 /* abemcbsp2_dr.abemcbsp2_dr INPUT PULLDOWN | MODE0 */
|
||||
0x156 0x8 /* abemcbsp2_dx.abemcbsp2_dx OUTPUT PULLDOWN | MODE0 */
|
||||
0x158 0x100 /* abemcbsp2_fsx.abemcbsp2_fsx INPUT | MODE0 */
|
||||
0x15a 0x100 /* abemcbsp2_clkx.abemcbsp2_clkx INPUT | MODE0 */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
&mmc1 {
|
||||
vmmc-supply = <&vmmcsd_fixed>;
|
||||
bus-width = <4>;
|
||||
|
@ -82,3 +136,7 @@
|
|||
0x020700d9>; /* SEARCH */
|
||||
linux,input-no-autorepeat;
|
||||
};
|
||||
|
||||
&mcbsp3 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
|
|
@ -77,6 +77,23 @@
|
|||
ranges;
|
||||
ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3";
|
||||
|
||||
omap5_pmx_core: pinmux@4a002840 {
|
||||
compatible = "ti,omap4-padconf", "pinctrl-single";
|
||||
reg = <0x4a002840 0x01b6>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
pinctrl-single,register-width = <16>;
|
||||
pinctrl-single,function-mask = <0x7fff>;
|
||||
};
|
||||
omap5_pmx_wkup: pinmux@4ae0c840 {
|
||||
compatible = "ti,omap4-padconf", "pinctrl-single";
|
||||
reg = <0x4ae0c840 0x0038>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
pinctrl-single,register-width = <16>;
|
||||
pinctrl-single,function-mask = <0x7fff>;
|
||||
};
|
||||
|
||||
gic: interrupt-controller@48211000 {
|
||||
compatible = "arm,cortex-a15-gic";
|
||||
interrupt-controller;
|
||||
|
|
|
@ -539,7 +539,7 @@
|
|||
nvidia,invert-interrupt;
|
||||
};
|
||||
|
||||
memory-controller@0x7000f400 {
|
||||
memory-controller@7000f400 {
|
||||
emc-table@190000 {
|
||||
reg = <190000>;
|
||||
compatible = "nvidia,tegra20-emc-table";
|
||||
|
|
|
@ -170,7 +170,7 @@
|
|||
reg = <0x7000e400 0x400>;
|
||||
};
|
||||
|
||||
memory-controller@0x7000f000 {
|
||||
memory-controller@7000f000 {
|
||||
compatible = "nvidia,tegra20-mc";
|
||||
reg = <0x7000f000 0x024
|
||||
0x7000f03c 0x3c4>;
|
||||
|
@ -183,7 +183,7 @@
|
|||
0x58000000 0x02000000>; /* GART aperture */
|
||||
};
|
||||
|
||||
memory-controller@0x7000f400 {
|
||||
memory-controller@7000f400 {
|
||||
compatible = "nvidia,tegra20-emc";
|
||||
reg = <0x7000f400 0x200>;
|
||||
#address-cells = <1>;
|
||||
|
|
|
@ -284,11 +284,17 @@ int dma_set_coherent_mask(struct device *dev, u64 mask)
|
|||
|
||||
int __init it8152_pci_setup(int nr, struct pci_sys_data *sys)
|
||||
{
|
||||
it8152_io.start = IT8152_IO_BASE + 0x12000;
|
||||
it8152_io.end = IT8152_IO_BASE + 0x12000 + 0x100000;
|
||||
/*
|
||||
* FIXME: use pci_ioremap_io to remap the IO space here and
|
||||
* move over to the generic io.h implementation.
|
||||
* This requires solving the same problem for PXA PCMCIA
|
||||
* support.
|
||||
*/
|
||||
it8152_io.start = (unsigned long)IT8152_IO_BASE + 0x12000;
|
||||
it8152_io.end = (unsigned long)IT8152_IO_BASE + 0x12000 + 0x100000;
|
||||
|
||||
sys->mem_offset = 0x10000000;
|
||||
sys->io_offset = IT8152_IO_BASE;
|
||||
sys->io_offset = (unsigned long)IT8152_IO_BASE;
|
||||
|
||||
if (request_resource(&ioport_resource, &it8152_io)) {
|
||||
printk(KERN_ERR "PCI: unable to allocate IO region\n");
|
||||
|
|
|
@ -153,7 +153,9 @@ static int at91_pm_verify_clocks(void)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_AT91_PROGRAMMABLE_CLOCKS
|
||||
if (!IS_ENABLED(CONFIG_AT91_PROGRAMMABLE_CLOCKS))
|
||||
return 1;
|
||||
|
||||
/* PCK0..PCK3 must be disabled, or configured to use clk32k */
|
||||
for (i = 0; i < 4; i++) {
|
||||
u32 css;
|
||||
|
@ -167,7 +169,6 @@ static int at91_pm_verify_clocks(void)
|
|||
return 0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -87,7 +87,7 @@ void __init at91_init_sram(int bank, unsigned long base, unsigned int length)
|
|||
iotable_init(desc, 1);
|
||||
}
|
||||
|
||||
static struct map_desc at91_io_desc __initdata = {
|
||||
static struct map_desc at91_io_desc __initdata __maybe_unused = {
|
||||
.virtual = (unsigned long)AT91_VA_BASE_SYS,
|
||||
.pfn = __phys_to_pfn(AT91_BASE_SYS),
|
||||
.length = SZ_16K,
|
||||
|
|
|
@ -939,7 +939,7 @@ static struct platform_device da850_cpufreq_device = {
|
|||
|
||||
unsigned int da850_max_speed = 300000;
|
||||
|
||||
int __init da850_register_cpufreq(char *async_clk)
|
||||
int da850_register_cpufreq(char *async_clk)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
|
@ -89,8 +89,6 @@
|
|||
#define IRQ_NETWINDER_VGA _ISA_IRQ(11)
|
||||
#define IRQ_NETWINDER_SOUND _ISA_IRQ(12)
|
||||
|
||||
#undef RTC_IRQ
|
||||
#define RTC_IRQ IRQ_ISA_RTC_ALARM
|
||||
#define I8042_KBD_IRQ IRQ_ISA_KEYBOARD
|
||||
#define I8042_AUX_IRQ (machine_is_netwinder() ? IRQ_NETWINDER_PS2MOUSE : IRQ_ISA_PS2MOUSE)
|
||||
#define IRQ_FLOPPYDISK IRQ_ISA_FLOPPY
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
*/
|
||||
void cm_control(u32, u32);
|
||||
|
||||
#define CM_CTRL IO_ADDRESS(INTEGRATOR_HDR_CTRL)
|
||||
#define CM_CTRL __io_address(INTEGRATOR_HDR_CTRL)
|
||||
|
||||
#define CM_CTRL_LED (1 << 0)
|
||||
#define CM_CTRL_nMBDET (1 << 1)
|
||||
|
|
|
@ -324,9 +324,9 @@
|
|||
*/
|
||||
#define PHYS_PCI_V3_BASE 0x62000000
|
||||
|
||||
#define PCI_MEMORY_VADDR 0xe8000000
|
||||
#define PCI_CONFIG_VADDR 0xec000000
|
||||
#define PCI_V3_VADDR 0xed000000
|
||||
#define PCI_MEMORY_VADDR IOMEM(0xe8000000)
|
||||
#define PCI_CONFIG_VADDR IOMEM(0xec000000)
|
||||
#define PCI_V3_VADDR IOMEM(0xed000000)
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
* Integrator Interrupt Controllers
|
||||
|
|
|
@ -157,7 +157,7 @@ static struct map_desc ap_io_desc[] __initdata = {
|
|||
static void __init ap_map_io(void)
|
||||
{
|
||||
iotable_init(ap_io_desc, ARRAY_SIZE(ap_io_desc));
|
||||
vga_base = PCI_MEMORY_VADDR;
|
||||
vga_base = (unsigned long)PCI_MEMORY_VADDR;
|
||||
pci_map_io_early(__phys_to_pfn(PHYS_PCI_IO_BASE));
|
||||
}
|
||||
|
||||
|
|
|
@ -261,6 +261,8 @@ static void __init intcp_init_early(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
|
||||
static void __init intcp_timer_init_of(void)
|
||||
{
|
||||
struct device_node *node;
|
||||
|
@ -297,8 +299,6 @@ static struct sys_timer cp_of_timer = {
|
|||
.init = intcp_timer_init_of,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
|
||||
static const struct of_device_id fpga_irq_of_match[] __initconst = {
|
||||
{ .compatible = "arm,versatile-fpga-irq", .data = fpga_irq_of_init, },
|
||||
{ /* Sentinel */ }
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
extern int init_atu;
|
||||
|
||||
static int __init
|
||||
iq81340sc_atux_map_irq(struct pci_dev *dev, u8 idsel, u8 pin)
|
||||
iq81340sc_atux_map_irq(const struct pci_dev *dev, u8 idsel, u8 pin)
|
||||
{
|
||||
WARN_ON(idsel < 1 || idsel > 2);
|
||||
|
||||
|
|
|
@ -504,7 +504,7 @@ iop13xx_pci_abort(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
|
|||
|
||||
/* Scan an IOP13XX PCI bus. nr selects which ATU we use.
|
||||
*/
|
||||
struct pci_bus *iop13xx_scan_bus(int nr, struct pci_sys_data *sys)
|
||||
struct pci_bus * __devinit iop13xx_scan_bus(int nr, struct pci_sys_data *sys)
|
||||
{
|
||||
int which_atu;
|
||||
struct pci_bus *bus = NULL;
|
||||
|
|
|
@ -34,7 +34,8 @@ extern struct bus_type platform_bus_type;
|
|||
#define __arch_dma_to_virt(dev, x) ({ (void *) (is_lbus_device(dev) ? \
|
||||
__phys_to_virt(x) : __bus_to_virt(x)); })
|
||||
#define __arch_virt_to_dma(dev, x) ({ is_lbus_device(dev) ? \
|
||||
(dma_addr_t)__virt_to_phys(x) : (dma_addr_t)__virt_to_bus(x); })
|
||||
(dma_addr_t)__virt_to_phys((unsigned long)x) \
|
||||
: (dma_addr_t)__virt_to_bus(x); })
|
||||
#define __arch_pfn_to_dma(dev, pfn) \
|
||||
({ dma_addr_t __dma = __pfn_to_phys(pfn); \
|
||||
if (!is_lbus_device(dev)) \
|
||||
|
|
|
@ -54,7 +54,7 @@ static void __init __iomem *win_cfg_base(const struct orion_addr_map_cfg *cfg, i
|
|||
/*
|
||||
* Description of the windows needed by the platform code
|
||||
*/
|
||||
static struct __initdata orion_addr_map_cfg addr_map_cfg = {
|
||||
static struct orion_addr_map_cfg addr_map_cfg __initdata = {
|
||||
.num_wins = 14,
|
||||
.remappable_wins = 8,
|
||||
.win_cfg_base = win_cfg_base,
|
||||
|
|
|
@ -336,7 +336,7 @@ void __init mv78xx0_init_early(void)
|
|||
orion_time_set_base(TIMER_VIRT_BASE);
|
||||
}
|
||||
|
||||
static void mv78xx0_timer_init(void)
|
||||
static void __init_refok mv78xx0_timer_init(void)
|
||||
{
|
||||
orion_time_init(BRIDGE_VIRT_BASE, BRIDGE_INT_TIMER1_CLR,
|
||||
IRQ_MV78XX0_TIMER_1, get_tclk());
|
||||
|
|
|
@ -231,7 +231,7 @@ void __init omap1_init_mmc(struct omap_mmc_platform_data **mmc_data,
|
|||
|
||||
omap_mmc_add("mmci-omap", i, base, size, irq,
|
||||
rx_req, tx_req, mmc_data[i]);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -830,6 +830,32 @@ static struct omap_board_mux board_mux[] __initdata = {
|
|||
/* NIRQ2 for twl6040 */
|
||||
OMAP4_MUX(SYS_NIRQ2, OMAP_MUX_MODE0 |
|
||||
OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE),
|
||||
/* GPIO_127 for twl6040 */
|
||||
OMAP4_MUX(HDQ_SIO, OMAP_MUX_MODE3 | OMAP_PIN_OUTPUT),
|
||||
/* McPDM */
|
||||
OMAP4_MUX(ABE_PDM_UL_DATA, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
|
||||
OMAP4_MUX(ABE_PDM_DL_DATA, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
|
||||
OMAP4_MUX(ABE_PDM_FRAME, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
|
||||
OMAP4_MUX(ABE_PDM_LB_CLK, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
|
||||
OMAP4_MUX(ABE_CLKS, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
|
||||
/* DMIC */
|
||||
OMAP4_MUX(ABE_DMIC_CLK1, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
|
||||
OMAP4_MUX(ABE_DMIC_DIN1, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
|
||||
OMAP4_MUX(ABE_DMIC_DIN2, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
|
||||
OMAP4_MUX(ABE_DMIC_DIN3, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
|
||||
/* McBSP1 */
|
||||
OMAP4_MUX(ABE_MCBSP1_CLKX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
|
||||
OMAP4_MUX(ABE_MCBSP1_DR, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
|
||||
OMAP4_MUX(ABE_MCBSP1_DX, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT |
|
||||
OMAP_PULL_ENA),
|
||||
OMAP4_MUX(ABE_MCBSP1_FSX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
|
||||
/* McBSP2 */
|
||||
OMAP4_MUX(ABE_MCBSP2_CLKX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
|
||||
OMAP4_MUX(ABE_MCBSP2_DR, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
|
||||
OMAP4_MUX(ABE_MCBSP2_DX, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT |
|
||||
OMAP_PULL_ENA),
|
||||
OMAP4_MUX(ABE_MCBSP2_FSX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
|
||||
|
||||
{ .reg_offset = OMAP_MUX_TERMINATOR },
|
||||
};
|
||||
|
||||
|
|
|
@ -218,7 +218,7 @@ void __init board_flash_init(struct flash_partitions partition_info[],
|
|||
if (onenandcs > GPMC_CS_NUM)
|
||||
onenandcs = cs;
|
||||
break;
|
||||
};
|
||||
}
|
||||
cs++;
|
||||
}
|
||||
|
||||
|
|
|
@ -461,7 +461,7 @@ static void __init beagle_opp_init(void)
|
|||
mpu_dev = omap_device_get_by_hwmod_name("mpu");
|
||||
iva_dev = omap_device_get_by_hwmod_name("iva");
|
||||
|
||||
if (!mpu_dev || !iva_dev) {
|
||||
if (IS_ERR(mpu_dev) || IS_ERR(iva_dev)) {
|
||||
pr_err("%s: Aiee.. no mpu/dsp devices? %p %p\n",
|
||||
__func__, mpu_dev, iva_dev);
|
||||
return;
|
||||
|
|
|
@ -88,11 +88,10 @@ enum {
|
|||
|
||||
static u8 omap3_evm_version;
|
||||
|
||||
u8 get_omap3_evm_rev(void)
|
||||
static u8 get_omap3_evm_rev(void)
|
||||
{
|
||||
return omap3_evm_version;
|
||||
}
|
||||
EXPORT_SYMBOL(get_omap3_evm_rev);
|
||||
|
||||
static void __init omap3_evm_get_revision(void)
|
||||
{
|
||||
|
|
|
@ -48,11 +48,6 @@
|
|||
#include <video/omap-panel-tfp410.h>
|
||||
|
||||
#include <linux/platform_data/spi-omap2-mcspi.h>
|
||||
#include <linux/input/matrix_keypad.h>
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/smsc911x.h>
|
||||
#include <linux/i2c/at24.h>
|
||||
|
||||
#include "sdram-micron-mt46h32m32lf-6.h"
|
||||
#include "mux.h"
|
||||
|
|
|
@ -247,8 +247,7 @@ static struct platform_device omap_vwlan_device = {
|
|||
};
|
||||
|
||||
static struct wl12xx_platform_data omap_panda_wlan_data __initdata = {
|
||||
/* PANDA ref clock is 38.4 MHz */
|
||||
.board_ref_clock = 2,
|
||||
.board_ref_clock = WL12XX_REFCLOCK_38, /* 38.4 MHz */
|
||||
};
|
||||
|
||||
static struct twl6040_codec_data twl6040_codec = {
|
||||
|
@ -388,6 +387,21 @@ static struct omap_board_mux board_mux[] __initdata = {
|
|||
/* NIRQ2 for twl6040 */
|
||||
OMAP4_MUX(SYS_NIRQ2, OMAP_MUX_MODE0 |
|
||||
OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE),
|
||||
/* GPIO_127 for twl6040 */
|
||||
OMAP4_MUX(HDQ_SIO, OMAP_MUX_MODE3 | OMAP_PIN_OUTPUT),
|
||||
/* McPDM */
|
||||
OMAP4_MUX(ABE_PDM_UL_DATA, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
|
||||
OMAP4_MUX(ABE_PDM_DL_DATA, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
|
||||
OMAP4_MUX(ABE_PDM_FRAME, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
|
||||
OMAP4_MUX(ABE_PDM_LB_CLK, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
|
||||
OMAP4_MUX(ABE_CLKS, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
|
||||
/* McBSP1 */
|
||||
OMAP4_MUX(ABE_MCBSP1_CLKX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
|
||||
OMAP4_MUX(ABE_MCBSP1_DR, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
|
||||
OMAP4_MUX(ABE_MCBSP1_DX, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT |
|
||||
OMAP_PULL_ENA),
|
||||
OMAP4_MUX(ABE_MCBSP1_FSX, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
|
||||
|
||||
{ .reg_offset = OMAP_MUX_TERMINATOR },
|
||||
};
|
||||
|
||||
|
|
|
@ -748,7 +748,7 @@ static struct radio_si4713_platform_data rx51_si4713_data __initdata_or_module =
|
|||
.subdev_board_info = &rx51_si4713_board_info,
|
||||
};
|
||||
|
||||
static struct platform_device rx51_si4713_dev = {
|
||||
static struct platform_device rx51_si4713_dev __initdata_or_module = {
|
||||
.name = "radio-si4713",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
|
|
|
@ -195,8 +195,7 @@ static struct platform_device omap_vwlan_device = {
|
|||
};
|
||||
|
||||
static struct wl12xx_platform_data omap_zoom_wlan_data __initdata = {
|
||||
/* ZOOM ref clock is 26 MHz */
|
||||
.board_ref_clock = 1,
|
||||
.board_ref_clock = WL12XX_REFCLOCK_26, /* 26 MHz */
|
||||
};
|
||||
|
||||
static struct omap2_hsmmc_info mmc[] = {
|
||||
|
|
|
@ -382,7 +382,7 @@ void omap2_init_clksel_parent(struct clk *clk)
|
|||
__clk_get_name(parent) :
|
||||
"NULL"));
|
||||
clk_reparent(clk, clks->parent);
|
||||
};
|
||||
}
|
||||
found = 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1035,6 +1035,8 @@ static struct omap_clk am33xx_clks[] = {
|
|||
CLK(NULL, "pruss_ocp_gclk", &pruss_ocp_gclk, CK_AM33XX),
|
||||
CLK("davinci-mcasp.0", NULL, &mcasp0_fck, CK_AM33XX),
|
||||
CLK("davinci-mcasp.1", NULL, &mcasp1_fck, CK_AM33XX),
|
||||
CLK(NULL, "mcasp0_fck", &mcasp0_fck, CK_AM33XX),
|
||||
CLK(NULL, "mcasp1_fck", &mcasp1_fck, CK_AM33XX),
|
||||
CLK("NULL", "mmc2_fck", &mmc2_fck, CK_AM33XX),
|
||||
CLK(NULL, "mmu_fck", &mmu_fck, CK_AM33XX),
|
||||
CLK(NULL, "smartreflex0_fck", &smartreflex0_fck, CK_AM33XX),
|
||||
|
|
|
@ -183,17 +183,6 @@ static int omap2_clkdm_clk_enable(struct clockdomain *clkdm)
|
|||
if (!clkdm->clktrctrl_mask)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* The CLKDM_MISSING_IDLE_REPORTING flag documentation has
|
||||
* more details on the unpleasant problem this is working
|
||||
* around
|
||||
*/
|
||||
if (clkdm->flags & CLKDM_MISSING_IDLE_REPORTING &&
|
||||
!(clkdm->flags & CLKDM_CAN_FORCE_SLEEP)) {
|
||||
_enable_hwsup(clkdm);
|
||||
return 0;
|
||||
}
|
||||
|
||||
hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs,
|
||||
clkdm->clktrctrl_mask);
|
||||
|
||||
|
@ -217,17 +206,6 @@ static int omap2_clkdm_clk_disable(struct clockdomain *clkdm)
|
|||
if (!clkdm->clktrctrl_mask)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* The CLKDM_MISSING_IDLE_REPORTING flag documentation has
|
||||
* more details on the unpleasant problem this is working
|
||||
* around
|
||||
*/
|
||||
if ((clkdm->flags & CLKDM_MISSING_IDLE_REPORTING) &&
|
||||
(clkdm->flags & CLKDM_CAN_FORCE_WAKEUP)) {
|
||||
omap3_clkdm_wakeup(clkdm);
|
||||
return 0;
|
||||
}
|
||||
|
||||
hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs,
|
||||
clkdm->clktrctrl_mask);
|
||||
|
||||
|
@ -269,6 +247,17 @@ static int omap3xxx_clkdm_clk_enable(struct clockdomain *clkdm)
|
|||
if (!clkdm->clktrctrl_mask)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* The CLKDM_MISSING_IDLE_REPORTING flag documentation has
|
||||
* more details on the unpleasant problem this is working
|
||||
* around
|
||||
*/
|
||||
if ((clkdm->flags & CLKDM_MISSING_IDLE_REPORTING) &&
|
||||
(clkdm->flags & CLKDM_CAN_FORCE_WAKEUP)) {
|
||||
omap3_clkdm_wakeup(clkdm);
|
||||
return 0;
|
||||
}
|
||||
|
||||
hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs,
|
||||
clkdm->clktrctrl_mask);
|
||||
|
||||
|
@ -292,6 +281,17 @@ static int omap3xxx_clkdm_clk_disable(struct clockdomain *clkdm)
|
|||
if (!clkdm->clktrctrl_mask)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* The CLKDM_MISSING_IDLE_REPORTING flag documentation has
|
||||
* more details on the unpleasant problem this is working
|
||||
* around
|
||||
*/
|
||||
if (clkdm->flags & CLKDM_MISSING_IDLE_REPORTING &&
|
||||
!(clkdm->flags & CLKDM_CAN_FORCE_SLEEP)) {
|
||||
_enable_hwsup(clkdm);
|
||||
return 0;
|
||||
}
|
||||
|
||||
hwsup = omap2_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs,
|
||||
clkdm->clktrctrl_mask);
|
||||
|
||||
|
|
|
@ -221,7 +221,7 @@ static struct platform_device *create_dss_pdev(const char *pdev_name,
|
|||
|
||||
ohs[0] = oh;
|
||||
od = omap_device_alloc(pdev, ohs, 1, NULL, 0);
|
||||
if (!od) {
|
||||
if (IS_ERR(od)) {
|
||||
pr_err("Could not alloc omap_device for %s\n", pdev_name);
|
||||
r = -ENOMEM;
|
||||
goto err;
|
||||
|
|
|
@ -838,7 +838,7 @@ static int gpmc_setup_irq(void)
|
|||
return request_irq(gpmc_irq, gpmc_handle_irq, 0, "gpmc", NULL);
|
||||
}
|
||||
|
||||
static __exit int gpmc_free_irq(void)
|
||||
static __devexit int gpmc_free_irq(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -944,7 +944,7 @@ static __devinit int gpmc_probe(struct platform_device *pdev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static __exit int gpmc_remove(struct platform_device *pdev)
|
||||
static __devexit int gpmc_remove(struct platform_device *pdev)
|
||||
{
|
||||
gpmc_free_irq();
|
||||
gpmc_mem_exit();
|
||||
|
|
|
@ -523,7 +523,7 @@ static void __init omap_hsmmc_init_one(struct omap2_hsmmc_info *hsmmcinfo,
|
|||
dev_set_name(&pdev->dev, "%s.%d", pdev->name, pdev->id);
|
||||
|
||||
od = omap_device_alloc(pdev, ohs, 1, NULL, 0);
|
||||
if (!od) {
|
||||
if (IS_ERR(od)) {
|
||||
pr_err("Could not allocate od for %s\n", name);
|
||||
goto put_pdev;
|
||||
}
|
||||
|
|
|
@ -486,7 +486,7 @@ void omap_hwmod_mux(struct omap_hwmod_mux_info *hmux, u8 state)
|
|||
default:
|
||||
/* Nothing to be done */
|
||||
break;
|
||||
};
|
||||
}
|
||||
|
||||
if (val >= 0) {
|
||||
omap_mux_write(pad->partition, val,
|
||||
|
|
|
@ -61,8 +61,8 @@ int __init omap_secure_ram_reserve_memblock(void)
|
|||
{
|
||||
u32 size = OMAP_SECURE_RAM_STORAGE;
|
||||
|
||||
size = ALIGN(size, SZ_1M);
|
||||
omap_secure_memblock_base = arm_memblock_steal(size, SZ_1M);
|
||||
size = ALIGN(size, SECTION_SIZE);
|
||||
omap_secure_memblock_base = arm_memblock_steal(size, SECTION_SIZE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1697,6 +1697,29 @@ static bool _are_all_hardreset_lines_asserted(struct omap_hwmod *oh)
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* _are_any_hardreset_lines_asserted - return true if any part of @oh is
|
||||
* hard-reset
|
||||
* @oh: struct omap_hwmod *
|
||||
*
|
||||
* If any hardreset lines associated with @oh are asserted, then
|
||||
* return true. Otherwise, if no hardreset lines associated with @oh
|
||||
* are asserted, or if @oh has no hardreset lines, then return false.
|
||||
* This function is used to avoid executing some parts of the IP block
|
||||
* enable/disable sequence if any hardreset line is set.
|
||||
*/
|
||||
static bool _are_any_hardreset_lines_asserted(struct omap_hwmod *oh)
|
||||
{
|
||||
int rst_cnt = 0;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < oh->rst_lines_cnt && rst_cnt == 0; i++)
|
||||
if (_read_hardreset(oh, oh->rst_lines[i].name) > 0)
|
||||
rst_cnt++;
|
||||
|
||||
return (rst_cnt) ? true : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* _omap4_disable_module - enable CLKCTRL modulemode on OMAP4
|
||||
* @oh: struct omap_hwmod *
|
||||
|
@ -1715,7 +1738,7 @@ static int _omap4_disable_module(struct omap_hwmod *oh)
|
|||
* Since integration code might still be doing something, only
|
||||
* disable if all lines are under hardreset.
|
||||
*/
|
||||
if (!_are_all_hardreset_lines_asserted(oh))
|
||||
if (_are_any_hardreset_lines_asserted(oh))
|
||||
return 0;
|
||||
|
||||
pr_debug("omap_hwmod: %s: %s\n", oh->name, __func__);
|
||||
|
@ -1749,12 +1772,12 @@ static int _am33xx_disable_module(struct omap_hwmod *oh)
|
|||
|
||||
pr_debug("omap_hwmod: %s: %s\n", oh->name, __func__);
|
||||
|
||||
if (_are_any_hardreset_lines_asserted(oh))
|
||||
return 0;
|
||||
|
||||
am33xx_cm_module_disable(oh->clkdm->cm_inst, oh->clkdm->clkdm_offs,
|
||||
oh->prcm.omap4.clkctrl_offs);
|
||||
|
||||
if (_are_all_hardreset_lines_asserted(oh))
|
||||
return 0;
|
||||
|
||||
v = _am33xx_wait_target_disable(oh);
|
||||
if (v)
|
||||
pr_warn("omap_hwmod: %s: _wait_target_disable failed\n",
|
||||
|
|
|
@ -219,7 +219,7 @@ struct omap_hwmod omap2xxx_l4_wkup_hwmod = {
|
|||
|
||||
/* MPU */
|
||||
static struct omap_hwmod_irq_info omap2xxx_mpu_irqs[] = {
|
||||
{ .name = "pmu", .irq = 3 },
|
||||
{ .name = "pmu", .irq = 3 + OMAP_INTC_START },
|
||||
{ .irq = -1 }
|
||||
};
|
||||
|
||||
|
|
|
@ -94,7 +94,7 @@ static struct omap_hwmod omap3xxx_l4_sec_hwmod = {
|
|||
|
||||
/* MPU */
|
||||
static struct omap_hwmod_irq_info omap3xxx_mpu_irqs[] = {
|
||||
{ .name = "pmu", .irq = 3 },
|
||||
{ .name = "pmu", .irq = 3 + OMAP_INTC_START },
|
||||
{ .irq = -1 }
|
||||
};
|
||||
|
||||
|
@ -3683,6 +3683,7 @@ static struct omap_hwmod_ocp_if *am35xx_hwmod_ocp_ifs[] __initdata = {
|
|||
&omap3xxx_l4_core__usb_tll_hs,
|
||||
&omap3xxx_l4_core__es3plus_mmc1,
|
||||
&omap3xxx_l4_core__es3plus_mmc2,
|
||||
&omap3xxx_l4_core__hdq1w,
|
||||
&am35xx_mdio__l3,
|
||||
&am35xx_l4_core__mdio,
|
||||
&am35xx_emac__l3,
|
||||
|
@ -3737,7 +3738,7 @@ int __init omap3xxx_hwmod_init(void)
|
|||
} else {
|
||||
WARN(1, "OMAP3 hwmod family init: unknown chip type\n");
|
||||
return -EINVAL;
|
||||
};
|
||||
}
|
||||
|
||||
r = omap_hwmod_register_links(h);
|
||||
if (r < 0)
|
||||
|
@ -3754,7 +3755,7 @@ int __init omap3xxx_hwmod_init(void)
|
|||
rev == OMAP3430_REV_ES3_0 || rev == OMAP3430_REV_ES3_1 ||
|
||||
rev == OMAP3430_REV_ES3_1_2) {
|
||||
h = omap3430es2plus_hwmod_ocp_ifs;
|
||||
};
|
||||
}
|
||||
|
||||
if (h) {
|
||||
r = omap_hwmod_register_links(h);
|
||||
|
@ -3769,7 +3770,7 @@ int __init omap3xxx_hwmod_init(void)
|
|||
} else if (rev == OMAP3430_REV_ES3_0 || rev == OMAP3430_REV_ES3_1 ||
|
||||
rev == OMAP3430_REV_ES3_1_2) {
|
||||
h = omap3430_es3plus_hwmod_ocp_ifs;
|
||||
};
|
||||
}
|
||||
|
||||
if (h)
|
||||
r = omap_hwmod_register_links(h);
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
*/
|
||||
#include <linux/module.h>
|
||||
#include <linux/opp.h>
|
||||
#include <linux/cpu.h>
|
||||
|
||||
#include <plat/omap_device.h>
|
||||
|
||||
|
@ -62,13 +63,23 @@ int __init omap_init_opp_table(struct omap_opp_def *opp_def,
|
|||
__func__, i);
|
||||
return -EINVAL;
|
||||
}
|
||||
oh = omap_hwmod_lookup(opp_def->hwmod_name);
|
||||
if (!oh || !oh->od) {
|
||||
pr_debug("%s: no hwmod or odev for %s, [%d] cannot add OPPs.\n",
|
||||
__func__, opp_def->hwmod_name, i);
|
||||
continue;
|
||||
|
||||
if (!strncmp(opp_def->hwmod_name, "mpu", 3)) {
|
||||
/*
|
||||
* All current OMAPs share voltage rail and
|
||||
* clock source, so CPU0 is used to represent
|
||||
* the MPU-SS.
|
||||
*/
|
||||
dev = get_cpu_device(0);
|
||||
} else {
|
||||
oh = omap_hwmod_lookup(opp_def->hwmod_name);
|
||||
if (!oh || !oh->od) {
|
||||
pr_debug("%s: no hwmod or odev for %s, [%d] cannot add OPPs.\n",
|
||||
__func__, opp_def->hwmod_name, i);
|
||||
continue;
|
||||
}
|
||||
dev = &oh->od->pdev->dev;
|
||||
}
|
||||
dev = &oh->od->pdev->dev;
|
||||
|
||||
r = opp_add(dev, opp_def->freq, opp_def->u_volt);
|
||||
if (r) {
|
||||
|
|
|
@ -168,7 +168,7 @@ static int pm_dbg_open(struct inode *inode, struct file *file)
|
|||
default:
|
||||
return single_open(file, pm_dbg_show_timers,
|
||||
&inode->i_private);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
static const struct file_operations debug_fops = {
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
#include <linux/opp.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/suspend.h>
|
||||
#include <linux/cpu.h>
|
||||
|
||||
#include <asm/system_misc.h>
|
||||
|
||||
|
@ -169,7 +170,15 @@ static int __init omap2_set_init_voltage(char *vdd_name, char *clk_name,
|
|||
goto exit;
|
||||
}
|
||||
|
||||
dev = omap_device_get_by_hwmod_name(oh_name);
|
||||
if (!strncmp(oh_name, "mpu", 3))
|
||||
/*
|
||||
* All current OMAPs share voltage rail and clock
|
||||
* source, so CPU0 is used to represent the MPU-SS.
|
||||
*/
|
||||
dev = get_cpu_device(0);
|
||||
else
|
||||
dev = omap_device_get_by_hwmod_name(oh_name);
|
||||
|
||||
if (IS_ERR(dev)) {
|
||||
pr_err("%s: Unable to get dev pointer for hwmod %s\n",
|
||||
__func__, oh_name);
|
||||
|
@ -177,7 +186,7 @@ static int __init omap2_set_init_voltage(char *vdd_name, char *clk_name,
|
|||
}
|
||||
|
||||
voltdm = voltdm_lookup(vdd_name);
|
||||
if (IS_ERR(voltdm)) {
|
||||
if (!voltdm) {
|
||||
pr_err("%s: unable to get vdd pointer for vdd_%s\n",
|
||||
__func__, vdd_name);
|
||||
goto exit;
|
||||
|
|
|
@ -122,7 +122,7 @@ static int __init sr_dev_init(struct omap_hwmod *oh, void *user)
|
|||
sr_data->senp_mod = 0x1;
|
||||
|
||||
sr_data->voltdm = voltdm_lookup(sr_dev_attr->sensor_voltdm_name);
|
||||
if (IS_ERR(sr_data->voltdm)) {
|
||||
if (!sr_data->voltdm) {
|
||||
pr_err("%s: Unable to get voltage domain pointer for VDD %s\n",
|
||||
__func__, sr_dev_attr->sensor_voltdm_name);
|
||||
goto exit;
|
||||
|
|
|
@ -378,7 +378,7 @@ static void __init realtime_counter_init(void)
|
|||
return;
|
||||
}
|
||||
sys_clk = clk_get(NULL, "sys_clkin_ck");
|
||||
if (!sys_clk) {
|
||||
if (IS_ERR(sys_clk)) {
|
||||
pr_err("%s: failed to get system clock handle\n", __func__);
|
||||
iounmap(base);
|
||||
return;
|
||||
|
|
|
@ -158,7 +158,7 @@ static struct regulator_init_data omap3_vpll2_idata = {
|
|||
};
|
||||
|
||||
static struct regulator_consumer_supply omap3_vdd1_supply[] = {
|
||||
REGULATOR_SUPPLY("vcc", "mpu.0"),
|
||||
REGULATOR_SUPPLY("vcc", "cpu0"),
|
||||
};
|
||||
|
||||
static struct regulator_consumer_supply omap3_vdd2_supply[] = {
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include <asm/mach/map.h>
|
||||
|
||||
#include <mach/pxa25x.h>
|
||||
#undef GPIO24_SSP1_SFRM
|
||||
#include <mach/pxa27x.h>
|
||||
#include <mach/audio.h>
|
||||
#include <linux/platform_data/video-pxafb.h>
|
||||
|
|
|
@ -105,6 +105,7 @@ static struct pxamci_platform_data palmte2_mci_platform_data = {
|
|||
.gpio_power = GPIO_NR_PALMTE2_SD_POWER,
|
||||
};
|
||||
|
||||
#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
|
||||
/******************************************************************************
|
||||
* GPIO keys
|
||||
******************************************************************************/
|
||||
|
@ -132,6 +133,7 @@ static struct platform_device palmte2_pxa_keys = {
|
|||
.platform_data = &palmte2_pxa_keys_data,
|
||||
},
|
||||
};
|
||||
#endif
|
||||
|
||||
/******************************************************************************
|
||||
* Backlight
|
||||
|
|
|
@ -55,7 +55,6 @@
|
|||
#ifdef CONFIG_PM
|
||||
static int sharpsl_off_charge_battery(void);
|
||||
static int sharpsl_check_battery_voltage(void);
|
||||
static int sharpsl_fatal_check(void);
|
||||
#endif
|
||||
static int sharpsl_check_battery_temp(void);
|
||||
static int sharpsl_ac_check(void);
|
||||
|
@ -686,53 +685,6 @@ static int corgi_pxa_pm_enter(suspend_state_t state)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check for fatal battery errors
|
||||
* Fatal returns -1
|
||||
*/
|
||||
static int sharpsl_fatal_check(void)
|
||||
{
|
||||
int buff[5], temp, i, acin;
|
||||
|
||||
dev_dbg(sharpsl_pm.dev, "sharpsl_fatal_check entered\n");
|
||||
|
||||
/* Check AC-Adapter */
|
||||
acin = sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN);
|
||||
|
||||
if (acin && (sharpsl_pm.charge_mode == CHRG_ON)) {
|
||||
sharpsl_pm.machinfo->charge(0);
|
||||
udelay(100);
|
||||
sharpsl_pm.machinfo->discharge(1); /* enable discharge */
|
||||
mdelay(SHARPSL_WAIT_DISCHARGE_ON);
|
||||
}
|
||||
|
||||
if (sharpsl_pm.machinfo->discharge1)
|
||||
sharpsl_pm.machinfo->discharge1(1);
|
||||
|
||||
/* Check battery : check inserting battery ? */
|
||||
for (i = 0; i < 5; i++) {
|
||||
buff[i] = sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_VOLT);
|
||||
mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_VOLT);
|
||||
}
|
||||
|
||||
if (sharpsl_pm.machinfo->discharge1)
|
||||
sharpsl_pm.machinfo->discharge1(0);
|
||||
|
||||
if (acin && (sharpsl_pm.charge_mode == CHRG_ON)) {
|
||||
udelay(100);
|
||||
sharpsl_pm.machinfo->charge(1);
|
||||
sharpsl_pm.machinfo->discharge(0);
|
||||
}
|
||||
|
||||
temp = get_select_val(buff);
|
||||
dev_dbg(sharpsl_pm.dev, "sharpsl_fatal_check: acin: %d, discharge voltage: %d, no discharge: %ld\n", acin, temp, sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_VOLT));
|
||||
|
||||
if ((acin && (temp < sharpsl_pm.machinfo->fatal_acin_volt)) ||
|
||||
(!acin && (temp < sharpsl_pm.machinfo->fatal_noacin_volt)))
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sharpsl_off_charge_error(void)
|
||||
{
|
||||
dev_err(sharpsl_pm.dev, "Offline Charger: Error occurred.\n");
|
||||
|
|
|
@ -768,8 +768,7 @@ static unsigned long viper_tpm;
|
|||
|
||||
static int __init viper_tpm_setup(char *str)
|
||||
{
|
||||
strict_strtoul(str, 10, &viper_tpm);
|
||||
return 1;
|
||||
return strict_strtoul(str, 10, &viper_tpm) >= 0;
|
||||
}
|
||||
|
||||
__setup("tpm=", viper_tpm_setup);
|
||||
|
|
|
@ -960,7 +960,9 @@ static int __init ecard_probe(int slot, unsigned irq, card_type_t type)
|
|||
*ecp = ec;
|
||||
slot_to_expcard[slot] = ec;
|
||||
|
||||
device_register(&ec->dev);
|
||||
rc = device_register(&ec->dev);
|
||||
if (rc)
|
||||
goto nodev;
|
||||
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -232,7 +232,7 @@ struct irq_chip s3c2416_irq_second = {
|
|||
|
||||
/* IRQ initialisation code */
|
||||
|
||||
static int __init s3c2416_add_sub(unsigned int base,
|
||||
static int s3c2416_add_sub(unsigned int base,
|
||||
void (*demux)(unsigned int,
|
||||
struct irq_desc *),
|
||||
struct irq_chip *chip,
|
||||
|
@ -251,7 +251,7 @@ static int __init s3c2416_add_sub(unsigned int base,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void __init s3c2416_irq_add_second(void)
|
||||
static void s3c2416_irq_add_second(void)
|
||||
{
|
||||
unsigned long pend;
|
||||
unsigned long last;
|
||||
|
@ -287,7 +287,7 @@ static void __init s3c2416_irq_add_second(void)
|
|||
}
|
||||
}
|
||||
|
||||
static int __init s3c2416_irq_add(struct device *dev,
|
||||
static int s3c2416_irq_add(struct device *dev,
|
||||
struct subsys_interface *sif)
|
||||
{
|
||||
printk(KERN_INFO "S3C2416: IRQ Support\n");
|
||||
|
|
|
@ -222,7 +222,7 @@ static struct irq_chip s3c2443_irq_cam = {
|
|||
|
||||
/* IRQ initialisation code */
|
||||
|
||||
static int __init s3c2443_add_sub(unsigned int base,
|
||||
static int s3c2443_add_sub(unsigned int base,
|
||||
void (*demux)(unsigned int,
|
||||
struct irq_desc *),
|
||||
struct irq_chip *chip,
|
||||
|
@ -241,7 +241,7 @@ static int __init s3c2443_add_sub(unsigned int base,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int __init s3c2443_irq_add(struct device *dev,
|
||||
static int s3c2443_irq_add(struct device *dev,
|
||||
struct subsys_interface *sif)
|
||||
{
|
||||
printk("S3C2443: IRQ Support\n");
|
||||
|
|
|
@ -104,7 +104,7 @@ static struct s3c2410_hcd_info usb_simtec_info __initdata = {
|
|||
};
|
||||
|
||||
|
||||
int usb_simtec_init(void)
|
||||
int __init usb_simtec_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
|
|
|
@ -388,7 +388,7 @@ static void __init map_sa1100_gpio_regs( void )
|
|||
*/
|
||||
static void __init get_assabet_scr(void)
|
||||
{
|
||||
unsigned long scr, i;
|
||||
unsigned long uninitialized_var(scr), i;
|
||||
|
||||
GPDR |= 0x3fc; /* Configure GPIO 9:2 as outputs */
|
||||
GPSR = 0x3fc; /* Write 0xFF to GPIO 9:2 */
|
||||
|
|
|
@ -41,7 +41,7 @@ static struct hw_pci shark_pci __initdata = {
|
|||
static int __init shark_pci_init(void)
|
||||
{
|
||||
if (!machine_is_shark())
|
||||
return;
|
||||
return -ENODEV;
|
||||
|
||||
pcibios_min_io = 0x6000;
|
||||
pcibios_min_mem = 0x50000000;
|
||||
|
|
|
@ -100,7 +100,7 @@ static inline int shmobile_cpu_is_dead(unsigned int cpu) { return 1; }
|
|||
|
||||
extern void shmobile_smp_init_cpus(unsigned int ncores);
|
||||
|
||||
static inline void shmobile_init_late(void)
|
||||
static inline void __init shmobile_init_late(void)
|
||||
{
|
||||
shmobile_suspend_init();
|
||||
shmobile_cpuidle_init();
|
||||
|
|
|
@ -16,7 +16,7 @@ config ARCH_TEGRA_2x_SOC
|
|||
select ARM_ERRATA_742230
|
||||
select ARM_ERRATA_751472
|
||||
select ARM_ERRATA_754327
|
||||
select ARM_ERRATA_764369
|
||||
select ARM_ERRATA_764369 if SMP
|
||||
select PL310_ERRATA_727915 if CACHE_L2X0
|
||||
select PL310_ERRATA_769419 if CACHE_L2X0
|
||||
select CPU_FREQ_TABLE if CPU_FREQ
|
||||
|
@ -37,7 +37,7 @@ config ARCH_TEGRA_3x_SOC
|
|||
select ARM_ERRATA_743622
|
||||
select ARM_ERRATA_751472
|
||||
select ARM_ERRATA_754322
|
||||
select ARM_ERRATA_764369
|
||||
select ARM_ERRATA_764369 if SMP
|
||||
select PL310_ERRATA_769419 if CACHE_L2X0
|
||||
select CPU_FREQ_TABLE if CPU_FREQ
|
||||
help
|
||||
|
@ -57,8 +57,6 @@ config TEGRA_AHB
|
|||
which controls AHB bus master arbitration and some
|
||||
perfomance parameters(priority, prefech size).
|
||||
|
||||
comment "Tegra board type"
|
||||
|
||||
choice
|
||||
prompt "Default low-level debug console UART"
|
||||
default TEGRA_DEBUG_UART_NONE
|
||||
|
|
|
@ -5,9 +5,9 @@ config UX500_SOC_COMMON
|
|||
default y
|
||||
select ARM_GIC
|
||||
select HAS_MTU
|
||||
select PL310_ERRATA_753970
|
||||
select PL310_ERRATA_753970 if CACHE_PL310
|
||||
select ARM_ERRATA_754322
|
||||
select ARM_ERRATA_764369
|
||||
select ARM_ERRATA_764369 if SMP
|
||||
select CACHE_L2X0
|
||||
select PINCTRL
|
||||
select PINCTRL_NOMADIK
|
||||
|
|
|
@ -15,15 +15,15 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#define UART0_PHYS 0xd8200000
|
||||
#include <asm/io.h>
|
||||
#define UART0_PHYS 0xd8200000
|
||||
#define UART0_ADDR(x) *(volatile unsigned char *)(UART0_PHYS + x)
|
||||
|
||||
static void putc(const char c)
|
||||
{
|
||||
while (readb(UART0_PHYS + 0x1c) & 0x2)
|
||||
while (UART0_ADDR(0x1c) & 0x2)
|
||||
/* Tx busy, wait and poll */;
|
||||
|
||||
writeb(c, UART0_PHYS);
|
||||
UART0_ADDR(0) = c;
|
||||
}
|
||||
|
||||
static void flush(void)
|
||||
|
|
|
@ -77,8 +77,11 @@ static void vt8500_power_off(void)
|
|||
|
||||
void __init vt8500_init(void)
|
||||
{
|
||||
struct device_node *np, *fb;
|
||||
struct device_node *np;
|
||||
#if defined(CONFIG_FB_VT8500) || defined(CONFIG_FB_WM8505)
|
||||
struct device_node *fb;
|
||||
void __iomem *gpio_base;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_FB_VT8500
|
||||
fb = of_find_compatible_node(NULL, NULL, "via,vt8500-fb");
|
||||
|
|
|
@ -43,11 +43,13 @@ config OMAP_DEBUG_DEVICES
|
|||
|
||||
config OMAP_DEBUG_LEDS
|
||||
def_bool y if NEW_LEDS
|
||||
select LEDS_CLASS
|
||||
depends on OMAP_DEBUG_DEVICES
|
||||
|
||||
config POWER_AVS_OMAP
|
||||
bool "AVS(Adaptive Voltage Scaling) support for OMAP IP versions 1&2"
|
||||
depends on POWER_AVS && (ARCH_OMAP3 || ARCH_OMAP4) && PM
|
||||
select POWER_SUPPLY
|
||||
help
|
||||
Say Y to enable AVS(Adaptive Voltage Scaling)
|
||||
support on OMAP containing the version 1 or
|
||||
|
|
|
@ -52,22 +52,29 @@ static u32 notrace omap_32k_read_sched_clock(void)
|
|||
* nsecs and adds to a monotonically increasing timespec.
|
||||
*/
|
||||
static struct timespec persistent_ts;
|
||||
static cycles_t cycles, last_cycles;
|
||||
static cycles_t cycles;
|
||||
static unsigned int persistent_mult, persistent_shift;
|
||||
static DEFINE_SPINLOCK(read_persistent_clock_lock);
|
||||
|
||||
static void omap_read_persistent_clock(struct timespec *ts)
|
||||
{
|
||||
unsigned long long nsecs;
|
||||
cycles_t delta;
|
||||
struct timespec *tsp = &persistent_ts;
|
||||
cycles_t last_cycles;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&read_persistent_clock_lock, flags);
|
||||
|
||||
last_cycles = cycles;
|
||||
cycles = sync32k_cnt_reg ? __raw_readl(sync32k_cnt_reg) : 0;
|
||||
delta = cycles - last_cycles;
|
||||
|
||||
nsecs = clocksource_cyc2ns(delta, persistent_mult, persistent_shift);
|
||||
nsecs = clocksource_cyc2ns(cycles - last_cycles,
|
||||
persistent_mult, persistent_shift);
|
||||
|
||||
timespec_add_ns(tsp, nsecs);
|
||||
*ts = *tsp;
|
||||
timespec_add_ns(&persistent_ts, nsecs);
|
||||
|
||||
*ts = persistent_ts;
|
||||
|
||||
spin_unlock_irqrestore(&read_persistent_clock_lock, flags);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -38,7 +38,7 @@ int omap_pm_set_max_mpu_wakeup_lat(struct device *dev, long t)
|
|||
if (!dev || t < -1) {
|
||||
WARN(1, "OMAP PM: %s: invalid parameter(s)", __func__);
|
||||
return -EINVAL;
|
||||
};
|
||||
}
|
||||
|
||||
if (t == -1)
|
||||
pr_debug("OMAP PM: remove max MPU wakeup latency constraint: dev %s\n",
|
||||
|
@ -67,7 +67,7 @@ int omap_pm_set_min_bus_tput(struct device *dev, u8 agent_id, unsigned long r)
|
|||
agent_id != OCP_TARGET_AGENT)) {
|
||||
WARN(1, "OMAP PM: %s: invalid parameter(s)", __func__);
|
||||
return -EINVAL;
|
||||
};
|
||||
}
|
||||
|
||||
if (r == 0)
|
||||
pr_debug("OMAP PM: remove min bus tput constraint: dev %s for agent_id %d\n",
|
||||
|
@ -93,7 +93,7 @@ int omap_pm_set_max_dev_wakeup_lat(struct device *req_dev, struct device *dev,
|
|||
if (!req_dev || !dev || t < -1) {
|
||||
WARN(1, "OMAP PM: %s: invalid parameter(s)", __func__);
|
||||
return -EINVAL;
|
||||
};
|
||||
}
|
||||
|
||||
if (t == -1)
|
||||
pr_debug("OMAP PM: remove max device latency constraint: dev %s\n",
|
||||
|
@ -123,7 +123,7 @@ int omap_pm_set_max_sdma_lat(struct device *dev, long t)
|
|||
if (!dev || t < -1) {
|
||||
WARN(1, "OMAP PM: %s: invalid parameter(s)", __func__);
|
||||
return -EINVAL;
|
||||
};
|
||||
}
|
||||
|
||||
if (t == -1)
|
||||
pr_debug("OMAP PM: remove max DMA latency constraint: dev %s\n",
|
||||
|
|
|
@ -725,7 +725,7 @@ struct platform_device __init *omap_device_build_ss(const char *pdev_name, int p
|
|||
dev_set_name(&pdev->dev, "%s", pdev->name);
|
||||
|
||||
od = omap_device_alloc(pdev, ohs, oh_cnt, pm_lats, pm_lats_cnt);
|
||||
if (!od)
|
||||
if (IS_ERR(od))
|
||||
goto odbs_exit1;
|
||||
|
||||
ret = platform_device_add_data(pdev, pdata, pdata_len);
|
||||
|
|
|
@ -74,21 +74,21 @@ static inline void netwinder_ds1620_reset(void)
|
|||
|
||||
static inline void netwinder_lock(unsigned long *flags)
|
||||
{
|
||||
spin_lock_irqsave(&nw_gpio_lock, *flags);
|
||||
raw_spin_lock_irqsave(&nw_gpio_lock, *flags);
|
||||
}
|
||||
|
||||
static inline void netwinder_unlock(unsigned long *flags)
|
||||
{
|
||||
spin_unlock_irqrestore(&nw_gpio_lock, *flags);
|
||||
raw_spin_unlock_irqrestore(&nw_gpio_lock, *flags);
|
||||
}
|
||||
|
||||
static inline void netwinder_set_fan(int i)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&nw_gpio_lock, flags);
|
||||
raw_spin_lock_irqsave(&nw_gpio_lock, flags);
|
||||
nw_gpio_modify_op(GPIO_FAN, i ? GPIO_FAN : 0);
|
||||
spin_unlock_irqrestore(&nw_gpio_lock, flags);
|
||||
raw_spin_unlock_irqrestore(&nw_gpio_lock, flags);
|
||||
}
|
||||
|
||||
static inline int netwinder_get_fan(void)
|
||||
|
|
|
@ -583,9 +583,9 @@ static void kick_open(void)
|
|||
* we want to write a bit pattern XXX1 to Xilinx to enable
|
||||
* the write gate, which will be open for about the next 2ms.
|
||||
*/
|
||||
spin_lock_irqsave(&nw_gpio_lock, flags);
|
||||
raw_spin_lock_irqsave(&nw_gpio_lock, flags);
|
||||
nw_cpld_modify(CPLD_FLASH_WR_ENABLE, CPLD_FLASH_WR_ENABLE);
|
||||
spin_unlock_irqrestore(&nw_gpio_lock, flags);
|
||||
raw_spin_unlock_irqrestore(&nw_gpio_lock, flags);
|
||||
|
||||
/*
|
||||
* let the ISA bus to catch on...
|
||||
|
|
|
@ -30,20 +30,12 @@
|
|||
#include <asm/smp_plat.h>
|
||||
#include <asm/cpu.h>
|
||||
|
||||
#include <plat/clock.h>
|
||||
#include <plat/omap-pm.h>
|
||||
#include <plat/common.h>
|
||||
#include <plat/omap_device.h>
|
||||
|
||||
#include <mach/hardware.h>
|
||||
|
||||
/* OPP tolerance in percentage */
|
||||
#define OPP_TOLERANCE 4
|
||||
|
||||
static struct cpufreq_frequency_table *freq_table;
|
||||
static atomic_t freq_table_users = ATOMIC_INIT(0);
|
||||
static struct clk *mpu_clk;
|
||||
static char *mpu_clk_name;
|
||||
static struct device *mpu_dev;
|
||||
static struct regulator *mpu_reg;
|
||||
|
||||
|
@ -108,6 +100,14 @@ static int omap_target(struct cpufreq_policy *policy,
|
|||
}
|
||||
|
||||
freq = freqs.new * 1000;
|
||||
ret = clk_round_rate(mpu_clk, freq);
|
||||
if (IS_ERR_VALUE(ret)) {
|
||||
dev_warn(mpu_dev,
|
||||
"CPUfreq: Cannot find matching frequency for %lu\n",
|
||||
freq);
|
||||
return ret;
|
||||
}
|
||||
freq = ret;
|
||||
|
||||
if (mpu_reg) {
|
||||
opp = opp_find_freq_ceil(mpu_dev, &freq);
|
||||
|
@ -172,7 +172,7 @@ static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
|
|||
{
|
||||
int result = 0;
|
||||
|
||||
mpu_clk = clk_get(NULL, mpu_clk_name);
|
||||
mpu_clk = clk_get(NULL, "cpufreq_ck");
|
||||
if (IS_ERR(mpu_clk))
|
||||
return PTR_ERR(mpu_clk);
|
||||
|
||||
|
@ -253,22 +253,10 @@ static struct cpufreq_driver omap_driver = {
|
|||
|
||||
static int __init omap_cpufreq_init(void)
|
||||
{
|
||||
if (cpu_is_omap24xx())
|
||||
mpu_clk_name = "virt_prcm_set";
|
||||
else if (cpu_is_omap34xx())
|
||||
mpu_clk_name = "dpll1_ck";
|
||||
else if (cpu_is_omap44xx())
|
||||
mpu_clk_name = "dpll_mpu_ck";
|
||||
|
||||
if (!mpu_clk_name) {
|
||||
pr_err("%s: unsupported Silicon?\n", __func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
mpu_dev = omap_device_get_by_hwmod_name("mpu");
|
||||
if (IS_ERR(mpu_dev)) {
|
||||
mpu_dev = get_cpu_device(0);
|
||||
if (!mpu_dev) {
|
||||
pr_warning("%s: unable to get the mpu device\n", __func__);
|
||||
return PTR_ERR(mpu_dev);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
mpu_reg = regulator_get(mpu_dev, "vcc");
|
||||
|
|
|
@ -27,7 +27,6 @@
|
|||
|
||||
#include <asm/gpio.h>
|
||||
|
||||
#include <mach/gpio-tegra.h>
|
||||
#include <linux/platform_data/mmc-sdhci-tegra.h>
|
||||
|
||||
#include "sdhci-pltfm.h"
|
||||
|
|
|
@ -930,7 +930,7 @@ static int __init omap_sr_probe(struct platform_device *pdev)
|
|||
if (!sr_info->base) {
|
||||
dev_err(&pdev->dev, "%s: ioremap fail\n", __func__);
|
||||
ret = -ENOMEM;
|
||||
goto err_release_region;
|
||||
goto err_free_name;
|
||||
}
|
||||
|
||||
if (irq)
|
||||
|
@ -969,7 +969,7 @@ static int __init omap_sr_probe(struct platform_device *pdev)
|
|||
dev_err(&pdev->dev, "%s: Unable to create debugfs directory\n",
|
||||
__func__);
|
||||
ret = PTR_ERR(sr_info->dbg_dir);
|
||||
goto err_free_name;
|
||||
goto err_debugfs;
|
||||
}
|
||||
|
||||
(void) debugfs_create_file("autocomp", S_IRUGO | S_IWUSR,
|
||||
|
@ -1013,11 +1013,11 @@ static int __init omap_sr_probe(struct platform_device *pdev)
|
|||
|
||||
err_debugfs:
|
||||
debugfs_remove_recursive(sr_info->dbg_dir);
|
||||
err_free_name:
|
||||
kfree(sr_info->name);
|
||||
err_iounmap:
|
||||
list_del(&sr_info->node);
|
||||
iounmap(sr_info->base);
|
||||
err_free_name:
|
||||
kfree(sr_info->name);
|
||||
err_release_region:
|
||||
release_mem_region(mem->start, resource_size(mem));
|
||||
err_free_devinfo:
|
||||
|
|
|
@ -1482,9 +1482,9 @@ vnc_mute_spkr(wavnc_info *devc)
|
|||
{
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&nw_gpio_lock, flags);
|
||||
raw_spin_lock_irqsave(&nw_gpio_lock, flags);
|
||||
nw_cpld_modify(CPLD_UNMUTE, devc->spkr_mute_state ? 0 : CPLD_UNMUTE);
|
||||
spin_unlock_irqrestore(&nw_gpio_lock, flags);
|
||||
raw_spin_unlock_irqrestore(&nw_gpio_lock, flags);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Loading…
Reference in a new issue