diff options
author | Olof Johansson <olof@lixom.net> | 2012-12-20 11:04:48 -0500 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2012-12-20 12:42:46 -0500 |
commit | f2420ec2d002d5183e61bdf9d8830f0e1c2a4af3 (patch) | |
tree | ff3c8476f054488a403206e6777ee146bc36fa17 | |
parent | febd41d59dc4a8125b1b5fd0b947ab795bfe4aa5 (diff) | |
parent | 454696fdc864aacaab978755d44d73d418c59788 (diff) |
Merge branch 'v3.8-samsung-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into fixes
From Kukjin Kim:
Here is Samsung fixes-1 for v3.8-rc1.
Most of them are trivial fixes which are for NULL pointer dereference, MSHC
clocks instance names and exynos5440 stuff.
* 'v3.8-samsung-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung:
ARM: EXYNOS: Fix MSHC clocks instance names
ARM: EXYNOS: Fix NULL pointer dereference bug in SMDKV310
ARM: EXYNOS: Fix NULL pointer dereference bug in SMDK4X12
ARM: EXYNOS: Fix NULL pointer dereference bug in Origen
ARM: SAMSUNG: Add missing include guard to gpio-core.h
pinctrl: exynos5440/samsung: Staticize pcfgs
pinctrl: samsung: Fix a typo in pinctrl-samsung.h
ARM: EXYNOS: fix skip scu_enable() for EXYNOS5440
ARM: EXYNOS: fix GIC using for EXYNOS5440
ARM: EXYNOS: fix build error when MFC is not selected
Signed-off-by: Olof Johansson <olof@lixom.net>
-rw-r--r-- | arch/arm/mach-exynos/clock-exynos4.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-exynos/common.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-exynos/mach-exynos5-dt.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-exynos/mach-origen.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-exynos/mach-smdk4x12.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-exynos/mach-smdkv310.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-exynos/platsmp.c | 2 | ||||
-rw-r--r-- | arch/arm/plat-samsung/include/plat/gpio-core.h | 5 | ||||
-rw-r--r-- | drivers/pinctrl/pinctrl-exynos5440.c | 2 | ||||
-rw-r--r-- | drivers/pinctrl/pinctrl-samsung.c | 2 | ||||
-rw-r--r-- | drivers/pinctrl/pinctrl-samsung.h | 2 |
11 files changed, 21 insertions, 13 deletions
diff --git a/arch/arm/mach-exynos/clock-exynos4.c b/arch/arm/mach-exynos/clock-exynos4.c index efead60b943..bbcb3dea0d4 100644 --- a/arch/arm/mach-exynos/clock-exynos4.c +++ b/arch/arm/mach-exynos/clock-exynos4.c | |||
@@ -529,7 +529,7 @@ static struct clk exynos4_init_clocks_off[] = { | |||
529 | .enable = exynos4_clk_ip_fsys_ctrl, | 529 | .enable = exynos4_clk_ip_fsys_ctrl, |
530 | .ctrlbit = (1 << 8), | 530 | .ctrlbit = (1 << 8), |
531 | }, { | 531 | }, { |
532 | .name = "dwmmc", | 532 | .name = "biu", |
533 | .parent = &exynos4_clk_aclk_133.clk, | 533 | .parent = &exynos4_clk_aclk_133.clk, |
534 | .enable = exynos4_clk_ip_fsys_ctrl, | 534 | .enable = exynos4_clk_ip_fsys_ctrl, |
535 | .ctrlbit = (1 << 9), | 535 | .ctrlbit = (1 << 9), |
@@ -1134,7 +1134,7 @@ static struct clksrc_clk exynos4_clksrcs[] = { | |||
1134 | .reg_div = { .reg = EXYNOS4_CLKDIV_MFC, .shift = 0, .size = 4 }, | 1134 | .reg_div = { .reg = EXYNOS4_CLKDIV_MFC, .shift = 0, .size = 4 }, |
1135 | }, { | 1135 | }, { |
1136 | .clk = { | 1136 | .clk = { |
1137 | .name = "sclk_dwmmc", | 1137 | .name = "ciu", |
1138 | .parent = &exynos4_clk_dout_mmc4.clk, | 1138 | .parent = &exynos4_clk_dout_mmc4.clk, |
1139 | .enable = exynos4_clksrc_mask_fsys_ctrl, | 1139 | .enable = exynos4_clksrc_mask_fsys_ctrl, |
1140 | .ctrlbit = (1 << 16), | 1140 | .ctrlbit = (1 << 16), |
diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c index ddd4b72c6f9..d6d0dc65108 100644 --- a/arch/arm/mach-exynos/common.c +++ b/arch/arm/mach-exynos/common.c | |||
@@ -679,7 +679,8 @@ void __init exynos5_init_irq(void) | |||
679 | * Theses parameters should be NULL and 0 because EXYNOS4 | 679 | * Theses parameters should be NULL and 0 because EXYNOS4 |
680 | * uses GIC instead of VIC. | 680 | * uses GIC instead of VIC. |
681 | */ | 681 | */ |
682 | s5p_init_irq(NULL, 0); | 682 | if (!of_machine_is_compatible("samsung,exynos5440")) |
683 | s5p_init_irq(NULL, 0); | ||
683 | 684 | ||
684 | gic_arch_extn.irq_set_wake = s3c_irq_wake; | 685 | gic_arch_extn.irq_set_wake = s3c_irq_wake; |
685 | } | 686 | } |
diff --git a/arch/arm/mach-exynos/mach-exynos5-dt.c b/arch/arm/mach-exynos/mach-exynos5-dt.c index f038c8cadca..e99d3d8f2bc 100644 --- a/arch/arm/mach-exynos/mach-exynos5-dt.c +++ b/arch/arm/mach-exynos/mach-exynos5-dt.c | |||
@@ -163,6 +163,7 @@ static char const *exynos5_dt_compat[] __initdata = { | |||
163 | 163 | ||
164 | static void __init exynos5_reserve(void) | 164 | static void __init exynos5_reserve(void) |
165 | { | 165 | { |
166 | #ifdef CONFIG_S5P_DEV_MFC | ||
166 | struct s5p_mfc_dt_meminfo mfc_mem; | 167 | struct s5p_mfc_dt_meminfo mfc_mem; |
167 | 168 | ||
168 | /* Reserve memory for MFC only if it's available */ | 169 | /* Reserve memory for MFC only if it's available */ |
@@ -170,6 +171,7 @@ static void __init exynos5_reserve(void) | |||
170 | if (of_scan_flat_dt(s5p_fdt_find_mfc_mem, &mfc_mem)) | 171 | if (of_scan_flat_dt(s5p_fdt_find_mfc_mem, &mfc_mem)) |
171 | s5p_mfc_reserve_mem(mfc_mem.roff, mfc_mem.rsize, mfc_mem.loff, | 172 | s5p_mfc_reserve_mem(mfc_mem.roff, mfc_mem.rsize, mfc_mem.loff, |
172 | mfc_mem.lsize); | 173 | mfc_mem.lsize); |
174 | #endif | ||
173 | } | 175 | } |
174 | 176 | ||
175 | DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)") | 177 | DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)") |
diff --git a/arch/arm/mach-exynos/mach-origen.c b/arch/arm/mach-exynos/mach-origen.c index e6f4191cd14..5e34b9c1619 100644 --- a/arch/arm/mach-exynos/mach-origen.c +++ b/arch/arm/mach-exynos/mach-origen.c | |||
@@ -621,7 +621,7 @@ static struct pwm_lookup origen_pwm_lookup[] = { | |||
621 | PWM_LOOKUP("s3c24xx-pwm.0", 0, "pwm-backlight.0", NULL), | 621 | PWM_LOOKUP("s3c24xx-pwm.0", 0, "pwm-backlight.0", NULL), |
622 | }; | 622 | }; |
623 | 623 | ||
624 | #ifdef CONFIG_DRM_EXYNOS | 624 | #ifdef CONFIG_DRM_EXYNOS_FIMD |
625 | static struct exynos_drm_fimd_pdata drm_fimd_pdata = { | 625 | static struct exynos_drm_fimd_pdata drm_fimd_pdata = { |
626 | .panel = { | 626 | .panel = { |
627 | .timing = { | 627 | .timing = { |
@@ -793,7 +793,7 @@ static void __init origen_machine_init(void) | |||
793 | s5p_i2c_hdmiphy_set_platdata(NULL); | 793 | s5p_i2c_hdmiphy_set_platdata(NULL); |
794 | s5p_hdmi_set_platdata(&hdmiphy_info, NULL, 0); | 794 | s5p_hdmi_set_platdata(&hdmiphy_info, NULL, 0); |
795 | 795 | ||
796 | #ifdef CONFIG_DRM_EXYNOS | 796 | #ifdef CONFIG_DRM_EXYNOS_FIMD |
797 | s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata; | 797 | s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata; |
798 | exynos4_fimd0_gpio_setup_24bpp(); | 798 | exynos4_fimd0_gpio_setup_24bpp(); |
799 | #else | 799 | #else |
diff --git a/arch/arm/mach-exynos/mach-smdk4x12.c b/arch/arm/mach-exynos/mach-smdk4x12.c index a1555a73c7a..ae6da40c2aa 100644 --- a/arch/arm/mach-exynos/mach-smdk4x12.c +++ b/arch/arm/mach-exynos/mach-smdk4x12.c | |||
@@ -246,7 +246,7 @@ static struct samsung_keypad_platdata smdk4x12_keypad_data __initdata = { | |||
246 | .cols = 8, | 246 | .cols = 8, |
247 | }; | 247 | }; |
248 | 248 | ||
249 | #ifdef CONFIG_DRM_EXYNOS | 249 | #ifdef CONFIG_DRM_EXYNOS_FIMD |
250 | static struct exynos_drm_fimd_pdata drm_fimd_pdata = { | 250 | static struct exynos_drm_fimd_pdata drm_fimd_pdata = { |
251 | .panel = { | 251 | .panel = { |
252 | .timing = { | 252 | .timing = { |
@@ -360,7 +360,7 @@ static void __init smdk4x12_machine_init(void) | |||
360 | 360 | ||
361 | s3c_hsotg_set_platdata(&smdk4x12_hsotg_pdata); | 361 | s3c_hsotg_set_platdata(&smdk4x12_hsotg_pdata); |
362 | 362 | ||
363 | #ifdef CONFIG_DRM_EXYNOS | 363 | #ifdef CONFIG_DRM_EXYNOS_FIMD |
364 | s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata; | 364 | s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata; |
365 | exynos4_fimd0_gpio_setup_24bpp(); | 365 | exynos4_fimd0_gpio_setup_24bpp(); |
366 | #else | 366 | #else |
diff --git a/arch/arm/mach-exynos/mach-smdkv310.c b/arch/arm/mach-exynos/mach-smdkv310.c index b7384241fb0..35548e3c097 100644 --- a/arch/arm/mach-exynos/mach-smdkv310.c +++ b/arch/arm/mach-exynos/mach-smdkv310.c | |||
@@ -159,7 +159,7 @@ static struct platform_device smdkv310_lcd_lte480wv = { | |||
159 | .dev.platform_data = &smdkv310_lcd_lte480wv_data, | 159 | .dev.platform_data = &smdkv310_lcd_lte480wv_data, |
160 | }; | 160 | }; |
161 | 161 | ||
162 | #ifdef CONFIG_DRM_EXYNOS | 162 | #ifdef CONFIG_DRM_EXYNOS_FIMD |
163 | static struct exynos_drm_fimd_pdata drm_fimd_pdata = { | 163 | static struct exynos_drm_fimd_pdata drm_fimd_pdata = { |
164 | .panel = { | 164 | .panel = { |
165 | .timing = { | 165 | .timing = { |
@@ -402,7 +402,7 @@ static void __init smdkv310_machine_init(void) | |||
402 | samsung_bl_set(&smdkv310_bl_gpio_info, &smdkv310_bl_data); | 402 | samsung_bl_set(&smdkv310_bl_gpio_info, &smdkv310_bl_data); |
403 | pwm_add_table(smdkv310_pwm_lookup, ARRAY_SIZE(smdkv310_pwm_lookup)); | 403 | pwm_add_table(smdkv310_pwm_lookup, ARRAY_SIZE(smdkv310_pwm_lookup)); |
404 | 404 | ||
405 | #ifdef CONFIG_DRM_EXYNOS | 405 | #ifdef CONFIG_DRM_EXYNOS_FIMD |
406 | s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata; | 406 | s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata; |
407 | exynos4_fimd0_gpio_setup_24bpp(); | 407 | exynos4_fimd0_gpio_setup_24bpp(); |
408 | #else | 408 | #else |
diff --git a/arch/arm/mach-exynos/platsmp.c b/arch/arm/mach-exynos/platsmp.c index 4ca8ff14a5b..c5c840e947b 100644 --- a/arch/arm/mach-exynos/platsmp.c +++ b/arch/arm/mach-exynos/platsmp.c | |||
@@ -198,7 +198,7 @@ static void __init exynos_smp_prepare_cpus(unsigned int max_cpus) | |||
198 | { | 198 | { |
199 | int i; | 199 | int i; |
200 | 200 | ||
201 | if (!soc_is_exynos5250()) | 201 | if (!(soc_is_exynos5250() || soc_is_exynos5440())) |
202 | scu_enable(scu_base_addr()); | 202 | scu_enable(scu_base_addr()); |
203 | 203 | ||
204 | /* | 204 | /* |
diff --git a/arch/arm/plat-samsung/include/plat/gpio-core.h b/arch/arm/plat-samsung/include/plat/gpio-core.h index dfd8b7af8c7..f7a3ea2c498 100644 --- a/arch/arm/plat-samsung/include/plat/gpio-core.h +++ b/arch/arm/plat-samsung/include/plat/gpio-core.h | |||
@@ -11,6 +11,9 @@ | |||
11 | * published by the Free Software Foundation. | 11 | * published by the Free Software Foundation. |
12 | */ | 12 | */ |
13 | 13 | ||
14 | #ifndef __PLAT_SAMSUNG_GPIO_CORE_H | ||
15 | #define __PLAT_SAMSUNG_GPIO_CORE_H | ||
16 | |||
14 | #define GPIOCON_OFF (0x00) | 17 | #define GPIOCON_OFF (0x00) |
15 | #define GPIODAT_OFF (0x04) | 18 | #define GPIODAT_OFF (0x04) |
16 | 19 | ||
@@ -124,3 +127,5 @@ extern struct samsung_gpio_pm samsung_gpio_pm_4bit; | |||
124 | /* locking wrappers to deal with multiple access to the same gpio bank */ | 127 | /* locking wrappers to deal with multiple access to the same gpio bank */ |
125 | #define samsung_gpio_lock(_oc, _fl) spin_lock_irqsave(&(_oc)->lock, _fl) | 128 | #define samsung_gpio_lock(_oc, _fl) spin_lock_irqsave(&(_oc)->lock, _fl) |
126 | #define samsung_gpio_unlock(_oc, _fl) spin_unlock_irqrestore(&(_oc)->lock, _fl) | 129 | #define samsung_gpio_unlock(_oc, _fl) spin_unlock_irqrestore(&(_oc)->lock, _fl) |
130 | |||
131 | #endif /* __PLAT_SAMSUNG_GPIO_CORE_H */ | ||
diff --git a/drivers/pinctrl/pinctrl-exynos5440.c b/drivers/pinctrl/pinctrl-exynos5440.c index b8635f634e9..07db89528dc 100644 --- a/drivers/pinctrl/pinctrl-exynos5440.c +++ b/drivers/pinctrl/pinctrl-exynos5440.c | |||
@@ -117,7 +117,7 @@ struct exynos5440_pinctrl_priv_data { | |||
117 | }; | 117 | }; |
118 | 118 | ||
119 | /* list of all possible config options supported */ | 119 | /* list of all possible config options supported */ |
120 | struct pin_config { | 120 | static struct pin_config { |
121 | char *prop_cfg; | 121 | char *prop_cfg; |
122 | unsigned int cfg_type; | 122 | unsigned int cfg_type; |
123 | } pcfgs[] = { | 123 | } pcfgs[] = { |
diff --git a/drivers/pinctrl/pinctrl-samsung.c b/drivers/pinctrl/pinctrl-samsung.c index 8f31b656c4e..864fed822f9 100644 --- a/drivers/pinctrl/pinctrl-samsung.c +++ b/drivers/pinctrl/pinctrl-samsung.c | |||
@@ -37,7 +37,7 @@ | |||
37 | #define FSUFFIX_LEN sizeof(FUNCTION_SUFFIX) | 37 | #define FSUFFIX_LEN sizeof(FUNCTION_SUFFIX) |
38 | 38 | ||
39 | /* list of all possible config options supported */ | 39 | /* list of all possible config options supported */ |
40 | struct pin_config { | 40 | static struct pin_config { |
41 | char *prop_cfg; | 41 | char *prop_cfg; |
42 | unsigned int cfg_type; | 42 | unsigned int cfg_type; |
43 | } pcfgs[] = { | 43 | } pcfgs[] = { |
diff --git a/drivers/pinctrl/pinctrl-samsung.h b/drivers/pinctrl/pinctrl-samsung.h index 5addfd16e3c..e2d4e67f7e8 100644 --- a/drivers/pinctrl/pinctrl-samsung.h +++ b/drivers/pinctrl/pinctrl-samsung.h | |||
@@ -104,7 +104,7 @@ struct samsung_pinctrl_drv_data; | |||
104 | 104 | ||
105 | /** | 105 | /** |
106 | * struct samsung_pin_bank: represent a controller pin-bank. | 106 | * struct samsung_pin_bank: represent a controller pin-bank. |
107 | * @reg_offset: starting offset of the pin-bank registers. | 107 | * @pctl_offset: starting offset of the pin-bank registers. |
108 | * @pin_base: starting pin number of the bank. | 108 | * @pin_base: starting pin number of the bank. |
109 | * @nr_pins: number of pins included in this bank. | 109 | * @nr_pins: number of pins included in this bank. |
110 | * @func_width: width of the function selector bit field. | 110 | * @func_width: width of the function selector bit field. |