diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-10 21:21:48 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-10 21:21:48 -0400 |
| commit | da06a8d7bed2f3bfc12979384b2d1247ec4873db (patch) | |
| tree | ed60bec05c7d69d94ad048d404321ce759a48868 /drivers | |
| parent | 49999ab27eab6289a8e4f450e148bdab521361b2 (diff) | |
| parent | 6bd5dbda2adeabba69c969886511e501a65b6e3c (diff) | |
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
...
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/char/ds1620.c | 8 | ||||
| -rw-r--r-- | drivers/char/nwflash.c | 4 | ||||
| -rw-r--r-- | drivers/cpufreq/omap-cpufreq.c | 36 | ||||
| -rw-r--r-- | drivers/mmc/host/sdhci-tegra.c | 1 | ||||
| -rw-r--r-- | drivers/power/avs/smartreflex.c | 8 |
5 files changed, 22 insertions, 35 deletions
diff --git a/drivers/char/ds1620.c b/drivers/char/ds1620.c index aab9605f0b43..24ffd8cec51e 100644 --- a/drivers/char/ds1620.c +++ b/drivers/char/ds1620.c | |||
| @@ -74,21 +74,21 @@ static inline void netwinder_ds1620_reset(void) | |||
| 74 | 74 | ||
| 75 | static inline void netwinder_lock(unsigned long *flags) | 75 | static inline void netwinder_lock(unsigned long *flags) |
| 76 | { | 76 | { |
| 77 | spin_lock_irqsave(&nw_gpio_lock, *flags); | 77 | raw_spin_lock_irqsave(&nw_gpio_lock, *flags); |
| 78 | } | 78 | } |
| 79 | 79 | ||
| 80 | static inline void netwinder_unlock(unsigned long *flags) | 80 | static inline void netwinder_unlock(unsigned long *flags) |
| 81 | { | 81 | { |
| 82 | spin_unlock_irqrestore(&nw_gpio_lock, *flags); | 82 | raw_spin_unlock_irqrestore(&nw_gpio_lock, *flags); |
| 83 | } | 83 | } |
| 84 | 84 | ||
| 85 | static inline void netwinder_set_fan(int i) | 85 | static inline void netwinder_set_fan(int i) |
| 86 | { | 86 | { |
| 87 | unsigned long flags; | 87 | unsigned long flags; |
| 88 | 88 | ||
| 89 | spin_lock_irqsave(&nw_gpio_lock, flags); | 89 | raw_spin_lock_irqsave(&nw_gpio_lock, flags); |
| 90 | nw_gpio_modify_op(GPIO_FAN, i ? GPIO_FAN : 0); | 90 | nw_gpio_modify_op(GPIO_FAN, i ? GPIO_FAN : 0); |
| 91 | spin_unlock_irqrestore(&nw_gpio_lock, flags); | 91 | raw_spin_unlock_irqrestore(&nw_gpio_lock, flags); |
| 92 | } | 92 | } |
| 93 | 93 | ||
| 94 | static inline int netwinder_get_fan(void) | 94 | static inline int netwinder_get_fan(void) |
diff --git a/drivers/char/nwflash.c b/drivers/char/nwflash.c index a0e2f7d70355..e371480d3639 100644 --- a/drivers/char/nwflash.c +++ b/drivers/char/nwflash.c | |||
| @@ -583,9 +583,9 @@ static void kick_open(void) | |||
| 583 | * we want to write a bit pattern XXX1 to Xilinx to enable | 583 | * we want to write a bit pattern XXX1 to Xilinx to enable |
| 584 | * the write gate, which will be open for about the next 2ms. | 584 | * the write gate, which will be open for about the next 2ms. |
| 585 | */ | 585 | */ |
| 586 | spin_lock_irqsave(&nw_gpio_lock, flags); | 586 | raw_spin_lock_irqsave(&nw_gpio_lock, flags); |
| 587 | nw_cpld_modify(CPLD_FLASH_WR_ENABLE, CPLD_FLASH_WR_ENABLE); | 587 | nw_cpld_modify(CPLD_FLASH_WR_ENABLE, CPLD_FLASH_WR_ENABLE); |
| 588 | spin_unlock_irqrestore(&nw_gpio_lock, flags); | 588 | raw_spin_unlock_irqrestore(&nw_gpio_lock, flags); |
| 589 | 589 | ||
| 590 | /* | 590 | /* |
| 591 | * let the ISA bus to catch on... | 591 | * let the ISA bus to catch on... |
diff --git a/drivers/cpufreq/omap-cpufreq.c b/drivers/cpufreq/omap-cpufreq.c index 65f8e9a54975..1f3417a8322d 100644 --- a/drivers/cpufreq/omap-cpufreq.c +++ b/drivers/cpufreq/omap-cpufreq.c | |||
| @@ -30,20 +30,12 @@ | |||
| 30 | #include <asm/smp_plat.h> | 30 | #include <asm/smp_plat.h> |
| 31 | #include <asm/cpu.h> | 31 | #include <asm/cpu.h> |
| 32 | 32 | ||
| 33 | #include <plat/clock.h> | ||
| 34 | #include <plat/omap-pm.h> | ||
| 35 | #include <plat/common.h> | ||
| 36 | #include <plat/omap_device.h> | ||
| 37 | |||
| 38 | #include <mach/hardware.h> | ||
| 39 | |||
| 40 | /* OPP tolerance in percentage */ | 33 | /* OPP tolerance in percentage */ |
| 41 | #define OPP_TOLERANCE 4 | 34 | #define OPP_TOLERANCE 4 |
| 42 | 35 | ||
| 43 | static struct cpufreq_frequency_table *freq_table; | 36 | static struct cpufreq_frequency_table *freq_table; |
| 44 | static atomic_t freq_table_users = ATOMIC_INIT(0); | 37 | static atomic_t freq_table_users = ATOMIC_INIT(0); |
| 45 | static struct clk *mpu_clk; | 38 | static struct clk *mpu_clk; |
| 46 | static char *mpu_clk_name; | ||
| 47 | static struct device *mpu_dev; | 39 | static struct device *mpu_dev; |
| 48 | static struct regulator *mpu_reg; | 40 | static struct regulator *mpu_reg; |
| 49 | 41 | ||
| @@ -108,6 +100,14 @@ static int omap_target(struct cpufreq_policy *policy, | |||
| 108 | } | 100 | } |
| 109 | 101 | ||
| 110 | freq = freqs.new * 1000; | 102 | freq = freqs.new * 1000; |
| 103 | ret = clk_round_rate(mpu_clk, freq); | ||
| 104 | if (IS_ERR_VALUE(ret)) { | ||
| 105 | dev_warn(mpu_dev, | ||
| 106 | "CPUfreq: Cannot find matching frequency for %lu\n", | ||
| 107 | freq); | ||
| 108 | return ret; | ||
| 109 | } | ||
| 110 | freq = ret; | ||
| 111 | 111 | ||
| 112 | if (mpu_reg) { | 112 | if (mpu_reg) { |
| 113 | opp = opp_find_freq_ceil(mpu_dev, &freq); | 113 | opp = opp_find_freq_ceil(mpu_dev, &freq); |
| @@ -172,7 +172,7 @@ static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy) | |||
| 172 | { | 172 | { |
| 173 | int result = 0; | 173 | int result = 0; |
| 174 | 174 | ||
| 175 | mpu_clk = clk_get(NULL, mpu_clk_name); | 175 | mpu_clk = clk_get(NULL, "cpufreq_ck"); |
| 176 | if (IS_ERR(mpu_clk)) | 176 | if (IS_ERR(mpu_clk)) |
| 177 | return PTR_ERR(mpu_clk); | 177 | return PTR_ERR(mpu_clk); |
| 178 | 178 | ||
| @@ -253,22 +253,10 @@ static struct cpufreq_driver omap_driver = { | |||
| 253 | 253 | ||
| 254 | static int __init omap_cpufreq_init(void) | 254 | static int __init omap_cpufreq_init(void) |
| 255 | { | 255 | { |
| 256 | if (cpu_is_omap24xx()) | 256 | mpu_dev = get_cpu_device(0); |
| 257 | mpu_clk_name = "virt_prcm_set"; | 257 | if (!mpu_dev) { |
| 258 | else if (cpu_is_omap34xx()) | ||
| 259 | mpu_clk_name = "dpll1_ck"; | ||
| 260 | else if (cpu_is_omap44xx()) | ||
| 261 | mpu_clk_name = "dpll_mpu_ck"; | ||
| 262 | |||
| 263 | if (!mpu_clk_name) { | ||
| 264 | pr_err("%s: unsupported Silicon?\n", __func__); | ||
| 265 | return -EINVAL; | ||
| 266 | } | ||
| 267 | |||
| 268 | mpu_dev = omap_device_get_by_hwmod_name("mpu"); | ||
| 269 | if (IS_ERR(mpu_dev)) { | ||
| 270 | pr_warning("%s: unable to get the mpu device\n", __func__); | 258 | pr_warning("%s: unable to get the mpu device\n", __func__); |
| 271 | return PTR_ERR(mpu_dev); | 259 | return -EINVAL; |
| 272 | } | 260 | } |
| 273 | 261 | ||
| 274 | mpu_reg = regulator_get(mpu_dev, "vcc"); | 262 | mpu_reg = regulator_get(mpu_dev, "vcc"); |
diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c index 84e8d0c59ee5..f9eb91623701 100644 --- a/drivers/mmc/host/sdhci-tegra.c +++ b/drivers/mmc/host/sdhci-tegra.c | |||
| @@ -27,7 +27,6 @@ | |||
| 27 | 27 | ||
| 28 | #include <asm/gpio.h> | 28 | #include <asm/gpio.h> |
| 29 | 29 | ||
| 30 | #include <mach/gpio-tegra.h> | ||
| 31 | #include <linux/platform_data/mmc-sdhci-tegra.h> | 30 | #include <linux/platform_data/mmc-sdhci-tegra.h> |
| 32 | 31 | ||
| 33 | #include "sdhci-pltfm.h" | 32 | #include "sdhci-pltfm.h" |
diff --git a/drivers/power/avs/smartreflex.c b/drivers/power/avs/smartreflex.c index d4957b4edb62..24768a27e1d8 100644 --- a/drivers/power/avs/smartreflex.c +++ b/drivers/power/avs/smartreflex.c | |||
| @@ -930,7 +930,7 @@ static int __init omap_sr_probe(struct platform_device *pdev) | |||
| 930 | if (!sr_info->base) { | 930 | if (!sr_info->base) { |
| 931 | dev_err(&pdev->dev, "%s: ioremap fail\n", __func__); | 931 | dev_err(&pdev->dev, "%s: ioremap fail\n", __func__); |
| 932 | ret = -ENOMEM; | 932 | ret = -ENOMEM; |
| 933 | goto err_release_region; | 933 | goto err_free_name; |
| 934 | } | 934 | } |
| 935 | 935 | ||
| 936 | if (irq) | 936 | if (irq) |
| @@ -969,7 +969,7 @@ static int __init omap_sr_probe(struct platform_device *pdev) | |||
| 969 | dev_err(&pdev->dev, "%s: Unable to create debugfs directory\n", | 969 | dev_err(&pdev->dev, "%s: Unable to create debugfs directory\n", |
| 970 | __func__); | 970 | __func__); |
| 971 | ret = PTR_ERR(sr_info->dbg_dir); | 971 | ret = PTR_ERR(sr_info->dbg_dir); |
| 972 | goto err_free_name; | 972 | goto err_debugfs; |
| 973 | } | 973 | } |
| 974 | 974 | ||
| 975 | (void) debugfs_create_file("autocomp", S_IRUGO | S_IWUSR, | 975 | (void) debugfs_create_file("autocomp", S_IRUGO | S_IWUSR, |
| @@ -1013,11 +1013,11 @@ static int __init omap_sr_probe(struct platform_device *pdev) | |||
| 1013 | 1013 | ||
| 1014 | err_debugfs: | 1014 | err_debugfs: |
| 1015 | debugfs_remove_recursive(sr_info->dbg_dir); | 1015 | debugfs_remove_recursive(sr_info->dbg_dir); |
| 1016 | err_free_name: | ||
| 1017 | kfree(sr_info->name); | ||
| 1018 | err_iounmap: | 1016 | err_iounmap: |
| 1019 | list_del(&sr_info->node); | 1017 | list_del(&sr_info->node); |
| 1020 | iounmap(sr_info->base); | 1018 | iounmap(sr_info->base); |
| 1019 | err_free_name: | ||
| 1020 | kfree(sr_info->name); | ||
| 1021 | err_release_region: | 1021 | err_release_region: |
| 1022 | release_mem_region(mem->start, resource_size(mem)); | 1022 | release_mem_region(mem->start, resource_size(mem)); |
| 1023 | err_free_devinfo: | 1023 | err_free_devinfo: |
