Commit 673085f4 authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Krzysztof Kozlowski

ARM: s3c24xx: move iis pinctrl config into boards

The s3c_gpio_cfgall_range() function is an internal interface of the
samsung gpio driver and should not be called directly by drivers, so
move the iis pin initialization into the boards.

This means the pin configuration is only run once at early boot, rather
than each time the driver binds, but the effect should be the same.

Note that the s3c2412-i2s driver has no boards using it in mainline linux,
the driver gets selected for the jive machine but is never instantiated.
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Acked-by: default avatarMark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20200806182059.2431-28-krzk@kernel.orgSigned-off-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
parent 35ee36c7
...@@ -538,6 +538,10 @@ static void __init gta02_machine_init(void) ...@@ -538,6 +538,10 @@ static void __init gta02_machine_init(void)
i2c_register_board_info(0, gta02_i2c_devs, ARRAY_SIZE(gta02_i2c_devs)); i2c_register_board_info(0, gta02_i2c_devs, ARRAY_SIZE(gta02_i2c_devs));
/* Configure the I2S pins (GPE0...GPE4) in correct mode */
s3c_gpio_cfgall_range(S3C2410_GPE(0), 5, S3C_GPIO_SFN(2),
S3C_GPIO_PULL_NONE);
gpiod_add_lookup_table(&gta02_audio_gpio_table); gpiod_add_lookup_table(&gta02_audio_gpio_table);
platform_add_devices(gta02_devices, ARRAY_SIZE(gta02_devices)); platform_add_devices(gta02_devices, ARRAY_SIZE(gta02_devices));
pm_power_off = gta02_poweroff; pm_power_off = gta02_poweroff;
......
...@@ -707,6 +707,9 @@ static void __init h1940_init(void) ...@@ -707,6 +707,9 @@ static void __init h1940_init(void)
s3c24xx_fb_set_platdata(&h1940_fb_info); s3c24xx_fb_set_platdata(&h1940_fb_info);
gpiod_add_lookup_table(&h1940_mmc_gpio_table); gpiod_add_lookup_table(&h1940_mmc_gpio_table);
gpiod_add_lookup_table(&h1940_audio_gpio_table); gpiod_add_lookup_table(&h1940_audio_gpio_table);
/* Configure the I2S pins (GPE0...GPE4) in correct mode */
s3c_gpio_cfgall_range(S3C2410_GPE(0), 5, S3C_GPIO_SFN(2),
S3C_GPIO_PULL_NONE);
s3c24xx_mci_set_platdata(&h1940_mmc_cfg); s3c24xx_mci_set_platdata(&h1940_mmc_cfg);
s3c24xx_udc_set_platdata(&h1940_udc_cfg); s3c24xx_udc_set_platdata(&h1940_udc_cfg);
s3c24xx_ts_set_platdata(&h1940_ts_cfg); s3c24xx_ts_set_platdata(&h1940_ts_cfg);
......
...@@ -714,6 +714,11 @@ static void __init mini2440_init(void) ...@@ -714,6 +714,11 @@ static void __init mini2440_init(void)
s3c_gpio_setpull(mini2440_buttons[i].gpio, S3C_GPIO_PULL_UP); s3c_gpio_setpull(mini2440_buttons[i].gpio, S3C_GPIO_PULL_UP);
s3c_gpio_cfgpin(mini2440_buttons[i].gpio, S3C2410_GPIO_INPUT); s3c_gpio_cfgpin(mini2440_buttons[i].gpio, S3C2410_GPIO_INPUT);
} }
/* Configure the I2S pins (GPE0...GPE4) in correct mode */
s3c_gpio_cfgall_range(S3C2410_GPE(0), 5, S3C_GPIO_SFN(2),
S3C_GPIO_PULL_NONE);
if (features.lcd_index != -1) { if (features.lcd_index != -1) {
int li; int li;
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include <mach/regs-gpio.h> #include <mach/regs-gpio.h>
#include <mach/regs-lcd.h> #include <mach/regs-lcd.h>
#include <mach/gpio-samsung.h> #include <mach/gpio-samsung.h>
#include <plat/gpio-cfg.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <asm/mach/irq.h> #include <asm/mach/irq.h>
...@@ -599,6 +600,10 @@ static void __init n30_init(void) ...@@ -599,6 +600,10 @@ static void __init n30_init(void)
S3C2410_MISCCR_USBSUSPND0 | S3C2410_MISCCR_USBSUSPND0 |
S3C2410_MISCCR_USBSUSPND1, 0x0); S3C2410_MISCCR_USBSUSPND1, 0x0);
/* Configure the I2S pins (GPE0...GPE4) in correct mode */
s3c_gpio_cfgall_range(S3C2410_GPE(0), 5, S3C_GPIO_SFN(2),
S3C_GPIO_PULL_NONE);
if (machine_is_n30()) { if (machine_is_n30()) {
/* Turn off suspend on both USB ports, and switch the /* Turn off suspend on both USB ports, and switch the
* selectable USB port to USB device mode. */ * selectable USB port to USB device mode. */
......
...@@ -143,6 +143,11 @@ static void __init nexcoder_init_time(void) ...@@ -143,6 +143,11 @@ static void __init nexcoder_init_time(void)
static void __init nexcoder_init(void) static void __init nexcoder_init(void)
{ {
s3c_i2c0_set_platdata(NULL); s3c_i2c0_set_platdata(NULL);
/* Configure the I2S pins (GPE0...GPE4) in correct mode */
s3c_gpio_cfgall_range(S3C2410_GPE(0), 5, S3C_GPIO_SFN(2),
S3C_GPIO_PULL_NONE);
platform_add_devices(nexcoder_devices, ARRAY_SIZE(nexcoder_devices)); platform_add_devices(nexcoder_devices, ARRAY_SIZE(nexcoder_devices));
}; };
......
...@@ -23,6 +23,8 @@ ...@@ -23,6 +23,8 @@
#include <asm/mach/irq.h> #include <asm/mach/irq.h>
#include <mach/regs-gpio.h> #include <mach/regs-gpio.h>
#include <mach/gpio-samsung.h>
#include <plat/gpio-cfg.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/devs.h> #include <plat/devs.h>
...@@ -105,6 +107,10 @@ static void __init otom11_init_time(void) ...@@ -105,6 +107,10 @@ static void __init otom11_init_time(void)
static void __init otom11_init(void) static void __init otom11_init(void)
{ {
s3c_i2c0_set_platdata(NULL); s3c_i2c0_set_platdata(NULL);
/* Configure the I2S pins (GPE0...GPE4) in correct mode */
s3c_gpio_cfgall_range(S3C2410_GPE(0), 5, S3C_GPIO_SFN(2),
S3C_GPIO_PULL_NONE);
platform_add_devices(otom11_devices, ARRAY_SIZE(otom11_devices)); platform_add_devices(otom11_devices, ARRAY_SIZE(otom11_devices));
} }
......
...@@ -341,6 +341,9 @@ static void __init qt2410_machine_init(void) ...@@ -341,6 +341,9 @@ static void __init qt2410_machine_init(void)
s3c24xx_udc_set_platdata(&qt2410_udc_cfg); s3c24xx_udc_set_platdata(&qt2410_udc_cfg);
s3c_i2c0_set_platdata(NULL); s3c_i2c0_set_platdata(NULL);
/* Configure the I2S pins (GPE0...GPE4) in correct mode */
s3c_gpio_cfgall_range(S3C2410_GPE(0), 5, S3C_GPIO_SFN(2),
S3C_GPIO_PULL_NONE);
gpiod_add_lookup_table(&qt2410_spi_gpiod_table); gpiod_add_lookup_table(&qt2410_spi_gpiod_table);
s3c_gpio_setpull(S3C2410_GPB(0), S3C_GPIO_PULL_NONE); s3c_gpio_setpull(S3C2410_GPB(0), S3C_GPIO_PULL_NONE);
gpiod_add_lookup_table(&qt2410_led_gpio_table); gpiod_add_lookup_table(&qt2410_led_gpio_table);
......
...@@ -828,6 +828,9 @@ static void __init rx1950_init_machine(void) ...@@ -828,6 +828,9 @@ static void __init rx1950_init_machine(void)
pwm_add_table(rx1950_pwm_lookup, ARRAY_SIZE(rx1950_pwm_lookup)); pwm_add_table(rx1950_pwm_lookup, ARRAY_SIZE(rx1950_pwm_lookup));
gpiod_add_lookup_table(&rx1950_audio_gpio_table); gpiod_add_lookup_table(&rx1950_audio_gpio_table);
/* Configure the I2S pins (GPE0...GPE4) in correct mode */
s3c_gpio_cfgall_range(S3C2410_GPE(0), 5, S3C_GPIO_SFN(2),
S3C_GPIO_PULL_NONE);
platform_add_devices(rx1950_devices, ARRAY_SIZE(rx1950_devices)); platform_add_devices(rx1950_devices, ARRAY_SIZE(rx1950_devices));
i2c_register_board_info(0, rx1950_i2c_devices, i2c_register_board_info(0, rx1950_i2c_devices,
......
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
#include <mach/regs-gpio.h> #include <mach/regs-gpio.h>
#include <mach/regs-lcd.h> #include <mach/regs-lcd.h>
#include <mach/gpio-samsung.h> #include <mach/gpio-samsung.h>
#include <plat/gpio-cfg.h>
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/devs.h> #include <plat/devs.h>
...@@ -197,6 +198,9 @@ static void __init rx3715_init_machine(void) ...@@ -197,6 +198,9 @@ static void __init rx3715_init_machine(void)
s3c_nand_set_platdata(&rx3715_nand_info); s3c_nand_set_platdata(&rx3715_nand_info);
s3c24xx_fb_set_platdata(&rx3715_fb_info); s3c24xx_fb_set_platdata(&rx3715_fb_info);
/* Configure the I2S pins (GPE0...GPE4) in correct mode */
s3c_gpio_cfgall_range(S3C2410_GPE(0), 5, S3C_GPIO_SFN(2),
S3C_GPIO_PULL_NONE);
platform_add_devices(rx3715_devices, ARRAY_SIZE(rx3715_devices)); platform_add_devices(rx3715_devices, ARRAY_SIZE(rx3715_devices));
} }
......
...@@ -19,6 +19,8 @@ ...@@ -19,6 +19,8 @@
#include <linux/serial_s3c.h> #include <linux/serial_s3c.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/io.h> #include <linux/io.h>
#include <mach/gpio-samsung.h>
#include <plat/gpio-cfg.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <asm/mach/map.h> #include <asm/mach/map.h>
...@@ -92,6 +94,9 @@ static void __init smdk2410_init(void) ...@@ -92,6 +94,9 @@ static void __init smdk2410_init(void)
{ {
s3c_i2c0_set_platdata(NULL); s3c_i2c0_set_platdata(NULL);
platform_add_devices(smdk2410_devices, ARRAY_SIZE(smdk2410_devices)); platform_add_devices(smdk2410_devices, ARRAY_SIZE(smdk2410_devices));
/* Configure the I2S pins (GPE0...GPE4) in correct mode */
s3c_gpio_cfgall_range(S3C2410_GPE(0), 5, S3C_GPIO_SFN(2),
S3C_GPIO_PULL_NONE);
smdk_machine_init(); smdk_machine_init();
} }
......
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
#include <linux/platform_data/i2c-s3c2410.h> #include <linux/platform_data/i2c-s3c2410.h>
#include <mach/gpio-samsung.h> #include <mach/gpio-samsung.h>
#include <mach/fb.h> #include <mach/fb.h>
#include <plat/gpio-cfg.h>
#include <plat/devs.h> #include <plat/devs.h>
#include <plat/cpu.h> #include <plat/cpu.h>
...@@ -118,6 +119,9 @@ static void __init smdk2413_machine_init(void) ...@@ -118,6 +119,9 @@ static void __init smdk2413_machine_init(void)
s3c24xx_udc_set_platdata(&smdk2413_udc_cfg); s3c24xx_udc_set_platdata(&smdk2413_udc_cfg);
s3c_i2c0_set_platdata(NULL); s3c_i2c0_set_platdata(NULL);
/* Configure the I2S pins (GPE0...GPE4) in correct mode */
s3c_gpio_cfgall_range(S3C2410_GPE(0), 5, S3C_GPIO_SFN(2),
S3C_GPIO_PULL_NONE);
platform_add_devices(smdk2413_devices, ARRAY_SIZE(smdk2413_devices)); platform_add_devices(smdk2413_devices, ARRAY_SIZE(smdk2413_devices));
smdk_machine_init(); smdk_machine_init();
......
...@@ -28,6 +28,8 @@ ...@@ -28,6 +28,8 @@
#include <mach/regs-gpio.h> #include <mach/regs-gpio.h>
#include <mach/regs-lcd.h> #include <mach/regs-lcd.h>
#include <mach/gpio-samsung.h>
#include <plat/gpio-cfg.h>
#include <mach/fb.h> #include <mach/fb.h>
#include <linux/platform_data/i2c-s3c2410.h> #include <linux/platform_data/i2c-s3c2410.h>
...@@ -165,7 +167,9 @@ static void __init smdk2440_machine_init(void) ...@@ -165,7 +167,9 @@ static void __init smdk2440_machine_init(void)
{ {
s3c24xx_fb_set_platdata(&smdk2440_fb_info); s3c24xx_fb_set_platdata(&smdk2440_fb_info);
s3c_i2c0_set_platdata(NULL); s3c_i2c0_set_platdata(NULL);
/* Configure the I2S pins (GPE0...GPE4) in correct mode */
s3c_gpio_cfgall_range(S3C2410_GPE(0), 5, S3C_GPIO_SFN(2),
S3C_GPIO_PULL_NONE);
platform_add_devices(smdk2440_devices, ARRAY_SIZE(smdk2440_devices)); platform_add_devices(smdk2440_devices, ARRAY_SIZE(smdk2440_devices));
smdk_machine_init(); smdk_machine_init();
} }
......
...@@ -30,6 +30,8 @@ ...@@ -30,6 +30,8 @@
#include <mach/regs-gpio.h> #include <mach/regs-gpio.h>
#include <mach/regs-lcd.h> #include <mach/regs-lcd.h>
#include <mach/gpio-samsung.h>
#include <plat/gpio-cfg.h>
#include <mach/fb.h> #include <mach/fb.h>
...@@ -147,7 +149,9 @@ static void __init vstms_init(void) ...@@ -147,7 +149,9 @@ static void __init vstms_init(void)
{ {
s3c_i2c0_set_platdata(NULL); s3c_i2c0_set_platdata(NULL);
s3c_nand_set_platdata(&vstms_nand_info); s3c_nand_set_platdata(&vstms_nand_info);
/* Configure the I2S pins (GPE0...GPE4) in correct mode */
s3c_gpio_cfgall_range(S3C2410_GPE(0), 5, S3C_GPIO_SFN(2),
S3C_GPIO_PULL_NONE);
platform_add_devices(vstms_devices, ARRAY_SIZE(vstms_devices)); platform_add_devices(vstms_devices, ARRAY_SIZE(vstms_devices));
} }
......
...@@ -13,6 +13,8 @@ ...@@ -13,6 +13,8 @@
#include <linux/io.h> #include <linux/io.h>
#include <mach/regs-gpio.h> #include <mach/regs-gpio.h>
#include <mach/gpio-samsung.h>
#include <plat/gpio-cfg.h>
#include <linux/platform_data/asoc-s3c24xx_simtec.h> #include <linux/platform_data/asoc-s3c24xx_simtec.h>
#include <plat/devs.h> #include <plat/devs.h>
...@@ -64,6 +66,10 @@ int __init simtec_audio_add(const char *name, bool has_lr_routing, ...@@ -64,6 +66,10 @@ int __init simtec_audio_add(const char *name, bool has_lr_routing,
if (has_lr_routing) if (has_lr_routing)
simtec_audio_platdata.startup = simtec_audio_startup_lrroute; simtec_audio_platdata.startup = simtec_audio_startup_lrroute;
/* Configure the I2S pins (GPE0...GPE4) in correct mode */
s3c_gpio_cfgall_range(S3C2410_GPE(0), 5, S3C_GPIO_SFN(2),
S3C_GPIO_PULL_NONE);
platform_device_register(&s3c_device_iis); platform_device_register(&s3c_device_iis);
platform_device_register(&simtec_audio_dev); platform_device_register(&simtec_audio_dev);
return 0; return 0;
......
...@@ -19,9 +19,6 @@ ...@@ -19,9 +19,6 @@
#include <sound/soc.h> #include <sound/soc.h>
#include <sound/pcm_params.h> #include <sound/pcm_params.h>
#include <mach/gpio-samsung.h>
#include <plat/gpio-cfg.h>
#include "dma.h" #include "dma.h"
#include "regs-i2s-v2.h" #include "regs-i2s-v2.h"
#include "s3c2412-i2s.h" #include "s3c2412-i2s.h"
...@@ -70,10 +67,6 @@ static int s3c2412_i2s_probe(struct snd_soc_dai *dai) ...@@ -70,10 +67,6 @@ static int s3c2412_i2s_probe(struct snd_soc_dai *dai)
if (ret) if (ret)
goto err; goto err;
/* Configure the I2S pins (GPE0...GPE4) in correct mode */
s3c_gpio_cfgall_range(S3C2410_GPE(0), 5, S3C_GPIO_SFN(2),
S3C_GPIO_PULL_NONE);
return 0; return 0;
err: err:
......
...@@ -18,10 +18,7 @@ ...@@ -18,10 +18,7 @@
#include <sound/soc.h> #include <sound/soc.h>
#include <sound/pcm_params.h> #include <sound/pcm_params.h>
#include <mach/gpio-samsung.h>
#include <plat/gpio-cfg.h>
#include "regs-iis.h" #include "regs-iis.h"
#include "dma.h" #include "dma.h"
#include "s3c24xx-i2s.h" #include "s3c24xx-i2s.h"
...@@ -348,10 +345,6 @@ static int s3c24xx_i2s_probe(struct snd_soc_dai *dai) ...@@ -348,10 +345,6 @@ static int s3c24xx_i2s_probe(struct snd_soc_dai *dai)
if (ret) if (ret)
return ret; return ret;
/* Configure the I2S pins (GPE0...GPE4) in correct mode */
s3c_gpio_cfgall_range(S3C2410_GPE(0), 5, S3C_GPIO_SFN(2),
S3C_GPIO_PULL_NONE);
writel(S3C2410_IISCON_IISEN, s3c24xx_i2s.regs + S3C2410_IISCON); writel(S3C2410_IISCON_IISEN, s3c24xx_i2s.regs + S3C2410_IISCON);
s3c24xx_snd_txctrl(0); s3c24xx_snd_txctrl(0);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment