aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-10-10 21:21:48 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-10-10 21:21:48 -0400
commitda06a8d7bed2f3bfc12979384b2d1247ec4873db (patch)
treeed60bec05c7d69d94ad048d404321ce759a48868 /drivers
parent49999ab27eab6289a8e4f450e148bdab521361b2 (diff)
parent6bd5dbda2adeabba69c969886511e501a65b6e3c (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.c8
-rw-r--r--drivers/char/nwflash.c4
-rw-r--r--drivers/cpufreq/omap-cpufreq.c36
-rw-r--r--drivers/mmc/host/sdhci-tegra.c1
-rw-r--r--drivers/power/avs/smartreflex.c8
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
75static inline void netwinder_lock(unsigned long *flags) 75static 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
80static inline void netwinder_unlock(unsigned long *flags) 80static 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
85static inline void netwinder_set_fan(int i) 85static 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
94static inline int netwinder_get_fan(void) 94static 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
43static struct cpufreq_frequency_table *freq_table; 36static struct cpufreq_frequency_table *freq_table;
44static atomic_t freq_table_users = ATOMIC_INIT(0); 37static atomic_t freq_table_users = ATOMIC_INIT(0);
45static struct clk *mpu_clk; 38static struct clk *mpu_clk;
46static char *mpu_clk_name;
47static struct device *mpu_dev; 39static struct device *mpu_dev;
48static struct regulator *mpu_reg; 40static 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
254static int __init omap_cpufreq_init(void) 254static 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
1014err_debugfs: 1014err_debugfs:
1015 debugfs_remove_recursive(sr_info->dbg_dir); 1015 debugfs_remove_recursive(sr_info->dbg_dir);
1016err_free_name:
1017 kfree(sr_info->name);
1018err_iounmap: 1016err_iounmap:
1019 list_del(&sr_info->node); 1017 list_del(&sr_info->node);
1020 iounmap(sr_info->base); 1018 iounmap(sr_info->base);
1019err_free_name:
1020 kfree(sr_info->name);
1021err_release_region: 1021err_release_region:
1022 release_mem_region(mem->start, resource_size(mem)); 1022 release_mem_region(mem->start, resource_size(mem));
1023err_free_devinfo: 1023err_free_devinfo: