[02/21] ARM: s3c: remove s3c24xx specific hacks
Commit Message
From: Arnd Bergmann <arnd@arndb.de>
A number of device drivers reference CONFIG_ARM_S3C24XX_CPUFREQ or
similar symbols that are no longer available with the platform gone,
though the drivers themselves are still used on newer platforms,
so remove these hacks.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
arch/arm/include/debug/s3c24xx.S | 10 -
arch/arm/mach-s3c/Makefile | 2 -
arch/arm/mach-s3c/devs.c | 1 -
arch/arm/mach-s3c/dma.h | 7 -
arch/arm/mach-s3c/gpio-samsung.h | 7 -
arch/arm/mach-s3c/irqs.h | 7 -
arch/arm/mach-s3c/map.h | 7 -
arch/arm/mach-s3c/pm-core.h | 7 -
arch/arm/mach-s3c/regs-clock.h | 7 -
arch/arm/mach-s3c/regs-gpio.h | 7 -
arch/arm/mach-s3c/regs-irq.h | 7 -
drivers/clocksource/Kconfig | 2 +-
drivers/i2c/busses/Kconfig | 3 +-
drivers/i2c/busses/i2c-s3c2410.c | 72 -------
drivers/iio/adc/Kconfig | 6 +-
.../media/platform/samsung/s3c-camif/Kconfig | 8 +-
drivers/mmc/host/Kconfig | 5 +-
drivers/mtd/nand/raw/Kconfig | 2 +-
drivers/mtd/nand/raw/s3c2410.c | 60 ------
drivers/pinctrl/samsung/pinctrl-samsung.c | 10 -
drivers/rtc/Kconfig | 8 +-
drivers/tty/serial/Kconfig | 8 +-
drivers/tty/serial/samsung_tty.c | 199 ------------------
drivers/usb/host/Kconfig | 8 +-
drivers/watchdog/Kconfig | 9 +-
drivers/watchdog/s3c2410_wdt.c | 84 +-------
include/linux/clk/samsung.h | 32 ---
include/linux/soc/samsung/s3c-pm.h | 58 -----
28 files changed, 29 insertions(+), 614 deletions(-)
Comments
On Fri, Oct 21, 2022 at 10:27:35PM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> A number of device drivers reference CONFIG_ARM_S3C24XX_CPUFREQ or
> similar symbols that are no longer available with the platform gone,
> though the drivers themselves are still used on newer platforms,
> so remove these hacks.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Wolfram Sang <wsa@kernel.org> # for I2C
On Fri, Oct 21, 2022 at 10:27:35PM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> A number of device drivers reference CONFIG_ARM_S3C24XX_CPUFREQ or
> similar symbols that are no longer available with the platform gone,
> though the drivers themselves are still used on newer platforms,
> so remove these hacks.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
On Fri, Oct 21, 2022 at 10:37 PM Arnd Bergmann <arnd@kernel.org> wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> A number of device drivers reference CONFIG_ARM_S3C24XX_CPUFREQ or
> similar symbols that are no longer available with the platform gone,
> though the drivers themselves are still used on newer platforms,
> so remove these hacks.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Yours,
Linus Walleij
On Fri, 21 Oct 2022 22:27:35 +0200
Arnd Bergmann <arnd@kernel.org> wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> A number of device drivers reference CONFIG_ARM_S3C24XX_CPUFREQ or
> similar symbols that are no longer available with the platform gone,
> though the drivers themselves are still used on newer platforms,
> so remove these hacks.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
For the IIO Kconfig change
Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> ---
> arch/arm/include/debug/s3c24xx.S | 10 -
> arch/arm/mach-s3c/Makefile | 2 -
> arch/arm/mach-s3c/devs.c | 1 -
> arch/arm/mach-s3c/dma.h | 7 -
> arch/arm/mach-s3c/gpio-samsung.h | 7 -
> arch/arm/mach-s3c/irqs.h | 7 -
> arch/arm/mach-s3c/map.h | 7 -
> arch/arm/mach-s3c/pm-core.h | 7 -
> arch/arm/mach-s3c/regs-clock.h | 7 -
> arch/arm/mach-s3c/regs-gpio.h | 7 -
> arch/arm/mach-s3c/regs-irq.h | 7 -
> drivers/clocksource/Kconfig | 2 +-
> drivers/i2c/busses/Kconfig | 3 +-
> drivers/i2c/busses/i2c-s3c2410.c | 72 -------
> drivers/iio/adc/Kconfig | 6 +-
> .../media/platform/samsung/s3c-camif/Kconfig | 8 +-
> drivers/mmc/host/Kconfig | 5 +-
> drivers/mtd/nand/raw/Kconfig | 2 +-
> drivers/mtd/nand/raw/s3c2410.c | 60 ------
> drivers/pinctrl/samsung/pinctrl-samsung.c | 10 -
> drivers/rtc/Kconfig | 8 +-
> drivers/tty/serial/Kconfig | 8 +-
> drivers/tty/serial/samsung_tty.c | 199 ------------------
> drivers/usb/host/Kconfig | 8 +-
> drivers/watchdog/Kconfig | 9 +-
> drivers/watchdog/s3c2410_wdt.c | 84 +-------
> include/linux/clk/samsung.h | 32 ---
> include/linux/soc/samsung/s3c-pm.h | 58 -----
> 28 files changed, 29 insertions(+), 614 deletions(-)
>
> diff --git a/arch/arm/include/debug/s3c24xx.S b/arch/arm/include/debug/s3c24xx.S
> index af873b526677..7ab5e577cd42 100644
> --- a/arch/arm/include/debug/s3c24xx.S
> +++ b/arch/arm/include/debug/s3c24xx.S
> @@ -28,16 +28,6 @@
> and \rd, \rd, #S3C2410_UFSTAT_TXMASK
> .endm
>
> -/* Select the correct implementation depending on the configuration. The
> - * S3C2440 will get selected by default, as these are the most widely
> - * used variants of these
> -*/
> -
> -#if defined(CONFIG_DEBUG_S3C2410_UART)
> -#define fifo_full fifo_full_s3c2410
> -#define fifo_level fifo_level_s3c2410
> -#endif
> -
> /* include the reset of the code which will do the work */
>
> #include <debug/samsung.S>
> diff --git a/arch/arm/mach-s3c/Makefile b/arch/arm/mach-s3c/Makefile
> index e7f18039b149..a5135137e648 100644
> --- a/arch/arm/mach-s3c/Makefile
> +++ b/arch/arm/mach-s3c/Makefile
> @@ -2,9 +2,7 @@
> #
> # Copyright 2009 Simtec Electronics
>
> -ifdef CONFIG_ARCH_S3C64XX
> include $(src)/Makefile.s3c64xx
> -endif
>
> # Objects we always build independent of SoC choice
>
> diff --git a/arch/arm/mach-s3c/devs.c b/arch/arm/mach-s3c/devs.c
> index 9ac07c023adf..a31d1c3038e8 100644
> --- a/arch/arm/mach-s3c/devs.c
> +++ b/arch/arm/mach-s3c/devs.c
> @@ -29,7 +29,6 @@
> #include <linux/sizes.h>
> #include <linux/platform_data/s3c-hsudc.h>
> #include <linux/platform_data/s3c-hsotg.h>
> -#include <linux/platform_data/dma-s3c24xx.h>
>
> #include <linux/platform_data/media/s5p_hdmi.h>
>
> diff --git a/arch/arm/mach-s3c/dma.h b/arch/arm/mach-s3c/dma.h
> index 59a4578c5f00..48057cb90070 100644
> --- a/arch/arm/mach-s3c/dma.h
> +++ b/arch/arm/mach-s3c/dma.h
> @@ -1,9 +1,2 @@
> /* SPDX-License-Identifier: GPL-2.0 */
> -
> -#ifdef CONFIG_ARCH_S3C24XX
> -#include "dma-s3c24xx.h"
> -#endif
> -
> -#ifdef CONFIG_ARCH_S3C64XX
> #include "dma-s3c64xx.h"
> -#endif
> diff --git a/arch/arm/mach-s3c/gpio-samsung.h b/arch/arm/mach-s3c/gpio-samsung.h
> index 02f6f4a96862..4233515eddaa 100644
> --- a/arch/arm/mach-s3c/gpio-samsung.h
> +++ b/arch/arm/mach-s3c/gpio-samsung.h
> @@ -1,9 +1,2 @@
> /* SPDX-License-Identifier: GPL-2.0 */
> -
> -#ifdef CONFIG_ARCH_S3C24XX
> -#include "gpio-samsung-s3c24xx.h"
> -#endif
> -
> -#ifdef CONFIG_ARCH_S3C64XX
> #include "gpio-samsung-s3c64xx.h"
> -#endif
> diff --git a/arch/arm/mach-s3c/irqs.h b/arch/arm/mach-s3c/irqs.h
> index 0bff1c1c8eb0..3ff0e0963080 100644
> --- a/arch/arm/mach-s3c/irqs.h
> +++ b/arch/arm/mach-s3c/irqs.h
> @@ -1,9 +1,2 @@
> /* SPDX-License-Identifier: GPL-2.0 */
> -
> -#ifdef CONFIG_ARCH_S3C24XX
> -#include "irqs-s3c24xx.h"
> -#endif
> -
> -#ifdef CONFIG_ARCH_S3C64XX
> #include "irqs-s3c64xx.h"
> -#endif
> diff --git a/arch/arm/mach-s3c/map.h b/arch/arm/mach-s3c/map.h
> index 7cfb517d4886..778d6f81cb2b 100644
> --- a/arch/arm/mach-s3c/map.h
> +++ b/arch/arm/mach-s3c/map.h
> @@ -1,9 +1,2 @@
> /* SPDX-License-Identifier: GPL-2.0 */
> -
> -#ifdef CONFIG_ARCH_S3C24XX
> -#include "map-s3c24xx.h"
> -#endif
> -
> -#ifdef CONFIG_ARCH_S3C64XX
> #include "map-s3c64xx.h"
> -#endif
> diff --git a/arch/arm/mach-s3c/pm-core.h b/arch/arm/mach-s3c/pm-core.h
> index b0e1d277f599..3e0c2df79120 100644
> --- a/arch/arm/mach-s3c/pm-core.h
> +++ b/arch/arm/mach-s3c/pm-core.h
> @@ -1,9 +1,2 @@
> /* SPDX-License-Identifier: GPL-2.0 */
> -
> -#ifdef CONFIG_ARCH_S3C24XX
> -#include "pm-core-s3c24xx.h"
> -#endif
> -
> -#ifdef CONFIG_ARCH_S3C64XX
> #include "pm-core-s3c64xx.h"
> -#endif
> diff --git a/arch/arm/mach-s3c/regs-clock.h b/arch/arm/mach-s3c/regs-clock.h
> index 7df31f203d28..fc7e3886b07c 100644
> --- a/arch/arm/mach-s3c/regs-clock.h
> +++ b/arch/arm/mach-s3c/regs-clock.h
> @@ -1,9 +1,2 @@
> /* SPDX-License-Identifier: GPL-2.0 */
> -
> -#ifdef CONFIG_ARCH_S3C24XX
> -#include "regs-clock-s3c24xx.h"
> -#endif
> -
> -#ifdef CONFIG_ARCH_S3C64XX
> #include "regs-clock-s3c64xx.h"
> -#endif
> diff --git a/arch/arm/mach-s3c/regs-gpio.h b/arch/arm/mach-s3c/regs-gpio.h
> index 0d41cb76d440..4e08e8609663 100644
> --- a/arch/arm/mach-s3c/regs-gpio.h
> +++ b/arch/arm/mach-s3c/regs-gpio.h
> @@ -1,9 +1,2 @@
> /* SPDX-License-Identifier: GPL-2.0 */
> -
> -#ifdef CONFIG_ARCH_S3C24XX
> -#include "regs-gpio-s3c24xx.h"
> -#endif
> -
> -#ifdef CONFIG_ARCH_S3C64XX
> #include "regs-gpio-s3c64xx.h"
> -#endif
> diff --git a/arch/arm/mach-s3c/regs-irq.h b/arch/arm/mach-s3c/regs-irq.h
> index 57f0dda8dbf5..4243daa54bd1 100644
> --- a/arch/arm/mach-s3c/regs-irq.h
> +++ b/arch/arm/mach-s3c/regs-irq.h
> @@ -1,9 +1,2 @@
> /* SPDX-License-Identifier: GPL-2.0 */
> -
> -#ifdef CONFIG_ARCH_S3C24XX
> -#include "regs-irq-s3c24xx.h"
> -#endif
> -
> -#ifdef CONFIG_ARCH_S3C64XX
> #include "regs-irq-s3c64xx.h"
> -#endif
> diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
> index 4469e7f555e9..fc10ecc3602d 100644
> --- a/drivers/clocksource/Kconfig
> +++ b/drivers/clocksource/Kconfig
> @@ -441,7 +441,7 @@ config CLKSRC_EXYNOS_MCT
> config CLKSRC_SAMSUNG_PWM
> bool "PWM timer driver for Samsung S3C, S5P" if COMPILE_TEST
> depends on HAS_IOMEM
> - depends on ARCH_EXYNOS || ARCH_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210 || COMPILE_TEST
> + depends on ARCH_EXYNOS || ARCH_S3C64XX || ARCH_S5PV210 || COMPILE_TEST
> help
> This is a new clocksource driver for the PWM timer found in
> Samsung S3C, S5P and Exynos SoCs, replacing an earlier driver
> diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
> index f427c8ea5c7b..84d21e0a7cdf 100644
> --- a/drivers/i2c/busses/Kconfig
> +++ b/drivers/i2c/busses/Kconfig
> @@ -1009,8 +1009,7 @@ config I2C_RZV2M
>
> config I2C_S3C2410
> tristate "S3C/Exynos I2C Driver"
> - depends on ARCH_EXYNOS || ARCH_S3C24XX || ARCH_S3C64XX || \
> - ARCH_S5PV210 || COMPILE_TEST
> + depends on ARCH_EXYNOS || ARCH_S3C64XX || ARCH_S5PV210 || COMPILE_TEST
> help
> Say Y here to include support for I2C controller in the
> Samsung SoCs (S3C, S5Pv210, Exynos).
> diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
> index 36dab9cd208c..45e9df81345a 100644
> --- a/drivers/i2c/busses/i2c-s3c2410.c
> +++ b/drivers/i2c/busses/i2c-s3c2410.c
> @@ -116,9 +116,6 @@ struct s3c24xx_i2c {
> struct s3c2410_platform_i2c *pdata;
> struct gpio_desc *gpios[2];
> struct pinctrl *pctrl;
> -#if defined(CONFIG_ARM_S3C24XX_CPUFREQ)
> - struct notifier_block freq_transition;
> -#endif
> struct regmap *sysreg;
> unsigned int sys_i2c_cfg;
> };
> @@ -885,65 +882,6 @@ static int s3c24xx_i2c_clockrate(struct s3c24xx_i2c *i2c, unsigned int *got)
> return 0;
> }
>
> -#if defined(CONFIG_ARM_S3C24XX_CPUFREQ)
> -
> -#define freq_to_i2c(_n) container_of(_n, struct s3c24xx_i2c, freq_transition)
> -
> -static int s3c24xx_i2c_cpufreq_transition(struct notifier_block *nb,
> - unsigned long val, void *data)
> -{
> - struct s3c24xx_i2c *i2c = freq_to_i2c(nb);
> - unsigned int got;
> - int delta_f;
> - int ret;
> -
> - delta_f = clk_get_rate(i2c->clk) - i2c->clkrate;
> -
> - /* if we're post-change and the input clock has slowed down
> - * or at pre-change and the clock is about to speed up, then
> - * adjust our clock rate. <0 is slow, >0 speedup.
> - */
> -
> - if ((val == CPUFREQ_POSTCHANGE && delta_f < 0) ||
> - (val == CPUFREQ_PRECHANGE && delta_f > 0)) {
> - i2c_lock_bus(&i2c->adap, I2C_LOCK_ROOT_ADAPTER);
> - ret = s3c24xx_i2c_clockrate(i2c, &got);
> - i2c_unlock_bus(&i2c->adap, I2C_LOCK_ROOT_ADAPTER);
> -
> - if (ret < 0)
> - dev_err(i2c->dev, "cannot find frequency (%d)\n", ret);
> - else
> - dev_info(i2c->dev, "setting freq %d\n", got);
> - }
> -
> - return 0;
> -}
> -
> -static inline int s3c24xx_i2c_register_cpufreq(struct s3c24xx_i2c *i2c)
> -{
> - i2c->freq_transition.notifier_call = s3c24xx_i2c_cpufreq_transition;
> -
> - return cpufreq_register_notifier(&i2c->freq_transition,
> - CPUFREQ_TRANSITION_NOTIFIER);
> -}
> -
> -static inline void s3c24xx_i2c_deregister_cpufreq(struct s3c24xx_i2c *i2c)
> -{
> - cpufreq_unregister_notifier(&i2c->freq_transition,
> - CPUFREQ_TRANSITION_NOTIFIER);
> -}
> -
> -#else
> -static inline int s3c24xx_i2c_register_cpufreq(struct s3c24xx_i2c *i2c)
> -{
> - return 0;
> -}
> -
> -static inline void s3c24xx_i2c_deregister_cpufreq(struct s3c24xx_i2c *i2c)
> -{
> -}
> -#endif
> -
> #ifdef CONFIG_OF
> static int s3c24xx_i2c_parse_dt_gpio(struct s3c24xx_i2c *i2c)
> {
> @@ -1152,13 +1090,6 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
> }
> }
>
> - ret = s3c24xx_i2c_register_cpufreq(i2c);
> - if (ret < 0) {
> - dev_err(&pdev->dev, "failed to register cpufreq notifier\n");
> - clk_unprepare(i2c->clk);
> - return ret;
> - }
> -
> /*
> * Note, previous versions of the driver used i2c_add_adapter()
> * to add the bus at any number. We now pass the bus number via
> @@ -1175,7 +1106,6 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
> ret = i2c_add_numbered_adapter(&i2c->adap);
> if (ret < 0) {
> pm_runtime_disable(&pdev->dev);
> - s3c24xx_i2c_deregister_cpufreq(i2c);
> clk_unprepare(i2c->clk);
> return ret;
> }
> @@ -1192,8 +1122,6 @@ static int s3c24xx_i2c_remove(struct platform_device *pdev)
>
> pm_runtime_disable(&pdev->dev);
>
> - s3c24xx_i2c_deregister_cpufreq(i2c);
> -
> i2c_del_adapter(&i2c->adap);
>
> return 0;
> diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig
> index 791612ca6012..9de7f05d40e2 100644
> --- a/drivers/iio/adc/Kconfig
> +++ b/drivers/iio/adc/Kconfig
> @@ -437,11 +437,11 @@ config EP93XX_ADC
>
> config EXYNOS_ADC
> tristate "Exynos ADC driver support"
> - depends on ARCH_EXYNOS || ARCH_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210 || (OF && COMPILE_TEST)
> + depends on ARCH_EXYNOS || ARCH_S3C64XX || ARCH_S5PV210 || (OF && COMPILE_TEST)
> depends on HAS_IOMEM
> help
> - Driver for the ADC block found in the Samsung S3C (S3C2410, S3C2416,
> - S3C2440, S3C2443, S3C6410), S5Pv210 and Exynos SoCs.
> + Driver for the ADC block found in the Samsung S3C6410, S5Pv210 and
> + Exynos SoCs.
> Choose Y here only if you build for such Samsung SoC.
>
> To compile this driver as a module, choose M here: the module will be
> diff --git a/drivers/media/platform/samsung/s3c-camif/Kconfig b/drivers/media/platform/samsung/s3c-camif/Kconfig
> index 8cb8d1ac3edc..f359f6382fff 100644
> --- a/drivers/media/platform/samsung/s3c-camif/Kconfig
> +++ b/drivers/media/platform/samsung/s3c-camif/Kconfig
> @@ -1,15 +1,15 @@
> # SPDX-License-Identifier: GPL-2.0-only
> config VIDEO_S3C_CAMIF
> - tristate "Samsung S3C24XX/S3C64XX SoC Camera Interface driver"
> + tristate "Samsung 3C64XX SoC Camera Interface driver"
> depends on V4L_PLATFORM_DRIVERS
> depends on VIDEO_DEV && I2C && PM
> - depends on ARCH_S3C64XX || PLAT_S3C24XX || COMPILE_TEST
> + depends on ARCH_S3C64XX || COMPILE_TEST
> select MEDIA_CONTROLLER
> select VIDEO_V4L2_SUBDEV_API
> select VIDEOBUF2_DMA_CONTIG
> help
> - This is a v4l2 driver for s3c24xx and s3c64xx SoC series camera
> - host interface (CAMIF).
> + This is a v4l2 driver for s3c64xx SoC series camera host interface
> + (CAMIF).
>
> To compile this driver as a module, choose M here: the module
> will be called s3c-camif.
> diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
> index 84dd37ff2735..79d8ddf1f616 100644
> --- a/drivers/mmc/host/Kconfig
> +++ b/drivers/mmc/host/Kconfig
> @@ -312,9 +312,8 @@ config MMC_SDHCI_S3C
> depends on PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST
> help
> This selects the Secure Digital Host Controller Interface (SDHCI)
> - often referrered to as the HSMMC block in some of the Samsung S3C
> - (S3C2416, S3C2443, S3C6410), S5Pv210 and Exynos (Exynso4210,
> - Exynos4412) SoCs.
> + often referrered to as the HSMMC block in some of the Samsung
> + S3C6410, S5Pv210 and Exynos (Exynso4210, Exynos4412) SoCs.
>
> If you have a controller with this interface (thereforeyou build for
> such Samsung SoC), say Y or M here.
> diff --git a/drivers/mtd/nand/raw/Kconfig b/drivers/mtd/nand/raw/Kconfig
> index 280a55139387..a347833b8f29 100644
> --- a/drivers/mtd/nand/raw/Kconfig
> +++ b/drivers/mtd/nand/raw/Kconfig
> @@ -79,7 +79,7 @@ config MTD_NAND_NDFC
>
> config MTD_NAND_S3C2410
> tristate "Samsung S3C NAND controller"
> - depends on ARCH_S3C24XX || ARCH_S3C64XX
> + depends on ARCH_S3C64XX
> help
> This enables the NAND flash controller on the S3C24xx and S3C64xx
> SoCs
> diff --git a/drivers/mtd/nand/raw/s3c2410.c b/drivers/mtd/nand/raw/s3c2410.c
> index f0a4535c812a..80d96f94d6cb 100644
> --- a/drivers/mtd/nand/raw/s3c2410.c
> +++ b/drivers/mtd/nand/raw/s3c2410.c
> @@ -166,10 +166,6 @@ struct s3c2410_nand_info {
> enum s3c_nand_clk_state clk_state;
>
> enum s3c_cpu_type cpu_type;
> -
> -#ifdef CONFIG_ARM_S3C24XX_CPUFREQ
> - struct notifier_block freq_transition;
> -#endif
> };
>
> struct s3c24XX_nand_devtype_data {
> @@ -711,54 +707,6 @@ static void s3c2440_nand_write_buf(struct nand_chip *this, const u_char *buf,
> }
> }
>
> -/* cpufreq driver support */
> -
> -#ifdef CONFIG_ARM_S3C24XX_CPUFREQ
> -
> -static int s3c2410_nand_cpufreq_transition(struct notifier_block *nb,
> - unsigned long val, void *data)
> -{
> - struct s3c2410_nand_info *info;
> - unsigned long newclk;
> -
> - info = container_of(nb, struct s3c2410_nand_info, freq_transition);
> - newclk = clk_get_rate(info->clk);
> -
> - if ((val == CPUFREQ_POSTCHANGE && newclk < info->clk_rate) ||
> - (val == CPUFREQ_PRECHANGE && newclk > info->clk_rate)) {
> - s3c2410_nand_setrate(info);
> - }
> -
> - return 0;
> -}
> -
> -static inline int s3c2410_nand_cpufreq_register(struct s3c2410_nand_info *info)
> -{
> - info->freq_transition.notifier_call = s3c2410_nand_cpufreq_transition;
> -
> - return cpufreq_register_notifier(&info->freq_transition,
> - CPUFREQ_TRANSITION_NOTIFIER);
> -}
> -
> -static inline void
> -s3c2410_nand_cpufreq_deregister(struct s3c2410_nand_info *info)
> -{
> - cpufreq_unregister_notifier(&info->freq_transition,
> - CPUFREQ_TRANSITION_NOTIFIER);
> -}
> -
> -#else
> -static inline int s3c2410_nand_cpufreq_register(struct s3c2410_nand_info *info)
> -{
> - return 0;
> -}
> -
> -static inline void
> -s3c2410_nand_cpufreq_deregister(struct s3c2410_nand_info *info)
> -{
> -}
> -#endif
> -
> /* device management functions */
>
> static int s3c24xx_nand_remove(struct platform_device *pdev)
> @@ -768,8 +716,6 @@ static int s3c24xx_nand_remove(struct platform_device *pdev)
> if (info == NULL)
> return 0;
>
> - s3c2410_nand_cpufreq_deregister(info);
> -
> /* Release all our mtds and their partitions, then go through
> * freeing the resources used
> */
> @@ -1184,12 +1130,6 @@ static int s3c24xx_nand_probe(struct platform_device *pdev)
> if (err != 0)
> goto exit_error;
>
> - err = s3c2410_nand_cpufreq_register(info);
> - if (err < 0) {
> - dev_err(&pdev->dev, "failed to init cpufreq support\n");
> - goto exit_error;
> - }
> -
> if (allow_clk_suspend(info)) {
> dev_info(&pdev->dev, "clock idle support enabled\n");
> s3c2410_nand_clk_set_state(info, CLOCK_SUSPEND);
> diff --git a/drivers/pinctrl/samsung/pinctrl-samsung.c b/drivers/pinctrl/samsung/pinctrl-samsung.c
> index bd13b5ef246d..1a478854293f 100644
> --- a/drivers/pinctrl/samsung/pinctrl-samsung.c
> +++ b/drivers/pinctrl/samsung/pinctrl-samsung.c
> @@ -1322,16 +1322,6 @@ static const struct of_device_id samsung_pinctrl_dt_match[] = {
> #ifdef CONFIG_PINCTRL_S3C64XX
> { .compatible = "samsung,s3c64xx-pinctrl",
> .data = &s3c64xx_of_data },
> -#endif
> -#ifdef CONFIG_PINCTRL_S3C24XX
> - { .compatible = "samsung,s3c2412-pinctrl",
> - .data = &s3c2412_of_data },
> - { .compatible = "samsung,s3c2416-pinctrl",
> - .data = &s3c2416_of_data },
> - { .compatible = "samsung,s3c2440-pinctrl",
> - .data = &s3c2440_of_data },
> - { .compatible = "samsung,s3c2450-pinctrl",
> - .data = &s3c2450_of_data },
> #endif
> {},
> };
> diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
> index 312dccfa3f18..d13ca620ea5d 100644
> --- a/drivers/rtc/Kconfig
> +++ b/drivers/rtc/Kconfig
> @@ -1406,18 +1406,14 @@ config RTC_DRV_OMAP
>
> config RTC_DRV_S3C
> tristate "Samsung S3C series SoC RTC"
> - depends on ARCH_EXYNOS || ARCH_S3C64XX || ARCH_S3C24XX || ARCH_S5PV210 || \
> + depends on ARCH_EXYNOS || ARCH_S3C64XX || ARCH_S5PV210 || \
> COMPILE_TEST
> help
> RTC (Realtime Clock) driver for the clock inbuilt into the
> - Samsung S3C24XX series of SoCs. This can provide periodic
> + Samsung S3C64XX series of SoCs. This can provide periodic
> interrupt rates from 1Hz to 64Hz for user programs, and
> wakeup from Alarm.
>
> - The driver currently supports the common features on all the
> - S3C24XX range, such as the S3C2410, S3C2412, S3C2413, S3C2440
> - and S3C2442.
> -
> This driver can also be build as a module. If so, the module
> will be called rtc-s3c.
>
> diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig
> index 434f83168546..3ba8a39655a3 100644
> --- a/drivers/tty/serial/Kconfig
> +++ b/drivers/tty/serial/Kconfig
> @@ -242,23 +242,23 @@ config SERIAL_SAMSUNG
> select SERIAL_CORE
> help
> Support for the on-chip UARTs on the Samsung
> - S3C24xx/S3C64xx/S5Pv210/Exynos and Apple M1 SoCs, providing
> + S3C64xx/S5Pv210/Exynos and Apple M1 SoCs, providing
> /dev/ttySAC0, 1 and 2 (note, some machines may not provide all of
> these ports, depending on how the serial port pins are configured.
> +
> Choose Y/M here only if you build for such SoC.
>
> config SERIAL_SAMSUNG_UARTS_4
> bool
> depends on SERIAL_SAMSUNG
> - default y if !(CPU_S3C2410 || CPU_S3C2412 || CPU_S3C2440 || CPU_S3C2442)
> + default y
> help
> Internal node for the common case of 4 Samsung compatible UARTs
>
> config SERIAL_SAMSUNG_UARTS
> int
> depends on SERIAL_SAMSUNG
> - default 4 if SERIAL_SAMSUNG_UARTS_4 || CPU_S3C2416
> - default 3
> + default 4
> help
> Select the number of available UART ports for the Samsung S3C
> serial driver
> diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c
> index 77d1363029f5..5adf3963b2f6 100644
> --- a/drivers/tty/serial/samsung_tty.c
> +++ b/drivers/tty/serial/samsung_tty.c
> @@ -152,10 +152,6 @@ struct s3c24xx_uart_port {
> const struct s3c2410_uartcfg *cfg;
>
> struct s3c24xx_uart_dma *dma;
> -
> -#ifdef CONFIG_ARM_S3C24XX_CPUFREQ
> - struct notifier_block freq_transition;
> -#endif
> };
>
> static void s3c24xx_serial_tx_chars(struct s3c24xx_uart_port *ourport);
> @@ -1859,93 +1855,6 @@ static void s3c24xx_serial_resetport(struct uart_port *port,
> udelay(1);
> }
>
> -#ifdef CONFIG_ARM_S3C24XX_CPUFREQ
> -
> -static int s3c24xx_serial_cpufreq_transition(struct notifier_block *nb,
> - unsigned long val, void *data)
> -{
> - struct s3c24xx_uart_port *port;
> - struct uart_port *uport;
> -
> - port = container_of(nb, struct s3c24xx_uart_port, freq_transition);
> - uport = &port->port;
> -
> - /* check to see if port is enabled */
> -
> - if (port->pm_level != 0)
> - return 0;
> -
> - /* try and work out if the baudrate is changing, we can detect
> - * a change in rate, but we do not have support for detecting
> - * a disturbance in the clock-rate over the change.
> - */
> -
> - if (IS_ERR(port->baudclk))
> - goto exit;
> -
> - if (port->baudclk_rate == clk_get_rate(port->baudclk))
> - goto exit;
> -
> - if (val == CPUFREQ_PRECHANGE) {
> - /* we should really shut the port down whilst the
> - * frequency change is in progress.
> - */
> -
> - } else if (val == CPUFREQ_POSTCHANGE) {
> - struct ktermios *termios;
> - struct tty_struct *tty;
> -
> - if (uport->state == NULL)
> - goto exit;
> -
> - tty = uport->state->port.tty;
> -
> - if (tty == NULL)
> - goto exit;
> -
> - termios = &tty->termios;
> -
> - if (termios == NULL) {
> - dev_warn(uport->dev, "%s: no termios?\n", __func__);
> - goto exit;
> - }
> -
> - s3c24xx_serial_set_termios(uport, termios, NULL);
> - }
> -
> -exit:
> - return 0;
> -}
> -
> -static inline int
> -s3c24xx_serial_cpufreq_register(struct s3c24xx_uart_port *port)
> -{
> - port->freq_transition.notifier_call = s3c24xx_serial_cpufreq_transition;
> -
> - return cpufreq_register_notifier(&port->freq_transition,
> - CPUFREQ_TRANSITION_NOTIFIER);
> -}
> -
> -static inline void
> -s3c24xx_serial_cpufreq_deregister(struct s3c24xx_uart_port *port)
> -{
> - cpufreq_unregister_notifier(&port->freq_transition,
> - CPUFREQ_TRANSITION_NOTIFIER);
> -}
> -
> -#else
> -static inline int
> -s3c24xx_serial_cpufreq_register(struct s3c24xx_uart_port *port)
> -{
> - return 0;
> -}
> -
> -static inline void
> -s3c24xx_serial_cpufreq_deregister(struct s3c24xx_uart_port *port)
> -{
> -}
> -#endif
> -
> static int s3c24xx_serial_enable_baudclk(struct s3c24xx_uart_port *ourport)
> {
> struct device *dev = ourport->port.dev;
> @@ -2237,10 +2146,6 @@ static int s3c24xx_serial_probe(struct platform_device *pdev)
> if (!IS_ERR(ourport->baudclk))
> clk_disable_unprepare(ourport->baudclk);
>
> - ret = s3c24xx_serial_cpufreq_register(ourport);
> - if (ret < 0)
> - dev_err(&pdev->dev, "failed to add cpufreq notifier\n");
> -
> probe_index++;
>
> return 0;
> @@ -2251,7 +2156,6 @@ static int s3c24xx_serial_remove(struct platform_device *dev)
> struct uart_port *port = s3c24xx_dev_to_port(&dev->dev);
>
> if (port) {
> - s3c24xx_serial_cpufreq_deregister(to_ourport(port));
> uart_remove_one_port(&s3c24xx_uart_drv, port);
> }
>
> @@ -2589,94 +2493,6 @@ static struct console s3c24xx_serial_console = {
> };
> #endif /* CONFIG_SERIAL_SAMSUNG_CONSOLE */
>
> -#ifdef CONFIG_CPU_S3C2410
> -static const struct s3c24xx_serial_drv_data s3c2410_serial_drv_data = {
> - .info = {
> - .name = "Samsung S3C2410 UART",
> - .type = TYPE_S3C24XX,
> - .port_type = PORT_S3C2410,
> - .fifosize = 16,
> - .rx_fifomask = S3C2410_UFSTAT_RXMASK,
> - .rx_fifoshift = S3C2410_UFSTAT_RXSHIFT,
> - .rx_fifofull = S3C2410_UFSTAT_RXFULL,
> - .tx_fifofull = S3C2410_UFSTAT_TXFULL,
> - .tx_fifomask = S3C2410_UFSTAT_TXMASK,
> - .tx_fifoshift = S3C2410_UFSTAT_TXSHIFT,
> - .def_clk_sel = S3C2410_UCON_CLKSEL0,
> - .num_clks = 2,
> - .clksel_mask = S3C2410_UCON_CLKMASK,
> - .clksel_shift = S3C2410_UCON_CLKSHIFT,
> - },
> - .def_cfg = {
> - .ucon = S3C2410_UCON_DEFAULT,
> - .ufcon = S3C2410_UFCON_DEFAULT,
> - },
> -};
> -#define S3C2410_SERIAL_DRV_DATA (&s3c2410_serial_drv_data)
> -#else
> -#define S3C2410_SERIAL_DRV_DATA NULL
> -#endif
> -
> -#ifdef CONFIG_CPU_S3C2412
> -static const struct s3c24xx_serial_drv_data s3c2412_serial_drv_data = {
> - .info = {
> - .name = "Samsung S3C2412 UART",
> - .type = TYPE_S3C24XX,
> - .port_type = PORT_S3C2412,
> - .fifosize = 64,
> - .has_divslot = 1,
> - .rx_fifomask = S3C2440_UFSTAT_RXMASK,
> - .rx_fifoshift = S3C2440_UFSTAT_RXSHIFT,
> - .rx_fifofull = S3C2440_UFSTAT_RXFULL,
> - .tx_fifofull = S3C2440_UFSTAT_TXFULL,
> - .tx_fifomask = S3C2440_UFSTAT_TXMASK,
> - .tx_fifoshift = S3C2440_UFSTAT_TXSHIFT,
> - .def_clk_sel = S3C2410_UCON_CLKSEL2,
> - .num_clks = 4,
> - .clksel_mask = S3C2412_UCON_CLKMASK,
> - .clksel_shift = S3C2412_UCON_CLKSHIFT,
> - },
> - .def_cfg = {
> - .ucon = S3C2410_UCON_DEFAULT,
> - .ufcon = S3C2410_UFCON_DEFAULT,
> - },
> -};
> -#define S3C2412_SERIAL_DRV_DATA (&s3c2412_serial_drv_data)
> -#else
> -#define S3C2412_SERIAL_DRV_DATA NULL
> -#endif
> -
> -#if defined(CONFIG_CPU_S3C2440) || defined(CONFIG_CPU_S3C2416) || \
> - defined(CONFIG_CPU_S3C2443) || defined(CONFIG_CPU_S3C2442)
> -static const struct s3c24xx_serial_drv_data s3c2440_serial_drv_data = {
> - .info = {
> - .name = "Samsung S3C2440 UART",
> - .type = TYPE_S3C24XX,
> - .port_type = PORT_S3C2440,
> - .fifosize = 64,
> - .has_divslot = 1,
> - .rx_fifomask = S3C2440_UFSTAT_RXMASK,
> - .rx_fifoshift = S3C2440_UFSTAT_RXSHIFT,
> - .rx_fifofull = S3C2440_UFSTAT_RXFULL,
> - .tx_fifofull = S3C2440_UFSTAT_TXFULL,
> - .tx_fifomask = S3C2440_UFSTAT_TXMASK,
> - .tx_fifoshift = S3C2440_UFSTAT_TXSHIFT,
> - .def_clk_sel = S3C2410_UCON_CLKSEL2,
> - .num_clks = 4,
> - .clksel_mask = S3C2412_UCON_CLKMASK,
> - .clksel_shift = S3C2412_UCON_CLKSHIFT,
> - .ucon_mask = S3C2440_UCON0_DIVMASK,
> - },
> - .def_cfg = {
> - .ucon = S3C2410_UCON_DEFAULT,
> - .ufcon = S3C2410_UFCON_DEFAULT,
> - },
> -};
> -#define S3C2440_SERIAL_DRV_DATA (&s3c2440_serial_drv_data)
> -#else
> -#define S3C2440_SERIAL_DRV_DATA NULL
> -#endif
> -
> #if defined(CONFIG_CPU_S3C6400) || defined(CONFIG_CPU_S3C6410)
> static const struct s3c24xx_serial_drv_data s3c6400_serial_drv_data = {
> .info = {
> @@ -2845,15 +2661,6 @@ static const struct s3c24xx_serial_drv_data artpec8_serial_drv_data = {
>
> static const struct platform_device_id s3c24xx_serial_driver_ids[] = {
> {
> - .name = "s3c2410-uart",
> - .driver_data = (kernel_ulong_t)S3C2410_SERIAL_DRV_DATA,
> - }, {
> - .name = "s3c2412-uart",
> - .driver_data = (kernel_ulong_t)S3C2412_SERIAL_DRV_DATA,
> - }, {
> - .name = "s3c2440-uart",
> - .driver_data = (kernel_ulong_t)S3C2440_SERIAL_DRV_DATA,
> - }, {
> .name = "s3c6400-uart",
> .driver_data = (kernel_ulong_t)S3C6400_SERIAL_DRV_DATA,
> }, {
> @@ -2881,12 +2688,6 @@ MODULE_DEVICE_TABLE(platform, s3c24xx_serial_driver_ids);
>
> #ifdef CONFIG_OF
> static const struct of_device_id s3c24xx_uart_dt_match[] = {
> - { .compatible = "samsung,s3c2410-uart",
> - .data = S3C2410_SERIAL_DRV_DATA },
> - { .compatible = "samsung,s3c2412-uart",
> - .data = S3C2412_SERIAL_DRV_DATA },
> - { .compatible = "samsung,s3c2440-uart",
> - .data = S3C2440_SERIAL_DRV_DATA },
> { .compatible = "samsung,s3c6400-uart",
> .data = S3C6400_SERIAL_DRV_DATA },
> { .compatible = "samsung,s5pv210-uart",
> diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
> index fb7b603dddf8..8ba4fe9364b1 100644
> --- a/drivers/usb/host/Kconfig
> +++ b/drivers/usb/host/Kconfig
> @@ -443,12 +443,12 @@ config USB_OHCI_HCD_STI
> STMicroelectronics consumer electronics SoC's.
>
> config USB_OHCI_HCD_S3C2410
> - tristate "OHCI support for Samsung S3C24xx/S3C64xx SoC series"
> - depends on USB_OHCI_HCD && (ARCH_S3C24XX || ARCH_S3C64XX || COMPILE_TEST)
> - default y if (ARCH_S3C24XX || ARCH_S3C64XX)
> + tristate "OHCI support for Samsung S3C64xx SoC series"
> + depends on USB_OHCI_HCD && (ARCH_S3C64XX || COMPILE_TEST)
> + default ARCH_S3C64XX
> help
> Enables support for the on-chip OHCI controller on
> - S3C24xx/S3C64xx chips.
> + S3C64xx chips.
>
> config USB_OHCI_HCD_LPC32XX
> tristate "Support for LPC on-chip OHCI USB controller"
> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
> index b64bc49c7f30..eee7df45347a 100644
> --- a/drivers/watchdog/Kconfig
> +++ b/drivers/watchdog/Kconfig
> @@ -491,14 +491,13 @@ config IXP4XX_WATCHDOG
> Say N if you are unsure.
>
> config S3C2410_WATCHDOG
> - tristate "S3C2410 Watchdog"
> - depends on ARCH_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210 || ARCH_EXYNOS || \
> - COMPILE_TEST
> + tristate "S3C6410/S5Pv210/Exynos Watchdog"
> + depends on ARCH_S3C64XX || ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST
> select WATCHDOG_CORE
> select MFD_SYSCON if ARCH_EXYNOS
> help
> - Watchdog timer block in the Samsung S3C24xx, S3C64xx, S5Pv210 and
> - Exynos SoCs. This will reboot the system when the timer expires with
> + Watchdog timer block in the Samsung S3C64xx, S5Pv210 and Exynos
> + SoCs. This will reboot the system when the timer expires with
> the watchdog enabled.
>
> The driver is limited by the speed of the system's PCLK
> diff --git a/drivers/watchdog/s3c2410_wdt.c b/drivers/watchdog/s3c2410_wdt.c
> index d3fc8ed886ff..200ba236a72e 100644
> --- a/drivers/watchdog/s3c2410_wdt.c
> +++ b/drivers/watchdog/s3c2410_wdt.c
> @@ -562,73 +562,6 @@ static irqreturn_t s3c2410wdt_irq(int irqno, void *param)
> return IRQ_HANDLED;
> }
>
> -#ifdef CONFIG_ARM_S3C24XX_CPUFREQ
> -
> -static int s3c2410wdt_cpufreq_transition(struct notifier_block *nb,
> - unsigned long val, void *data)
> -{
> - int ret;
> - struct s3c2410_wdt *wdt = freq_to_wdt(nb);
> -
> - if (!s3c2410wdt_is_running(wdt))
> - goto done;
> -
> - if (val == CPUFREQ_PRECHANGE) {
> - /* To ensure that over the change we don't cause the
> - * watchdog to trigger, we perform an keep-alive if
> - * the watchdog is running.
> - */
> -
> - s3c2410wdt_keepalive(&wdt->wdt_device);
> - } else if (val == CPUFREQ_POSTCHANGE) {
> - s3c2410wdt_stop(&wdt->wdt_device);
> -
> - ret = s3c2410wdt_set_heartbeat(&wdt->wdt_device,
> - wdt->wdt_device.timeout);
> -
> - if (ret >= 0)
> - s3c2410wdt_start(&wdt->wdt_device);
> - else
> - goto err;
> - }
> -
> -done:
> - return 0;
> -
> - err:
> - dev_err(wdt->dev, "cannot set new value for timeout %d\n",
> - wdt->wdt_device.timeout);
> - return ret;
> -}
> -
> -static inline int s3c2410wdt_cpufreq_register(struct s3c2410_wdt *wdt)
> -{
> - wdt->freq_transition.notifier_call = s3c2410wdt_cpufreq_transition;
> -
> - return cpufreq_register_notifier(&wdt->freq_transition,
> - CPUFREQ_TRANSITION_NOTIFIER);
> -}
> -
> -static inline void s3c2410wdt_cpufreq_deregister(struct s3c2410_wdt *wdt)
> -{
> - wdt->freq_transition.notifier_call = s3c2410wdt_cpufreq_transition;
> -
> - cpufreq_unregister_notifier(&wdt->freq_transition,
> - CPUFREQ_TRANSITION_NOTIFIER);
> -}
> -
> -#else
> -
> -static inline int s3c2410wdt_cpufreq_register(struct s3c2410_wdt *wdt)
> -{
> - return 0;
> -}
> -
> -static inline void s3c2410wdt_cpufreq_deregister(struct s3c2410_wdt *wdt)
> -{
> -}
> -#endif
> -
> static inline unsigned int s3c2410wdt_get_bootstatus(struct s3c2410_wdt *wdt)
> {
> unsigned int rst_stat;
> @@ -761,12 +694,6 @@ static int s3c2410wdt_probe(struct platform_device *pdev)
> wdt->wdt_device.min_timeout = 1;
> wdt->wdt_device.max_timeout = s3c2410wdt_max_timeout(wdt);
>
> - ret = s3c2410wdt_cpufreq_register(wdt);
> - if (ret < 0) {
> - dev_err(dev, "failed to register cpufreq\n");
> - goto err_src_clk;
> - }
> -
> watchdog_set_drvdata(&wdt->wdt_device, wdt);
>
> /* see if we can actually set the requested timer margin, and if
> @@ -783,7 +710,7 @@ static int s3c2410wdt_probe(struct platform_device *pdev)
> S3C2410_WATCHDOG_DEFAULT_TIME);
> } else {
> dev_err(dev, "failed to use default timeout\n");
> - goto err_cpufreq;
> + goto err_src_clk;
> }
> }
>
> @@ -791,7 +718,7 @@ static int s3c2410wdt_probe(struct platform_device *pdev)
> pdev->name, pdev);
> if (ret != 0) {
> dev_err(dev, "failed to install irq (%d)\n", ret);
> - goto err_cpufreq;
> + goto err_src_clk;
> }
>
> watchdog_set_nowayout(&wdt->wdt_device, nowayout);
> @@ -817,7 +744,7 @@ static int s3c2410wdt_probe(struct platform_device *pdev)
>
> ret = watchdog_register_device(&wdt->wdt_device);
> if (ret)
> - goto err_cpufreq;
> + goto err_src_clk;
>
> ret = s3c2410wdt_enable(wdt, true);
> if (ret < 0)
> @@ -839,9 +766,6 @@ static int s3c2410wdt_probe(struct platform_device *pdev)
> err_unregister:
> watchdog_unregister_device(&wdt->wdt_device);
>
> - err_cpufreq:
> - s3c2410wdt_cpufreq_deregister(wdt);
> -
> err_src_clk:
> clk_disable_unprepare(wdt->src_clk);
>
> @@ -862,8 +786,6 @@ static int s3c2410wdt_remove(struct platform_device *dev)
>
> watchdog_unregister_device(&wdt->wdt_device);
>
> - s3c2410wdt_cpufreq_deregister(wdt);
> -
> clk_disable_unprepare(wdt->src_clk);
> clk_disable_unprepare(wdt->bus_clk);
>
> diff --git a/include/linux/clk/samsung.h b/include/linux/clk/samsung.h
> index 38b774001712..0cf7aac83439 100644
> --- a/include/linux/clk/samsung.h
> +++ b/include/linux/clk/samsung.h
> @@ -21,36 +21,4 @@ static inline void s3c64xx_clk_init(struct device_node *np,
> bool s3c6400, void __iomem *base) { }
> #endif /* CONFIG_S3C64XX_COMMON_CLK */
>
> -#ifdef CONFIG_S3C2410_COMMON_CLK
> -void s3c2410_common_clk_init(struct device_node *np, unsigned long xti_f,
> - int current_soc,
> - void __iomem *reg_base);
> -#else
> -static inline void s3c2410_common_clk_init(struct device_node *np,
> - unsigned long xti_f,
> - int current_soc,
> - void __iomem *reg_base) { }
> -#endif /* CONFIG_S3C2410_COMMON_CLK */
> -
> -#ifdef CONFIG_S3C2412_COMMON_CLK
> -void s3c2412_common_clk_init(struct device_node *np, unsigned long xti_f,
> - unsigned long ext_f, void __iomem *reg_base);
> -#else
> -static inline void s3c2412_common_clk_init(struct device_node *np,
> - unsigned long xti_f,
> - unsigned long ext_f,
> - void __iomem *reg_base) { }
> -#endif /* CONFIG_S3C2412_COMMON_CLK */
> -
> -#ifdef CONFIG_S3C2443_COMMON_CLK
> -void s3c2443_common_clk_init(struct device_node *np, unsigned long xti_f,
> - int current_soc,
> - void __iomem *reg_base);
> -#else
> -static inline void s3c2443_common_clk_init(struct device_node *np,
> - unsigned long xti_f,
> - int current_soc,
> - void __iomem *reg_base) { }
> -#endif /* CONFIG_S3C2443_COMMON_CLK */
> -
> #endif /* __LINUX_CLK_SAMSUNG_H_ */
> diff --git a/include/linux/soc/samsung/s3c-pm.h b/include/linux/soc/samsung/s3c-pm.h
> index f9164559c99f..5b23d85d20ab 100644
> --- a/include/linux/soc/samsung/s3c-pm.h
> +++ b/include/linux/soc/samsung/s3c-pm.h
> @@ -14,58 +14,10 @@
>
> /* PM debug functions */
>
> -/**
> - * struct pm_uart_save - save block for core UART
> - * @ulcon: Save value for S3C2410_ULCON
> - * @ucon: Save value for S3C2410_UCON
> - * @ufcon: Save value for S3C2410_UFCON
> - * @umcon: Save value for S3C2410_UMCON
> - * @ubrdiv: Save value for S3C2410_UBRDIV
> - *
> - * Save block for UART registers to be held over sleep and restored if they
> - * are needed (say by debug).
> -*/
> -struct pm_uart_save {
> - u32 ulcon;
> - u32 ucon;
> - u32 ufcon;
> - u32 umcon;
> - u32 ubrdiv;
> - u32 udivslot;
> -};
> -
> -#ifdef CONFIG_SAMSUNG_PM_DEBUG
> -/**
> - * s3c_pm_dbg() - low level debug function for use in suspend/resume.
> - * @msg: The message to print.
> - *
> - * This function is used mainly to debug the resume process before the system
> - * can rely on printk/console output. It uses the low-level debugging output
> - * routine printascii() to do its work.
> - */
> -extern void s3c_pm_dbg(const char *msg, ...);
> -
> -#define S3C_PMDBG(fmt...) s3c_pm_dbg(fmt)
> -
> -extern void s3c_pm_save_uarts(bool is_s3c24xx);
> -extern void s3c_pm_restore_uarts(bool is_s3c24xx);
> -
> -#ifdef CONFIG_ARCH_S3C64XX
> -extern void s3c_pm_arch_update_uart(void __iomem *regs,
> - struct pm_uart_save *save);
> -#else
> -static inline void
> -s3c_pm_arch_update_uart(void __iomem *regs, struct pm_uart_save *save)
> -{
> -}
> -#endif
> -
> -#else
> #define S3C_PMDBG(fmt...) pr_debug(fmt)
>
> static inline void s3c_pm_save_uarts(bool is_s3c24xx) { }
> static inline void s3c_pm_restore_uarts(bool is_s3c24xx) { }
> -#endif
>
> /* suspend memory checking */
>
> @@ -81,14 +33,4 @@ extern void s3c_pm_check_store(void);
> #define s3c_pm_check_store() do { } while (0)
> #endif
>
> -/* system device subsystems */
> -
> -extern struct bus_type s3c2410_subsys;
> -extern struct bus_type s3c2410a_subsys;
> -extern struct bus_type s3c2412_subsys;
> -extern struct bus_type s3c2416_subsys;
> -extern struct bus_type s3c2440_subsys;
> -extern struct bus_type s3c2442_subsys;
> -extern struct bus_type s3c2443_subsys;
> -
> #endif
On 21/10/2022 22:27, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> A number of device drivers reference CONFIG_ARM_S3C24XX_CPUFREQ or
> similar symbols that are no longer available with the platform gone,
> though the drivers themselves are still used on newer platforms,
> so remove these hacks.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Hi Arnd,
arnd@kernel.org wrote on Fri, 21 Oct 2022 22:27:35 +0200:
> From: Arnd Bergmann <arnd@arndb.de>
>
> A number of device drivers reference CONFIG_ARM_S3C24XX_CPUFREQ or
> similar symbols that are no longer available with the platform gone,
> though the drivers themselves are still used on newer platforms,
> so remove these hacks.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Miquel Raynal <miquel.raynal@bootlin.com>
Thanks,
Miquèl
On 21/10/2022 16:27, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> A number of device drivers reference CONFIG_ARM_S3C24XX_CPUFREQ or
> similar symbols that are no longer available with the platform gone,
> though the drivers themselves are still used on newer platforms,
> so remove these hacks.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Best regards,
Krzysztof
On Fri, 21 Oct 2022 at 22:37, Arnd Bergmann <arnd@kernel.org> wrote:
>
> From: Arnd Bergmann <arnd@arndb.de>
>
> A number of device drivers reference CONFIG_ARM_S3C24XX_CPUFREQ or
> similar symbols that are no longer available with the platform gone,
> though the drivers themselves are still used on newer platforms,
> so remove these hacks.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Ulf Hansson <ulf.hansson@linaro.org> # For MMC
Kind regards
Uffe
> ---
> arch/arm/include/debug/s3c24xx.S | 10 -
> arch/arm/mach-s3c/Makefile | 2 -
> arch/arm/mach-s3c/devs.c | 1 -
> arch/arm/mach-s3c/dma.h | 7 -
> arch/arm/mach-s3c/gpio-samsung.h | 7 -
> arch/arm/mach-s3c/irqs.h | 7 -
> arch/arm/mach-s3c/map.h | 7 -
> arch/arm/mach-s3c/pm-core.h | 7 -
> arch/arm/mach-s3c/regs-clock.h | 7 -
> arch/arm/mach-s3c/regs-gpio.h | 7 -
> arch/arm/mach-s3c/regs-irq.h | 7 -
> drivers/clocksource/Kconfig | 2 +-
> drivers/i2c/busses/Kconfig | 3 +-
> drivers/i2c/busses/i2c-s3c2410.c | 72 -------
> drivers/iio/adc/Kconfig | 6 +-
> .../media/platform/samsung/s3c-camif/Kconfig | 8 +-
> drivers/mmc/host/Kconfig | 5 +-
> drivers/mtd/nand/raw/Kconfig | 2 +-
> drivers/mtd/nand/raw/s3c2410.c | 60 ------
> drivers/pinctrl/samsung/pinctrl-samsung.c | 10 -
> drivers/rtc/Kconfig | 8 +-
> drivers/tty/serial/Kconfig | 8 +-
> drivers/tty/serial/samsung_tty.c | 199 ------------------
> drivers/usb/host/Kconfig | 8 +-
> drivers/watchdog/Kconfig | 9 +-
> drivers/watchdog/s3c2410_wdt.c | 84 +-------
> include/linux/clk/samsung.h | 32 ---
> include/linux/soc/samsung/s3c-pm.h | 58 -----
> 28 files changed, 29 insertions(+), 614 deletions(-)
>
> diff --git a/arch/arm/include/debug/s3c24xx.S b/arch/arm/include/debug/s3c24xx.S
> index af873b526677..7ab5e577cd42 100644
> --- a/arch/arm/include/debug/s3c24xx.S
> +++ b/arch/arm/include/debug/s3c24xx.S
> @@ -28,16 +28,6 @@
> and \rd, \rd, #S3C2410_UFSTAT_TXMASK
> .endm
>
> -/* Select the correct implementation depending on the configuration. The
> - * S3C2440 will get selected by default, as these are the most widely
> - * used variants of these
> -*/
> -
> -#if defined(CONFIG_DEBUG_S3C2410_UART)
> -#define fifo_full fifo_full_s3c2410
> -#define fifo_level fifo_level_s3c2410
> -#endif
> -
> /* include the reset of the code which will do the work */
>
> #include <debug/samsung.S>
> diff --git a/arch/arm/mach-s3c/Makefile b/arch/arm/mach-s3c/Makefile
> index e7f18039b149..a5135137e648 100644
> --- a/arch/arm/mach-s3c/Makefile
> +++ b/arch/arm/mach-s3c/Makefile
> @@ -2,9 +2,7 @@
> #
> # Copyright 2009 Simtec Electronics
>
> -ifdef CONFIG_ARCH_S3C64XX
> include $(src)/Makefile.s3c64xx
> -endif
>
> # Objects we always build independent of SoC choice
>
> diff --git a/arch/arm/mach-s3c/devs.c b/arch/arm/mach-s3c/devs.c
> index 9ac07c023adf..a31d1c3038e8 100644
> --- a/arch/arm/mach-s3c/devs.c
> +++ b/arch/arm/mach-s3c/devs.c
> @@ -29,7 +29,6 @@
> #include <linux/sizes.h>
> #include <linux/platform_data/s3c-hsudc.h>
> #include <linux/platform_data/s3c-hsotg.h>
> -#include <linux/platform_data/dma-s3c24xx.h>
>
> #include <linux/platform_data/media/s5p_hdmi.h>
>
> diff --git a/arch/arm/mach-s3c/dma.h b/arch/arm/mach-s3c/dma.h
> index 59a4578c5f00..48057cb90070 100644
> --- a/arch/arm/mach-s3c/dma.h
> +++ b/arch/arm/mach-s3c/dma.h
> @@ -1,9 +1,2 @@
> /* SPDX-License-Identifier: GPL-2.0 */
> -
> -#ifdef CONFIG_ARCH_S3C24XX
> -#include "dma-s3c24xx.h"
> -#endif
> -
> -#ifdef CONFIG_ARCH_S3C64XX
> #include "dma-s3c64xx.h"
> -#endif
> diff --git a/arch/arm/mach-s3c/gpio-samsung.h b/arch/arm/mach-s3c/gpio-samsung.h
> index 02f6f4a96862..4233515eddaa 100644
> --- a/arch/arm/mach-s3c/gpio-samsung.h
> +++ b/arch/arm/mach-s3c/gpio-samsung.h
> @@ -1,9 +1,2 @@
> /* SPDX-License-Identifier: GPL-2.0 */
> -
> -#ifdef CONFIG_ARCH_S3C24XX
> -#include "gpio-samsung-s3c24xx.h"
> -#endif
> -
> -#ifdef CONFIG_ARCH_S3C64XX
> #include "gpio-samsung-s3c64xx.h"
> -#endif
> diff --git a/arch/arm/mach-s3c/irqs.h b/arch/arm/mach-s3c/irqs.h
> index 0bff1c1c8eb0..3ff0e0963080 100644
> --- a/arch/arm/mach-s3c/irqs.h
> +++ b/arch/arm/mach-s3c/irqs.h
> @@ -1,9 +1,2 @@
> /* SPDX-License-Identifier: GPL-2.0 */
> -
> -#ifdef CONFIG_ARCH_S3C24XX
> -#include "irqs-s3c24xx.h"
> -#endif
> -
> -#ifdef CONFIG_ARCH_S3C64XX
> #include "irqs-s3c64xx.h"
> -#endif
> diff --git a/arch/arm/mach-s3c/map.h b/arch/arm/mach-s3c/map.h
> index 7cfb517d4886..778d6f81cb2b 100644
> --- a/arch/arm/mach-s3c/map.h
> +++ b/arch/arm/mach-s3c/map.h
> @@ -1,9 +1,2 @@
> /* SPDX-License-Identifier: GPL-2.0 */
> -
> -#ifdef CONFIG_ARCH_S3C24XX
> -#include "map-s3c24xx.h"
> -#endif
> -
> -#ifdef CONFIG_ARCH_S3C64XX
> #include "map-s3c64xx.h"
> -#endif
> diff --git a/arch/arm/mach-s3c/pm-core.h b/arch/arm/mach-s3c/pm-core.h
> index b0e1d277f599..3e0c2df79120 100644
> --- a/arch/arm/mach-s3c/pm-core.h
> +++ b/arch/arm/mach-s3c/pm-core.h
> @@ -1,9 +1,2 @@
> /* SPDX-License-Identifier: GPL-2.0 */
> -
> -#ifdef CONFIG_ARCH_S3C24XX
> -#include "pm-core-s3c24xx.h"
> -#endif
> -
> -#ifdef CONFIG_ARCH_S3C64XX
> #include "pm-core-s3c64xx.h"
> -#endif
> diff --git a/arch/arm/mach-s3c/regs-clock.h b/arch/arm/mach-s3c/regs-clock.h
> index 7df31f203d28..fc7e3886b07c 100644
> --- a/arch/arm/mach-s3c/regs-clock.h
> +++ b/arch/arm/mach-s3c/regs-clock.h
> @@ -1,9 +1,2 @@
> /* SPDX-License-Identifier: GPL-2.0 */
> -
> -#ifdef CONFIG_ARCH_S3C24XX
> -#include "regs-clock-s3c24xx.h"
> -#endif
> -
> -#ifdef CONFIG_ARCH_S3C64XX
> #include "regs-clock-s3c64xx.h"
> -#endif
> diff --git a/arch/arm/mach-s3c/regs-gpio.h b/arch/arm/mach-s3c/regs-gpio.h
> index 0d41cb76d440..4e08e8609663 100644
> --- a/arch/arm/mach-s3c/regs-gpio.h
> +++ b/arch/arm/mach-s3c/regs-gpio.h
> @@ -1,9 +1,2 @@
> /* SPDX-License-Identifier: GPL-2.0 */
> -
> -#ifdef CONFIG_ARCH_S3C24XX
> -#include "regs-gpio-s3c24xx.h"
> -#endif
> -
> -#ifdef CONFIG_ARCH_S3C64XX
> #include "regs-gpio-s3c64xx.h"
> -#endif
> diff --git a/arch/arm/mach-s3c/regs-irq.h b/arch/arm/mach-s3c/regs-irq.h
> index 57f0dda8dbf5..4243daa54bd1 100644
> --- a/arch/arm/mach-s3c/regs-irq.h
> +++ b/arch/arm/mach-s3c/regs-irq.h
> @@ -1,9 +1,2 @@
> /* SPDX-License-Identifier: GPL-2.0 */
> -
> -#ifdef CONFIG_ARCH_S3C24XX
> -#include "regs-irq-s3c24xx.h"
> -#endif
> -
> -#ifdef CONFIG_ARCH_S3C64XX
> #include "regs-irq-s3c64xx.h"
> -#endif
> diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
> index 4469e7f555e9..fc10ecc3602d 100644
> --- a/drivers/clocksource/Kconfig
> +++ b/drivers/clocksource/Kconfig
> @@ -441,7 +441,7 @@ config CLKSRC_EXYNOS_MCT
> config CLKSRC_SAMSUNG_PWM
> bool "PWM timer driver for Samsung S3C, S5P" if COMPILE_TEST
> depends on HAS_IOMEM
> - depends on ARCH_EXYNOS || ARCH_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210 || COMPILE_TEST
> + depends on ARCH_EXYNOS || ARCH_S3C64XX || ARCH_S5PV210 || COMPILE_TEST
> help
> This is a new clocksource driver for the PWM timer found in
> Samsung S3C, S5P and Exynos SoCs, replacing an earlier driver
> diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
> index f427c8ea5c7b..84d21e0a7cdf 100644
> --- a/drivers/i2c/busses/Kconfig
> +++ b/drivers/i2c/busses/Kconfig
> @@ -1009,8 +1009,7 @@ config I2C_RZV2M
>
> config I2C_S3C2410
> tristate "S3C/Exynos I2C Driver"
> - depends on ARCH_EXYNOS || ARCH_S3C24XX || ARCH_S3C64XX || \
> - ARCH_S5PV210 || COMPILE_TEST
> + depends on ARCH_EXYNOS || ARCH_S3C64XX || ARCH_S5PV210 || COMPILE_TEST
> help
> Say Y here to include support for I2C controller in the
> Samsung SoCs (S3C, S5Pv210, Exynos).
> diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c
> index 36dab9cd208c..45e9df81345a 100644
> --- a/drivers/i2c/busses/i2c-s3c2410.c
> +++ b/drivers/i2c/busses/i2c-s3c2410.c
> @@ -116,9 +116,6 @@ struct s3c24xx_i2c {
> struct s3c2410_platform_i2c *pdata;
> struct gpio_desc *gpios[2];
> struct pinctrl *pctrl;
> -#if defined(CONFIG_ARM_S3C24XX_CPUFREQ)
> - struct notifier_block freq_transition;
> -#endif
> struct regmap *sysreg;
> unsigned int sys_i2c_cfg;
> };
> @@ -885,65 +882,6 @@ static int s3c24xx_i2c_clockrate(struct s3c24xx_i2c *i2c, unsigned int *got)
> return 0;
> }
>
> -#if defined(CONFIG_ARM_S3C24XX_CPUFREQ)
> -
> -#define freq_to_i2c(_n) container_of(_n, struct s3c24xx_i2c, freq_transition)
> -
> -static int s3c24xx_i2c_cpufreq_transition(struct notifier_block *nb,
> - unsigned long val, void *data)
> -{
> - struct s3c24xx_i2c *i2c = freq_to_i2c(nb);
> - unsigned int got;
> - int delta_f;
> - int ret;
> -
> - delta_f = clk_get_rate(i2c->clk) - i2c->clkrate;
> -
> - /* if we're post-change and the input clock has slowed down
> - * or at pre-change and the clock is about to speed up, then
> - * adjust our clock rate. <0 is slow, >0 speedup.
> - */
> -
> - if ((val == CPUFREQ_POSTCHANGE && delta_f < 0) ||
> - (val == CPUFREQ_PRECHANGE && delta_f > 0)) {
> - i2c_lock_bus(&i2c->adap, I2C_LOCK_ROOT_ADAPTER);
> - ret = s3c24xx_i2c_clockrate(i2c, &got);
> - i2c_unlock_bus(&i2c->adap, I2C_LOCK_ROOT_ADAPTER);
> -
> - if (ret < 0)
> - dev_err(i2c->dev, "cannot find frequency (%d)\n", ret);
> - else
> - dev_info(i2c->dev, "setting freq %d\n", got);
> - }
> -
> - return 0;
> -}
> -
> -static inline int s3c24xx_i2c_register_cpufreq(struct s3c24xx_i2c *i2c)
> -{
> - i2c->freq_transition.notifier_call = s3c24xx_i2c_cpufreq_transition;
> -
> - return cpufreq_register_notifier(&i2c->freq_transition,
> - CPUFREQ_TRANSITION_NOTIFIER);
> -}
> -
> -static inline void s3c24xx_i2c_deregister_cpufreq(struct s3c24xx_i2c *i2c)
> -{
> - cpufreq_unregister_notifier(&i2c->freq_transition,
> - CPUFREQ_TRANSITION_NOTIFIER);
> -}
> -
> -#else
> -static inline int s3c24xx_i2c_register_cpufreq(struct s3c24xx_i2c *i2c)
> -{
> - return 0;
> -}
> -
> -static inline void s3c24xx_i2c_deregister_cpufreq(struct s3c24xx_i2c *i2c)
> -{
> -}
> -#endif
> -
> #ifdef CONFIG_OF
> static int s3c24xx_i2c_parse_dt_gpio(struct s3c24xx_i2c *i2c)
> {
> @@ -1152,13 +1090,6 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
> }
> }
>
> - ret = s3c24xx_i2c_register_cpufreq(i2c);
> - if (ret < 0) {
> - dev_err(&pdev->dev, "failed to register cpufreq notifier\n");
> - clk_unprepare(i2c->clk);
> - return ret;
> - }
> -
> /*
> * Note, previous versions of the driver used i2c_add_adapter()
> * to add the bus at any number. We now pass the bus number via
> @@ -1175,7 +1106,6 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
> ret = i2c_add_numbered_adapter(&i2c->adap);
> if (ret < 0) {
> pm_runtime_disable(&pdev->dev);
> - s3c24xx_i2c_deregister_cpufreq(i2c);
> clk_unprepare(i2c->clk);
> return ret;
> }
> @@ -1192,8 +1122,6 @@ static int s3c24xx_i2c_remove(struct platform_device *pdev)
>
> pm_runtime_disable(&pdev->dev);
>
> - s3c24xx_i2c_deregister_cpufreq(i2c);
> -
> i2c_del_adapter(&i2c->adap);
>
> return 0;
> diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig
> index 791612ca6012..9de7f05d40e2 100644
> --- a/drivers/iio/adc/Kconfig
> +++ b/drivers/iio/adc/Kconfig
> @@ -437,11 +437,11 @@ config EP93XX_ADC
>
> config EXYNOS_ADC
> tristate "Exynos ADC driver support"
> - depends on ARCH_EXYNOS || ARCH_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210 || (OF && COMPILE_TEST)
> + depends on ARCH_EXYNOS || ARCH_S3C64XX || ARCH_S5PV210 || (OF && COMPILE_TEST)
> depends on HAS_IOMEM
> help
> - Driver for the ADC block found in the Samsung S3C (S3C2410, S3C2416,
> - S3C2440, S3C2443, S3C6410), S5Pv210 and Exynos SoCs.
> + Driver for the ADC block found in the Samsung S3C6410, S5Pv210 and
> + Exynos SoCs.
> Choose Y here only if you build for such Samsung SoC.
>
> To compile this driver as a module, choose M here: the module will be
> diff --git a/drivers/media/platform/samsung/s3c-camif/Kconfig b/drivers/media/platform/samsung/s3c-camif/Kconfig
> index 8cb8d1ac3edc..f359f6382fff 100644
> --- a/drivers/media/platform/samsung/s3c-camif/Kconfig
> +++ b/drivers/media/platform/samsung/s3c-camif/Kconfig
> @@ -1,15 +1,15 @@
> # SPDX-License-Identifier: GPL-2.0-only
> config VIDEO_S3C_CAMIF
> - tristate "Samsung S3C24XX/S3C64XX SoC Camera Interface driver"
> + tristate "Samsung 3C64XX SoC Camera Interface driver"
> depends on V4L_PLATFORM_DRIVERS
> depends on VIDEO_DEV && I2C && PM
> - depends on ARCH_S3C64XX || PLAT_S3C24XX || COMPILE_TEST
> + depends on ARCH_S3C64XX || COMPILE_TEST
> select MEDIA_CONTROLLER
> select VIDEO_V4L2_SUBDEV_API
> select VIDEOBUF2_DMA_CONTIG
> help
> - This is a v4l2 driver for s3c24xx and s3c64xx SoC series camera
> - host interface (CAMIF).
> + This is a v4l2 driver for s3c64xx SoC series camera host interface
> + (CAMIF).
>
> To compile this driver as a module, choose M here: the module
> will be called s3c-camif.
> diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
> index 84dd37ff2735..79d8ddf1f616 100644
> --- a/drivers/mmc/host/Kconfig
> +++ b/drivers/mmc/host/Kconfig
> @@ -312,9 +312,8 @@ config MMC_SDHCI_S3C
> depends on PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST
> help
> This selects the Secure Digital Host Controller Interface (SDHCI)
> - often referrered to as the HSMMC block in some of the Samsung S3C
> - (S3C2416, S3C2443, S3C6410), S5Pv210 and Exynos (Exynso4210,
> - Exynos4412) SoCs.
> + often referrered to as the HSMMC block in some of the Samsung
> + S3C6410, S5Pv210 and Exynos (Exynso4210, Exynos4412) SoCs.
>
> If you have a controller with this interface (thereforeyou build for
> such Samsung SoC), say Y or M here.
> diff --git a/drivers/mtd/nand/raw/Kconfig b/drivers/mtd/nand/raw/Kconfig
> index 280a55139387..a347833b8f29 100644
> --- a/drivers/mtd/nand/raw/Kconfig
> +++ b/drivers/mtd/nand/raw/Kconfig
> @@ -79,7 +79,7 @@ config MTD_NAND_NDFC
>
> config MTD_NAND_S3C2410
> tristate "Samsung S3C NAND controller"
> - depends on ARCH_S3C24XX || ARCH_S3C64XX
> + depends on ARCH_S3C64XX
> help
> This enables the NAND flash controller on the S3C24xx and S3C64xx
> SoCs
> diff --git a/drivers/mtd/nand/raw/s3c2410.c b/drivers/mtd/nand/raw/s3c2410.c
> index f0a4535c812a..80d96f94d6cb 100644
> --- a/drivers/mtd/nand/raw/s3c2410.c
> +++ b/drivers/mtd/nand/raw/s3c2410.c
> @@ -166,10 +166,6 @@ struct s3c2410_nand_info {
> enum s3c_nand_clk_state clk_state;
>
> enum s3c_cpu_type cpu_type;
> -
> -#ifdef CONFIG_ARM_S3C24XX_CPUFREQ
> - struct notifier_block freq_transition;
> -#endif
> };
>
> struct s3c24XX_nand_devtype_data {
> @@ -711,54 +707,6 @@ static void s3c2440_nand_write_buf(struct nand_chip *this, const u_char *buf,
> }
> }
>
> -/* cpufreq driver support */
> -
> -#ifdef CONFIG_ARM_S3C24XX_CPUFREQ
> -
> -static int s3c2410_nand_cpufreq_transition(struct notifier_block *nb,
> - unsigned long val, void *data)
> -{
> - struct s3c2410_nand_info *info;
> - unsigned long newclk;
> -
> - info = container_of(nb, struct s3c2410_nand_info, freq_transition);
> - newclk = clk_get_rate(info->clk);
> -
> - if ((val == CPUFREQ_POSTCHANGE && newclk < info->clk_rate) ||
> - (val == CPUFREQ_PRECHANGE && newclk > info->clk_rate)) {
> - s3c2410_nand_setrate(info);
> - }
> -
> - return 0;
> -}
> -
> -static inline int s3c2410_nand_cpufreq_register(struct s3c2410_nand_info *info)
> -{
> - info->freq_transition.notifier_call = s3c2410_nand_cpufreq_transition;
> -
> - return cpufreq_register_notifier(&info->freq_transition,
> - CPUFREQ_TRANSITION_NOTIFIER);
> -}
> -
> -static inline void
> -s3c2410_nand_cpufreq_deregister(struct s3c2410_nand_info *info)
> -{
> - cpufreq_unregister_notifier(&info->freq_transition,
> - CPUFREQ_TRANSITION_NOTIFIER);
> -}
> -
> -#else
> -static inline int s3c2410_nand_cpufreq_register(struct s3c2410_nand_info *info)
> -{
> - return 0;
> -}
> -
> -static inline void
> -s3c2410_nand_cpufreq_deregister(struct s3c2410_nand_info *info)
> -{
> -}
> -#endif
> -
> /* device management functions */
>
> static int s3c24xx_nand_remove(struct platform_device *pdev)
> @@ -768,8 +716,6 @@ static int s3c24xx_nand_remove(struct platform_device *pdev)
> if (info == NULL)
> return 0;
>
> - s3c2410_nand_cpufreq_deregister(info);
> -
> /* Release all our mtds and their partitions, then go through
> * freeing the resources used
> */
> @@ -1184,12 +1130,6 @@ static int s3c24xx_nand_probe(struct platform_device *pdev)
> if (err != 0)
> goto exit_error;
>
> - err = s3c2410_nand_cpufreq_register(info);
> - if (err < 0) {
> - dev_err(&pdev->dev, "failed to init cpufreq support\n");
> - goto exit_error;
> - }
> -
> if (allow_clk_suspend(info)) {
> dev_info(&pdev->dev, "clock idle support enabled\n");
> s3c2410_nand_clk_set_state(info, CLOCK_SUSPEND);
> diff --git a/drivers/pinctrl/samsung/pinctrl-samsung.c b/drivers/pinctrl/samsung/pinctrl-samsung.c
> index bd13b5ef246d..1a478854293f 100644
> --- a/drivers/pinctrl/samsung/pinctrl-samsung.c
> +++ b/drivers/pinctrl/samsung/pinctrl-samsung.c
> @@ -1322,16 +1322,6 @@ static const struct of_device_id samsung_pinctrl_dt_match[] = {
> #ifdef CONFIG_PINCTRL_S3C64XX
> { .compatible = "samsung,s3c64xx-pinctrl",
> .data = &s3c64xx_of_data },
> -#endif
> -#ifdef CONFIG_PINCTRL_S3C24XX
> - { .compatible = "samsung,s3c2412-pinctrl",
> - .data = &s3c2412_of_data },
> - { .compatible = "samsung,s3c2416-pinctrl",
> - .data = &s3c2416_of_data },
> - { .compatible = "samsung,s3c2440-pinctrl",
> - .data = &s3c2440_of_data },
> - { .compatible = "samsung,s3c2450-pinctrl",
> - .data = &s3c2450_of_data },
> #endif
> {},
> };
> diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
> index 312dccfa3f18..d13ca620ea5d 100644
> --- a/drivers/rtc/Kconfig
> +++ b/drivers/rtc/Kconfig
> @@ -1406,18 +1406,14 @@ config RTC_DRV_OMAP
>
> config RTC_DRV_S3C
> tristate "Samsung S3C series SoC RTC"
> - depends on ARCH_EXYNOS || ARCH_S3C64XX || ARCH_S3C24XX || ARCH_S5PV210 || \
> + depends on ARCH_EXYNOS || ARCH_S3C64XX || ARCH_S5PV210 || \
> COMPILE_TEST
> help
> RTC (Realtime Clock) driver for the clock inbuilt into the
> - Samsung S3C24XX series of SoCs. This can provide periodic
> + Samsung S3C64XX series of SoCs. This can provide periodic
> interrupt rates from 1Hz to 64Hz for user programs, and
> wakeup from Alarm.
>
> - The driver currently supports the common features on all the
> - S3C24XX range, such as the S3C2410, S3C2412, S3C2413, S3C2440
> - and S3C2442.
> -
> This driver can also be build as a module. If so, the module
> will be called rtc-s3c.
>
> diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig
> index 434f83168546..3ba8a39655a3 100644
> --- a/drivers/tty/serial/Kconfig
> +++ b/drivers/tty/serial/Kconfig
> @@ -242,23 +242,23 @@ config SERIAL_SAMSUNG
> select SERIAL_CORE
> help
> Support for the on-chip UARTs on the Samsung
> - S3C24xx/S3C64xx/S5Pv210/Exynos and Apple M1 SoCs, providing
> + S3C64xx/S5Pv210/Exynos and Apple M1 SoCs, providing
> /dev/ttySAC0, 1 and 2 (note, some machines may not provide all of
> these ports, depending on how the serial port pins are configured.
> +
> Choose Y/M here only if you build for such SoC.
>
> config SERIAL_SAMSUNG_UARTS_4
> bool
> depends on SERIAL_SAMSUNG
> - default y if !(CPU_S3C2410 || CPU_S3C2412 || CPU_S3C2440 || CPU_S3C2442)
> + default y
> help
> Internal node for the common case of 4 Samsung compatible UARTs
>
> config SERIAL_SAMSUNG_UARTS
> int
> depends on SERIAL_SAMSUNG
> - default 4 if SERIAL_SAMSUNG_UARTS_4 || CPU_S3C2416
> - default 3
> + default 4
> help
> Select the number of available UART ports for the Samsung S3C
> serial driver
> diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c
> index 77d1363029f5..5adf3963b2f6 100644
> --- a/drivers/tty/serial/samsung_tty.c
> +++ b/drivers/tty/serial/samsung_tty.c
> @@ -152,10 +152,6 @@ struct s3c24xx_uart_port {
> const struct s3c2410_uartcfg *cfg;
>
> struct s3c24xx_uart_dma *dma;
> -
> -#ifdef CONFIG_ARM_S3C24XX_CPUFREQ
> - struct notifier_block freq_transition;
> -#endif
> };
>
> static void s3c24xx_serial_tx_chars(struct s3c24xx_uart_port *ourport);
> @@ -1859,93 +1855,6 @@ static void s3c24xx_serial_resetport(struct uart_port *port,
> udelay(1);
> }
>
> -#ifdef CONFIG_ARM_S3C24XX_CPUFREQ
> -
> -static int s3c24xx_serial_cpufreq_transition(struct notifier_block *nb,
> - unsigned long val, void *data)
> -{
> - struct s3c24xx_uart_port *port;
> - struct uart_port *uport;
> -
> - port = container_of(nb, struct s3c24xx_uart_port, freq_transition);
> - uport = &port->port;
> -
> - /* check to see if port is enabled */
> -
> - if (port->pm_level != 0)
> - return 0;
> -
> - /* try and work out if the baudrate is changing, we can detect
> - * a change in rate, but we do not have support for detecting
> - * a disturbance in the clock-rate over the change.
> - */
> -
> - if (IS_ERR(port->baudclk))
> - goto exit;
> -
> - if (port->baudclk_rate == clk_get_rate(port->baudclk))
> - goto exit;
> -
> - if (val == CPUFREQ_PRECHANGE) {
> - /* we should really shut the port down whilst the
> - * frequency change is in progress.
> - */
> -
> - } else if (val == CPUFREQ_POSTCHANGE) {
> - struct ktermios *termios;
> - struct tty_struct *tty;
> -
> - if (uport->state == NULL)
> - goto exit;
> -
> - tty = uport->state->port.tty;
> -
> - if (tty == NULL)
> - goto exit;
> -
> - termios = &tty->termios;
> -
> - if (termios == NULL) {
> - dev_warn(uport->dev, "%s: no termios?\n", __func__);
> - goto exit;
> - }
> -
> - s3c24xx_serial_set_termios(uport, termios, NULL);
> - }
> -
> -exit:
> - return 0;
> -}
> -
> -static inline int
> -s3c24xx_serial_cpufreq_register(struct s3c24xx_uart_port *port)
> -{
> - port->freq_transition.notifier_call = s3c24xx_serial_cpufreq_transition;
> -
> - return cpufreq_register_notifier(&port->freq_transition,
> - CPUFREQ_TRANSITION_NOTIFIER);
> -}
> -
> -static inline void
> -s3c24xx_serial_cpufreq_deregister(struct s3c24xx_uart_port *port)
> -{
> - cpufreq_unregister_notifier(&port->freq_transition,
> - CPUFREQ_TRANSITION_NOTIFIER);
> -}
> -
> -#else
> -static inline int
> -s3c24xx_serial_cpufreq_register(struct s3c24xx_uart_port *port)
> -{
> - return 0;
> -}
> -
> -static inline void
> -s3c24xx_serial_cpufreq_deregister(struct s3c24xx_uart_port *port)
> -{
> -}
> -#endif
> -
> static int s3c24xx_serial_enable_baudclk(struct s3c24xx_uart_port *ourport)
> {
> struct device *dev = ourport->port.dev;
> @@ -2237,10 +2146,6 @@ static int s3c24xx_serial_probe(struct platform_device *pdev)
> if (!IS_ERR(ourport->baudclk))
> clk_disable_unprepare(ourport->baudclk);
>
> - ret = s3c24xx_serial_cpufreq_register(ourport);
> - if (ret < 0)
> - dev_err(&pdev->dev, "failed to add cpufreq notifier\n");
> -
> probe_index++;
>
> return 0;
> @@ -2251,7 +2156,6 @@ static int s3c24xx_serial_remove(struct platform_device *dev)
> struct uart_port *port = s3c24xx_dev_to_port(&dev->dev);
>
> if (port) {
> - s3c24xx_serial_cpufreq_deregister(to_ourport(port));
> uart_remove_one_port(&s3c24xx_uart_drv, port);
> }
>
> @@ -2589,94 +2493,6 @@ static struct console s3c24xx_serial_console = {
> };
> #endif /* CONFIG_SERIAL_SAMSUNG_CONSOLE */
>
> -#ifdef CONFIG_CPU_S3C2410
> -static const struct s3c24xx_serial_drv_data s3c2410_serial_drv_data = {
> - .info = {
> - .name = "Samsung S3C2410 UART",
> - .type = TYPE_S3C24XX,
> - .port_type = PORT_S3C2410,
> - .fifosize = 16,
> - .rx_fifomask = S3C2410_UFSTAT_RXMASK,
> - .rx_fifoshift = S3C2410_UFSTAT_RXSHIFT,
> - .rx_fifofull = S3C2410_UFSTAT_RXFULL,
> - .tx_fifofull = S3C2410_UFSTAT_TXFULL,
> - .tx_fifomask = S3C2410_UFSTAT_TXMASK,
> - .tx_fifoshift = S3C2410_UFSTAT_TXSHIFT,
> - .def_clk_sel = S3C2410_UCON_CLKSEL0,
> - .num_clks = 2,
> - .clksel_mask = S3C2410_UCON_CLKMASK,
> - .clksel_shift = S3C2410_UCON_CLKSHIFT,
> - },
> - .def_cfg = {
> - .ucon = S3C2410_UCON_DEFAULT,
> - .ufcon = S3C2410_UFCON_DEFAULT,
> - },
> -};
> -#define S3C2410_SERIAL_DRV_DATA (&s3c2410_serial_drv_data)
> -#else
> -#define S3C2410_SERIAL_DRV_DATA NULL
> -#endif
> -
> -#ifdef CONFIG_CPU_S3C2412
> -static const struct s3c24xx_serial_drv_data s3c2412_serial_drv_data = {
> - .info = {
> - .name = "Samsung S3C2412 UART",
> - .type = TYPE_S3C24XX,
> - .port_type = PORT_S3C2412,
> - .fifosize = 64,
> - .has_divslot = 1,
> - .rx_fifomask = S3C2440_UFSTAT_RXMASK,
> - .rx_fifoshift = S3C2440_UFSTAT_RXSHIFT,
> - .rx_fifofull = S3C2440_UFSTAT_RXFULL,
> - .tx_fifofull = S3C2440_UFSTAT_TXFULL,
> - .tx_fifomask = S3C2440_UFSTAT_TXMASK,
> - .tx_fifoshift = S3C2440_UFSTAT_TXSHIFT,
> - .def_clk_sel = S3C2410_UCON_CLKSEL2,
> - .num_clks = 4,
> - .clksel_mask = S3C2412_UCON_CLKMASK,
> - .clksel_shift = S3C2412_UCON_CLKSHIFT,
> - },
> - .def_cfg = {
> - .ucon = S3C2410_UCON_DEFAULT,
> - .ufcon = S3C2410_UFCON_DEFAULT,
> - },
> -};
> -#define S3C2412_SERIAL_DRV_DATA (&s3c2412_serial_drv_data)
> -#else
> -#define S3C2412_SERIAL_DRV_DATA NULL
> -#endif
> -
> -#if defined(CONFIG_CPU_S3C2440) || defined(CONFIG_CPU_S3C2416) || \
> - defined(CONFIG_CPU_S3C2443) || defined(CONFIG_CPU_S3C2442)
> -static const struct s3c24xx_serial_drv_data s3c2440_serial_drv_data = {
> - .info = {
> - .name = "Samsung S3C2440 UART",
> - .type = TYPE_S3C24XX,
> - .port_type = PORT_S3C2440,
> - .fifosize = 64,
> - .has_divslot = 1,
> - .rx_fifomask = S3C2440_UFSTAT_RXMASK,
> - .rx_fifoshift = S3C2440_UFSTAT_RXSHIFT,
> - .rx_fifofull = S3C2440_UFSTAT_RXFULL,
> - .tx_fifofull = S3C2440_UFSTAT_TXFULL,
> - .tx_fifomask = S3C2440_UFSTAT_TXMASK,
> - .tx_fifoshift = S3C2440_UFSTAT_TXSHIFT,
> - .def_clk_sel = S3C2410_UCON_CLKSEL2,
> - .num_clks = 4,
> - .clksel_mask = S3C2412_UCON_CLKMASK,
> - .clksel_shift = S3C2412_UCON_CLKSHIFT,
> - .ucon_mask = S3C2440_UCON0_DIVMASK,
> - },
> - .def_cfg = {
> - .ucon = S3C2410_UCON_DEFAULT,
> - .ufcon = S3C2410_UFCON_DEFAULT,
> - },
> -};
> -#define S3C2440_SERIAL_DRV_DATA (&s3c2440_serial_drv_data)
> -#else
> -#define S3C2440_SERIAL_DRV_DATA NULL
> -#endif
> -
> #if defined(CONFIG_CPU_S3C6400) || defined(CONFIG_CPU_S3C6410)
> static const struct s3c24xx_serial_drv_data s3c6400_serial_drv_data = {
> .info = {
> @@ -2845,15 +2661,6 @@ static const struct s3c24xx_serial_drv_data artpec8_serial_drv_data = {
>
> static const struct platform_device_id s3c24xx_serial_driver_ids[] = {
> {
> - .name = "s3c2410-uart",
> - .driver_data = (kernel_ulong_t)S3C2410_SERIAL_DRV_DATA,
> - }, {
> - .name = "s3c2412-uart",
> - .driver_data = (kernel_ulong_t)S3C2412_SERIAL_DRV_DATA,
> - }, {
> - .name = "s3c2440-uart",
> - .driver_data = (kernel_ulong_t)S3C2440_SERIAL_DRV_DATA,
> - }, {
> .name = "s3c6400-uart",
> .driver_data = (kernel_ulong_t)S3C6400_SERIAL_DRV_DATA,
> }, {
> @@ -2881,12 +2688,6 @@ MODULE_DEVICE_TABLE(platform, s3c24xx_serial_driver_ids);
>
> #ifdef CONFIG_OF
> static const struct of_device_id s3c24xx_uart_dt_match[] = {
> - { .compatible = "samsung,s3c2410-uart",
> - .data = S3C2410_SERIAL_DRV_DATA },
> - { .compatible = "samsung,s3c2412-uart",
> - .data = S3C2412_SERIAL_DRV_DATA },
> - { .compatible = "samsung,s3c2440-uart",
> - .data = S3C2440_SERIAL_DRV_DATA },
> { .compatible = "samsung,s3c6400-uart",
> .data = S3C6400_SERIAL_DRV_DATA },
> { .compatible = "samsung,s5pv210-uart",
> diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
> index fb7b603dddf8..8ba4fe9364b1 100644
> --- a/drivers/usb/host/Kconfig
> +++ b/drivers/usb/host/Kconfig
> @@ -443,12 +443,12 @@ config USB_OHCI_HCD_STI
> STMicroelectronics consumer electronics SoC's.
>
> config USB_OHCI_HCD_S3C2410
> - tristate "OHCI support for Samsung S3C24xx/S3C64xx SoC series"
> - depends on USB_OHCI_HCD && (ARCH_S3C24XX || ARCH_S3C64XX || COMPILE_TEST)
> - default y if (ARCH_S3C24XX || ARCH_S3C64XX)
> + tristate "OHCI support for Samsung S3C64xx SoC series"
> + depends on USB_OHCI_HCD && (ARCH_S3C64XX || COMPILE_TEST)
> + default ARCH_S3C64XX
> help
> Enables support for the on-chip OHCI controller on
> - S3C24xx/S3C64xx chips.
> + S3C64xx chips.
>
> config USB_OHCI_HCD_LPC32XX
> tristate "Support for LPC on-chip OHCI USB controller"
> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
> index b64bc49c7f30..eee7df45347a 100644
> --- a/drivers/watchdog/Kconfig
> +++ b/drivers/watchdog/Kconfig
> @@ -491,14 +491,13 @@ config IXP4XX_WATCHDOG
> Say N if you are unsure.
>
> config S3C2410_WATCHDOG
> - tristate "S3C2410 Watchdog"
> - depends on ARCH_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210 || ARCH_EXYNOS || \
> - COMPILE_TEST
> + tristate "S3C6410/S5Pv210/Exynos Watchdog"
> + depends on ARCH_S3C64XX || ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST
> select WATCHDOG_CORE
> select MFD_SYSCON if ARCH_EXYNOS
> help
> - Watchdog timer block in the Samsung S3C24xx, S3C64xx, S5Pv210 and
> - Exynos SoCs. This will reboot the system when the timer expires with
> + Watchdog timer block in the Samsung S3C64xx, S5Pv210 and Exynos
> + SoCs. This will reboot the system when the timer expires with
> the watchdog enabled.
>
> The driver is limited by the speed of the system's PCLK
> diff --git a/drivers/watchdog/s3c2410_wdt.c b/drivers/watchdog/s3c2410_wdt.c
> index d3fc8ed886ff..200ba236a72e 100644
> --- a/drivers/watchdog/s3c2410_wdt.c
> +++ b/drivers/watchdog/s3c2410_wdt.c
> @@ -562,73 +562,6 @@ static irqreturn_t s3c2410wdt_irq(int irqno, void *param)
> return IRQ_HANDLED;
> }
>
> -#ifdef CONFIG_ARM_S3C24XX_CPUFREQ
> -
> -static int s3c2410wdt_cpufreq_transition(struct notifier_block *nb,
> - unsigned long val, void *data)
> -{
> - int ret;
> - struct s3c2410_wdt *wdt = freq_to_wdt(nb);
> -
> - if (!s3c2410wdt_is_running(wdt))
> - goto done;
> -
> - if (val == CPUFREQ_PRECHANGE) {
> - /* To ensure that over the change we don't cause the
> - * watchdog to trigger, we perform an keep-alive if
> - * the watchdog is running.
> - */
> -
> - s3c2410wdt_keepalive(&wdt->wdt_device);
> - } else if (val == CPUFREQ_POSTCHANGE) {
> - s3c2410wdt_stop(&wdt->wdt_device);
> -
> - ret = s3c2410wdt_set_heartbeat(&wdt->wdt_device,
> - wdt->wdt_device.timeout);
> -
> - if (ret >= 0)
> - s3c2410wdt_start(&wdt->wdt_device);
> - else
> - goto err;
> - }
> -
> -done:
> - return 0;
> -
> - err:
> - dev_err(wdt->dev, "cannot set new value for timeout %d\n",
> - wdt->wdt_device.timeout);
> - return ret;
> -}
> -
> -static inline int s3c2410wdt_cpufreq_register(struct s3c2410_wdt *wdt)
> -{
> - wdt->freq_transition.notifier_call = s3c2410wdt_cpufreq_transition;
> -
> - return cpufreq_register_notifier(&wdt->freq_transition,
> - CPUFREQ_TRANSITION_NOTIFIER);
> -}
> -
> -static inline void s3c2410wdt_cpufreq_deregister(struct s3c2410_wdt *wdt)
> -{
> - wdt->freq_transition.notifier_call = s3c2410wdt_cpufreq_transition;
> -
> - cpufreq_unregister_notifier(&wdt->freq_transition,
> - CPUFREQ_TRANSITION_NOTIFIER);
> -}
> -
> -#else
> -
> -static inline int s3c2410wdt_cpufreq_register(struct s3c2410_wdt *wdt)
> -{
> - return 0;
> -}
> -
> -static inline void s3c2410wdt_cpufreq_deregister(struct s3c2410_wdt *wdt)
> -{
> -}
> -#endif
> -
> static inline unsigned int s3c2410wdt_get_bootstatus(struct s3c2410_wdt *wdt)
> {
> unsigned int rst_stat;
> @@ -761,12 +694,6 @@ static int s3c2410wdt_probe(struct platform_device *pdev)
> wdt->wdt_device.min_timeout = 1;
> wdt->wdt_device.max_timeout = s3c2410wdt_max_timeout(wdt);
>
> - ret = s3c2410wdt_cpufreq_register(wdt);
> - if (ret < 0) {
> - dev_err(dev, "failed to register cpufreq\n");
> - goto err_src_clk;
> - }
> -
> watchdog_set_drvdata(&wdt->wdt_device, wdt);
>
> /* see if we can actually set the requested timer margin, and if
> @@ -783,7 +710,7 @@ static int s3c2410wdt_probe(struct platform_device *pdev)
> S3C2410_WATCHDOG_DEFAULT_TIME);
> } else {
> dev_err(dev, "failed to use default timeout\n");
> - goto err_cpufreq;
> + goto err_src_clk;
> }
> }
>
> @@ -791,7 +718,7 @@ static int s3c2410wdt_probe(struct platform_device *pdev)
> pdev->name, pdev);
> if (ret != 0) {
> dev_err(dev, "failed to install irq (%d)\n", ret);
> - goto err_cpufreq;
> + goto err_src_clk;
> }
>
> watchdog_set_nowayout(&wdt->wdt_device, nowayout);
> @@ -817,7 +744,7 @@ static int s3c2410wdt_probe(struct platform_device *pdev)
>
> ret = watchdog_register_device(&wdt->wdt_device);
> if (ret)
> - goto err_cpufreq;
> + goto err_src_clk;
>
> ret = s3c2410wdt_enable(wdt, true);
> if (ret < 0)
> @@ -839,9 +766,6 @@ static int s3c2410wdt_probe(struct platform_device *pdev)
> err_unregister:
> watchdog_unregister_device(&wdt->wdt_device);
>
> - err_cpufreq:
> - s3c2410wdt_cpufreq_deregister(wdt);
> -
> err_src_clk:
> clk_disable_unprepare(wdt->src_clk);
>
> @@ -862,8 +786,6 @@ static int s3c2410wdt_remove(struct platform_device *dev)
>
> watchdog_unregister_device(&wdt->wdt_device);
>
> - s3c2410wdt_cpufreq_deregister(wdt);
> -
> clk_disable_unprepare(wdt->src_clk);
> clk_disable_unprepare(wdt->bus_clk);
>
> diff --git a/include/linux/clk/samsung.h b/include/linux/clk/samsung.h
> index 38b774001712..0cf7aac83439 100644
> --- a/include/linux/clk/samsung.h
> +++ b/include/linux/clk/samsung.h
> @@ -21,36 +21,4 @@ static inline void s3c64xx_clk_init(struct device_node *np,
> bool s3c6400, void __iomem *base) { }
> #endif /* CONFIG_S3C64XX_COMMON_CLK */
>
> -#ifdef CONFIG_S3C2410_COMMON_CLK
> -void s3c2410_common_clk_init(struct device_node *np, unsigned long xti_f,
> - int current_soc,
> - void __iomem *reg_base);
> -#else
> -static inline void s3c2410_common_clk_init(struct device_node *np,
> - unsigned long xti_f,
> - int current_soc,
> - void __iomem *reg_base) { }
> -#endif /* CONFIG_S3C2410_COMMON_CLK */
> -
> -#ifdef CONFIG_S3C2412_COMMON_CLK
> -void s3c2412_common_clk_init(struct device_node *np, unsigned long xti_f,
> - unsigned long ext_f, void __iomem *reg_base);
> -#else
> -static inline void s3c2412_common_clk_init(struct device_node *np,
> - unsigned long xti_f,
> - unsigned long ext_f,
> - void __iomem *reg_base) { }
> -#endif /* CONFIG_S3C2412_COMMON_CLK */
> -
> -#ifdef CONFIG_S3C2443_COMMON_CLK
> -void s3c2443_common_clk_init(struct device_node *np, unsigned long xti_f,
> - int current_soc,
> - void __iomem *reg_base);
> -#else
> -static inline void s3c2443_common_clk_init(struct device_node *np,
> - unsigned long xti_f,
> - int current_soc,
> - void __iomem *reg_base) { }
> -#endif /* CONFIG_S3C2443_COMMON_CLK */
> -
> #endif /* __LINUX_CLK_SAMSUNG_H_ */
> diff --git a/include/linux/soc/samsung/s3c-pm.h b/include/linux/soc/samsung/s3c-pm.h
> index f9164559c99f..5b23d85d20ab 100644
> --- a/include/linux/soc/samsung/s3c-pm.h
> +++ b/include/linux/soc/samsung/s3c-pm.h
> @@ -14,58 +14,10 @@
>
> /* PM debug functions */
>
> -/**
> - * struct pm_uart_save - save block for core UART
> - * @ulcon: Save value for S3C2410_ULCON
> - * @ucon: Save value for S3C2410_UCON
> - * @ufcon: Save value for S3C2410_UFCON
> - * @umcon: Save value for S3C2410_UMCON
> - * @ubrdiv: Save value for S3C2410_UBRDIV
> - *
> - * Save block for UART registers to be held over sleep and restored if they
> - * are needed (say by debug).
> -*/
> -struct pm_uart_save {
> - u32 ulcon;
> - u32 ucon;
> - u32 ufcon;
> - u32 umcon;
> - u32 ubrdiv;
> - u32 udivslot;
> -};
> -
> -#ifdef CONFIG_SAMSUNG_PM_DEBUG
> -/**
> - * s3c_pm_dbg() - low level debug function for use in suspend/resume.
> - * @msg: The message to print.
> - *
> - * This function is used mainly to debug the resume process before the system
> - * can rely on printk/console output. It uses the low-level debugging output
> - * routine printascii() to do its work.
> - */
> -extern void s3c_pm_dbg(const char *msg, ...);
> -
> -#define S3C_PMDBG(fmt...) s3c_pm_dbg(fmt)
> -
> -extern void s3c_pm_save_uarts(bool is_s3c24xx);
> -extern void s3c_pm_restore_uarts(bool is_s3c24xx);
> -
> -#ifdef CONFIG_ARCH_S3C64XX
> -extern void s3c_pm_arch_update_uart(void __iomem *regs,
> - struct pm_uart_save *save);
> -#else
> -static inline void
> -s3c_pm_arch_update_uart(void __iomem *regs, struct pm_uart_save *save)
> -{
> -}
> -#endif
> -
> -#else
> #define S3C_PMDBG(fmt...) pr_debug(fmt)
>
> static inline void s3c_pm_save_uarts(bool is_s3c24xx) { }
> static inline void s3c_pm_restore_uarts(bool is_s3c24xx) { }
> -#endif
>
> /* suspend memory checking */
>
> @@ -81,14 +33,4 @@ extern void s3c_pm_check_store(void);
> #define s3c_pm_check_store() do { } while (0)
> #endif
>
> -/* system device subsystems */
> -
> -extern struct bus_type s3c2410_subsys;
> -extern struct bus_type s3c2410a_subsys;
> -extern struct bus_type s3c2412_subsys;
> -extern struct bus_type s3c2416_subsys;
> -extern struct bus_type s3c2440_subsys;
> -extern struct bus_type s3c2442_subsys;
> -extern struct bus_type s3c2443_subsys;
> -
> #endif
> --
> 2.29.2
>
Quoting Arnd Bergmann (2022-10-21 13:27:35)
> From: Arnd Bergmann <arnd@arndb.de>
>
> A number of device drivers reference CONFIG_ARM_S3C24XX_CPUFREQ or
> similar symbols that are no longer available with the platform gone,
> though the drivers themselves are still used on newer platforms,
> so remove these hacks.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
Acked-by: Stephen Boyd <sboyd@kernel.org> # clk
@@ -28,16 +28,6 @@
and \rd, \rd, #S3C2410_UFSTAT_TXMASK
.endm
-/* Select the correct implementation depending on the configuration. The
- * S3C2440 will get selected by default, as these are the most widely
- * used variants of these
-*/
-
-#if defined(CONFIG_DEBUG_S3C2410_UART)
-#define fifo_full fifo_full_s3c2410
-#define fifo_level fifo_level_s3c2410
-#endif
-
/* include the reset of the code which will do the work */
#include <debug/samsung.S>
@@ -2,9 +2,7 @@
#
# Copyright 2009 Simtec Electronics
-ifdef CONFIG_ARCH_S3C64XX
include $(src)/Makefile.s3c64xx
-endif
# Objects we always build independent of SoC choice
@@ -29,7 +29,6 @@
#include <linux/sizes.h>
#include <linux/platform_data/s3c-hsudc.h>
#include <linux/platform_data/s3c-hsotg.h>
-#include <linux/platform_data/dma-s3c24xx.h>
#include <linux/platform_data/media/s5p_hdmi.h>
@@ -1,9 +1,2 @@
/* SPDX-License-Identifier: GPL-2.0 */
-
-#ifdef CONFIG_ARCH_S3C24XX
-#include "dma-s3c24xx.h"
-#endif
-
-#ifdef CONFIG_ARCH_S3C64XX
#include "dma-s3c64xx.h"
-#endif
@@ -1,9 +1,2 @@
/* SPDX-License-Identifier: GPL-2.0 */
-
-#ifdef CONFIG_ARCH_S3C24XX
-#include "gpio-samsung-s3c24xx.h"
-#endif
-
-#ifdef CONFIG_ARCH_S3C64XX
#include "gpio-samsung-s3c64xx.h"
-#endif
@@ -1,9 +1,2 @@
/* SPDX-License-Identifier: GPL-2.0 */
-
-#ifdef CONFIG_ARCH_S3C24XX
-#include "irqs-s3c24xx.h"
-#endif
-
-#ifdef CONFIG_ARCH_S3C64XX
#include "irqs-s3c64xx.h"
-#endif
@@ -1,9 +1,2 @@
/* SPDX-License-Identifier: GPL-2.0 */
-
-#ifdef CONFIG_ARCH_S3C24XX
-#include "map-s3c24xx.h"
-#endif
-
-#ifdef CONFIG_ARCH_S3C64XX
#include "map-s3c64xx.h"
-#endif
@@ -1,9 +1,2 @@
/* SPDX-License-Identifier: GPL-2.0 */
-
-#ifdef CONFIG_ARCH_S3C24XX
-#include "pm-core-s3c24xx.h"
-#endif
-
-#ifdef CONFIG_ARCH_S3C64XX
#include "pm-core-s3c64xx.h"
-#endif
@@ -1,9 +1,2 @@
/* SPDX-License-Identifier: GPL-2.0 */
-
-#ifdef CONFIG_ARCH_S3C24XX
-#include "regs-clock-s3c24xx.h"
-#endif
-
-#ifdef CONFIG_ARCH_S3C64XX
#include "regs-clock-s3c64xx.h"
-#endif
@@ -1,9 +1,2 @@
/* SPDX-License-Identifier: GPL-2.0 */
-
-#ifdef CONFIG_ARCH_S3C24XX
-#include "regs-gpio-s3c24xx.h"
-#endif
-
-#ifdef CONFIG_ARCH_S3C64XX
#include "regs-gpio-s3c64xx.h"
-#endif
@@ -1,9 +1,2 @@
/* SPDX-License-Identifier: GPL-2.0 */
-
-#ifdef CONFIG_ARCH_S3C24XX
-#include "regs-irq-s3c24xx.h"
-#endif
-
-#ifdef CONFIG_ARCH_S3C64XX
#include "regs-irq-s3c64xx.h"
-#endif
@@ -441,7 +441,7 @@ config CLKSRC_EXYNOS_MCT
config CLKSRC_SAMSUNG_PWM
bool "PWM timer driver for Samsung S3C, S5P" if COMPILE_TEST
depends on HAS_IOMEM
- depends on ARCH_EXYNOS || ARCH_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210 || COMPILE_TEST
+ depends on ARCH_EXYNOS || ARCH_S3C64XX || ARCH_S5PV210 || COMPILE_TEST
help
This is a new clocksource driver for the PWM timer found in
Samsung S3C, S5P and Exynos SoCs, replacing an earlier driver
@@ -1009,8 +1009,7 @@ config I2C_RZV2M
config I2C_S3C2410
tristate "S3C/Exynos I2C Driver"
- depends on ARCH_EXYNOS || ARCH_S3C24XX || ARCH_S3C64XX || \
- ARCH_S5PV210 || COMPILE_TEST
+ depends on ARCH_EXYNOS || ARCH_S3C64XX || ARCH_S5PV210 || COMPILE_TEST
help
Say Y here to include support for I2C controller in the
Samsung SoCs (S3C, S5Pv210, Exynos).
@@ -116,9 +116,6 @@ struct s3c24xx_i2c {
struct s3c2410_platform_i2c *pdata;
struct gpio_desc *gpios[2];
struct pinctrl *pctrl;
-#if defined(CONFIG_ARM_S3C24XX_CPUFREQ)
- struct notifier_block freq_transition;
-#endif
struct regmap *sysreg;
unsigned int sys_i2c_cfg;
};
@@ -885,65 +882,6 @@ static int s3c24xx_i2c_clockrate(struct s3c24xx_i2c *i2c, unsigned int *got)
return 0;
}
-#if defined(CONFIG_ARM_S3C24XX_CPUFREQ)
-
-#define freq_to_i2c(_n) container_of(_n, struct s3c24xx_i2c, freq_transition)
-
-static int s3c24xx_i2c_cpufreq_transition(struct notifier_block *nb,
- unsigned long val, void *data)
-{
- struct s3c24xx_i2c *i2c = freq_to_i2c(nb);
- unsigned int got;
- int delta_f;
- int ret;
-
- delta_f = clk_get_rate(i2c->clk) - i2c->clkrate;
-
- /* if we're post-change and the input clock has slowed down
- * or at pre-change and the clock is about to speed up, then
- * adjust our clock rate. <0 is slow, >0 speedup.
- */
-
- if ((val == CPUFREQ_POSTCHANGE && delta_f < 0) ||
- (val == CPUFREQ_PRECHANGE && delta_f > 0)) {
- i2c_lock_bus(&i2c->adap, I2C_LOCK_ROOT_ADAPTER);
- ret = s3c24xx_i2c_clockrate(i2c, &got);
- i2c_unlock_bus(&i2c->adap, I2C_LOCK_ROOT_ADAPTER);
-
- if (ret < 0)
- dev_err(i2c->dev, "cannot find frequency (%d)\n", ret);
- else
- dev_info(i2c->dev, "setting freq %d\n", got);
- }
-
- return 0;
-}
-
-static inline int s3c24xx_i2c_register_cpufreq(struct s3c24xx_i2c *i2c)
-{
- i2c->freq_transition.notifier_call = s3c24xx_i2c_cpufreq_transition;
-
- return cpufreq_register_notifier(&i2c->freq_transition,
- CPUFREQ_TRANSITION_NOTIFIER);
-}
-
-static inline void s3c24xx_i2c_deregister_cpufreq(struct s3c24xx_i2c *i2c)
-{
- cpufreq_unregister_notifier(&i2c->freq_transition,
- CPUFREQ_TRANSITION_NOTIFIER);
-}
-
-#else
-static inline int s3c24xx_i2c_register_cpufreq(struct s3c24xx_i2c *i2c)
-{
- return 0;
-}
-
-static inline void s3c24xx_i2c_deregister_cpufreq(struct s3c24xx_i2c *i2c)
-{
-}
-#endif
-
#ifdef CONFIG_OF
static int s3c24xx_i2c_parse_dt_gpio(struct s3c24xx_i2c *i2c)
{
@@ -1152,13 +1090,6 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
}
}
- ret = s3c24xx_i2c_register_cpufreq(i2c);
- if (ret < 0) {
- dev_err(&pdev->dev, "failed to register cpufreq notifier\n");
- clk_unprepare(i2c->clk);
- return ret;
- }
-
/*
* Note, previous versions of the driver used i2c_add_adapter()
* to add the bus at any number. We now pass the bus number via
@@ -1175,7 +1106,6 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
ret = i2c_add_numbered_adapter(&i2c->adap);
if (ret < 0) {
pm_runtime_disable(&pdev->dev);
- s3c24xx_i2c_deregister_cpufreq(i2c);
clk_unprepare(i2c->clk);
return ret;
}
@@ -1192,8 +1122,6 @@ static int s3c24xx_i2c_remove(struct platform_device *pdev)
pm_runtime_disable(&pdev->dev);
- s3c24xx_i2c_deregister_cpufreq(i2c);
-
i2c_del_adapter(&i2c->adap);
return 0;
@@ -437,11 +437,11 @@ config EP93XX_ADC
config EXYNOS_ADC
tristate "Exynos ADC driver support"
- depends on ARCH_EXYNOS || ARCH_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210 || (OF && COMPILE_TEST)
+ depends on ARCH_EXYNOS || ARCH_S3C64XX || ARCH_S5PV210 || (OF && COMPILE_TEST)
depends on HAS_IOMEM
help
- Driver for the ADC block found in the Samsung S3C (S3C2410, S3C2416,
- S3C2440, S3C2443, S3C6410), S5Pv210 and Exynos SoCs.
+ Driver for the ADC block found in the Samsung S3C6410, S5Pv210 and
+ Exynos SoCs.
Choose Y here only if you build for such Samsung SoC.
To compile this driver as a module, choose M here: the module will be
@@ -1,15 +1,15 @@
# SPDX-License-Identifier: GPL-2.0-only
config VIDEO_S3C_CAMIF
- tristate "Samsung S3C24XX/S3C64XX SoC Camera Interface driver"
+ tristate "Samsung 3C64XX SoC Camera Interface driver"
depends on V4L_PLATFORM_DRIVERS
depends on VIDEO_DEV && I2C && PM
- depends on ARCH_S3C64XX || PLAT_S3C24XX || COMPILE_TEST
+ depends on ARCH_S3C64XX || COMPILE_TEST
select MEDIA_CONTROLLER
select VIDEO_V4L2_SUBDEV_API
select VIDEOBUF2_DMA_CONTIG
help
- This is a v4l2 driver for s3c24xx and s3c64xx SoC series camera
- host interface (CAMIF).
+ This is a v4l2 driver for s3c64xx SoC series camera host interface
+ (CAMIF).
To compile this driver as a module, choose M here: the module
will be called s3c-camif.
@@ -312,9 +312,8 @@ config MMC_SDHCI_S3C
depends on PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST
help
This selects the Secure Digital Host Controller Interface (SDHCI)
- often referrered to as the HSMMC block in some of the Samsung S3C
- (S3C2416, S3C2443, S3C6410), S5Pv210 and Exynos (Exynso4210,
- Exynos4412) SoCs.
+ often referrered to as the HSMMC block in some of the Samsung
+ S3C6410, S5Pv210 and Exynos (Exynso4210, Exynos4412) SoCs.
If you have a controller with this interface (thereforeyou build for
such Samsung SoC), say Y or M here.
@@ -79,7 +79,7 @@ config MTD_NAND_NDFC
config MTD_NAND_S3C2410
tristate "Samsung S3C NAND controller"
- depends on ARCH_S3C24XX || ARCH_S3C64XX
+ depends on ARCH_S3C64XX
help
This enables the NAND flash controller on the S3C24xx and S3C64xx
SoCs
@@ -166,10 +166,6 @@ struct s3c2410_nand_info {
enum s3c_nand_clk_state clk_state;
enum s3c_cpu_type cpu_type;
-
-#ifdef CONFIG_ARM_S3C24XX_CPUFREQ
- struct notifier_block freq_transition;
-#endif
};
struct s3c24XX_nand_devtype_data {
@@ -711,54 +707,6 @@ static void s3c2440_nand_write_buf(struct nand_chip *this, const u_char *buf,
}
}
-/* cpufreq driver support */
-
-#ifdef CONFIG_ARM_S3C24XX_CPUFREQ
-
-static int s3c2410_nand_cpufreq_transition(struct notifier_block *nb,
- unsigned long val, void *data)
-{
- struct s3c2410_nand_info *info;
- unsigned long newclk;
-
- info = container_of(nb, struct s3c2410_nand_info, freq_transition);
- newclk = clk_get_rate(info->clk);
-
- if ((val == CPUFREQ_POSTCHANGE && newclk < info->clk_rate) ||
- (val == CPUFREQ_PRECHANGE && newclk > info->clk_rate)) {
- s3c2410_nand_setrate(info);
- }
-
- return 0;
-}
-
-static inline int s3c2410_nand_cpufreq_register(struct s3c2410_nand_info *info)
-{
- info->freq_transition.notifier_call = s3c2410_nand_cpufreq_transition;
-
- return cpufreq_register_notifier(&info->freq_transition,
- CPUFREQ_TRANSITION_NOTIFIER);
-}
-
-static inline void
-s3c2410_nand_cpufreq_deregister(struct s3c2410_nand_info *info)
-{
- cpufreq_unregister_notifier(&info->freq_transition,
- CPUFREQ_TRANSITION_NOTIFIER);
-}
-
-#else
-static inline int s3c2410_nand_cpufreq_register(struct s3c2410_nand_info *info)
-{
- return 0;
-}
-
-static inline void
-s3c2410_nand_cpufreq_deregister(struct s3c2410_nand_info *info)
-{
-}
-#endif
-
/* device management functions */
static int s3c24xx_nand_remove(struct platform_device *pdev)
@@ -768,8 +716,6 @@ static int s3c24xx_nand_remove(struct platform_device *pdev)
if (info == NULL)
return 0;
- s3c2410_nand_cpufreq_deregister(info);
-
/* Release all our mtds and their partitions, then go through
* freeing the resources used
*/
@@ -1184,12 +1130,6 @@ static int s3c24xx_nand_probe(struct platform_device *pdev)
if (err != 0)
goto exit_error;
- err = s3c2410_nand_cpufreq_register(info);
- if (err < 0) {
- dev_err(&pdev->dev, "failed to init cpufreq support\n");
- goto exit_error;
- }
-
if (allow_clk_suspend(info)) {
dev_info(&pdev->dev, "clock idle support enabled\n");
s3c2410_nand_clk_set_state(info, CLOCK_SUSPEND);
@@ -1322,16 +1322,6 @@ static const struct of_device_id samsung_pinctrl_dt_match[] = {
#ifdef CONFIG_PINCTRL_S3C64XX
{ .compatible = "samsung,s3c64xx-pinctrl",
.data = &s3c64xx_of_data },
-#endif
-#ifdef CONFIG_PINCTRL_S3C24XX
- { .compatible = "samsung,s3c2412-pinctrl",
- .data = &s3c2412_of_data },
- { .compatible = "samsung,s3c2416-pinctrl",
- .data = &s3c2416_of_data },
- { .compatible = "samsung,s3c2440-pinctrl",
- .data = &s3c2440_of_data },
- { .compatible = "samsung,s3c2450-pinctrl",
- .data = &s3c2450_of_data },
#endif
{},
};
@@ -1406,18 +1406,14 @@ config RTC_DRV_OMAP
config RTC_DRV_S3C
tristate "Samsung S3C series SoC RTC"
- depends on ARCH_EXYNOS || ARCH_S3C64XX || ARCH_S3C24XX || ARCH_S5PV210 || \
+ depends on ARCH_EXYNOS || ARCH_S3C64XX || ARCH_S5PV210 || \
COMPILE_TEST
help
RTC (Realtime Clock) driver for the clock inbuilt into the
- Samsung S3C24XX series of SoCs. This can provide periodic
+ Samsung S3C64XX series of SoCs. This can provide periodic
interrupt rates from 1Hz to 64Hz for user programs, and
wakeup from Alarm.
- The driver currently supports the common features on all the
- S3C24XX range, such as the S3C2410, S3C2412, S3C2413, S3C2440
- and S3C2442.
-
This driver can also be build as a module. If so, the module
will be called rtc-s3c.
@@ -242,23 +242,23 @@ config SERIAL_SAMSUNG
select SERIAL_CORE
help
Support for the on-chip UARTs on the Samsung
- S3C24xx/S3C64xx/S5Pv210/Exynos and Apple M1 SoCs, providing
+ S3C64xx/S5Pv210/Exynos and Apple M1 SoCs, providing
/dev/ttySAC0, 1 and 2 (note, some machines may not provide all of
these ports, depending on how the serial port pins are configured.
+
Choose Y/M here only if you build for such SoC.
config SERIAL_SAMSUNG_UARTS_4
bool
depends on SERIAL_SAMSUNG
- default y if !(CPU_S3C2410 || CPU_S3C2412 || CPU_S3C2440 || CPU_S3C2442)
+ default y
help
Internal node for the common case of 4 Samsung compatible UARTs
config SERIAL_SAMSUNG_UARTS
int
depends on SERIAL_SAMSUNG
- default 4 if SERIAL_SAMSUNG_UARTS_4 || CPU_S3C2416
- default 3
+ default 4
help
Select the number of available UART ports for the Samsung S3C
serial driver
@@ -152,10 +152,6 @@ struct s3c24xx_uart_port {
const struct s3c2410_uartcfg *cfg;
struct s3c24xx_uart_dma *dma;
-
-#ifdef CONFIG_ARM_S3C24XX_CPUFREQ
- struct notifier_block freq_transition;
-#endif
};
static void s3c24xx_serial_tx_chars(struct s3c24xx_uart_port *ourport);
@@ -1859,93 +1855,6 @@ static void s3c24xx_serial_resetport(struct uart_port *port,
udelay(1);
}
-#ifdef CONFIG_ARM_S3C24XX_CPUFREQ
-
-static int s3c24xx_serial_cpufreq_transition(struct notifier_block *nb,
- unsigned long val, void *data)
-{
- struct s3c24xx_uart_port *port;
- struct uart_port *uport;
-
- port = container_of(nb, struct s3c24xx_uart_port, freq_transition);
- uport = &port->port;
-
- /* check to see if port is enabled */
-
- if (port->pm_level != 0)
- return 0;
-
- /* try and work out if the baudrate is changing, we can detect
- * a change in rate, but we do not have support for detecting
- * a disturbance in the clock-rate over the change.
- */
-
- if (IS_ERR(port->baudclk))
- goto exit;
-
- if (port->baudclk_rate == clk_get_rate(port->baudclk))
- goto exit;
-
- if (val == CPUFREQ_PRECHANGE) {
- /* we should really shut the port down whilst the
- * frequency change is in progress.
- */
-
- } else if (val == CPUFREQ_POSTCHANGE) {
- struct ktermios *termios;
- struct tty_struct *tty;
-
- if (uport->state == NULL)
- goto exit;
-
- tty = uport->state->port.tty;
-
- if (tty == NULL)
- goto exit;
-
- termios = &tty->termios;
-
- if (termios == NULL) {
- dev_warn(uport->dev, "%s: no termios?\n", __func__);
- goto exit;
- }
-
- s3c24xx_serial_set_termios(uport, termios, NULL);
- }
-
-exit:
- return 0;
-}
-
-static inline int
-s3c24xx_serial_cpufreq_register(struct s3c24xx_uart_port *port)
-{
- port->freq_transition.notifier_call = s3c24xx_serial_cpufreq_transition;
-
- return cpufreq_register_notifier(&port->freq_transition,
- CPUFREQ_TRANSITION_NOTIFIER);
-}
-
-static inline void
-s3c24xx_serial_cpufreq_deregister(struct s3c24xx_uart_port *port)
-{
- cpufreq_unregister_notifier(&port->freq_transition,
- CPUFREQ_TRANSITION_NOTIFIER);
-}
-
-#else
-static inline int
-s3c24xx_serial_cpufreq_register(struct s3c24xx_uart_port *port)
-{
- return 0;
-}
-
-static inline void
-s3c24xx_serial_cpufreq_deregister(struct s3c24xx_uart_port *port)
-{
-}
-#endif
-
static int s3c24xx_serial_enable_baudclk(struct s3c24xx_uart_port *ourport)
{
struct device *dev = ourport->port.dev;
@@ -2237,10 +2146,6 @@ static int s3c24xx_serial_probe(struct platform_device *pdev)
if (!IS_ERR(ourport->baudclk))
clk_disable_unprepare(ourport->baudclk);
- ret = s3c24xx_serial_cpufreq_register(ourport);
- if (ret < 0)
- dev_err(&pdev->dev, "failed to add cpufreq notifier\n");
-
probe_index++;
return 0;
@@ -2251,7 +2156,6 @@ static int s3c24xx_serial_remove(struct platform_device *dev)
struct uart_port *port = s3c24xx_dev_to_port(&dev->dev);
if (port) {
- s3c24xx_serial_cpufreq_deregister(to_ourport(port));
uart_remove_one_port(&s3c24xx_uart_drv, port);
}
@@ -2589,94 +2493,6 @@ static struct console s3c24xx_serial_console = {
};
#endif /* CONFIG_SERIAL_SAMSUNG_CONSOLE */
-#ifdef CONFIG_CPU_S3C2410
-static const struct s3c24xx_serial_drv_data s3c2410_serial_drv_data = {
- .info = {
- .name = "Samsung S3C2410 UART",
- .type = TYPE_S3C24XX,
- .port_type = PORT_S3C2410,
- .fifosize = 16,
- .rx_fifomask = S3C2410_UFSTAT_RXMASK,
- .rx_fifoshift = S3C2410_UFSTAT_RXSHIFT,
- .rx_fifofull = S3C2410_UFSTAT_RXFULL,
- .tx_fifofull = S3C2410_UFSTAT_TXFULL,
- .tx_fifomask = S3C2410_UFSTAT_TXMASK,
- .tx_fifoshift = S3C2410_UFSTAT_TXSHIFT,
- .def_clk_sel = S3C2410_UCON_CLKSEL0,
- .num_clks = 2,
- .clksel_mask = S3C2410_UCON_CLKMASK,
- .clksel_shift = S3C2410_UCON_CLKSHIFT,
- },
- .def_cfg = {
- .ucon = S3C2410_UCON_DEFAULT,
- .ufcon = S3C2410_UFCON_DEFAULT,
- },
-};
-#define S3C2410_SERIAL_DRV_DATA (&s3c2410_serial_drv_data)
-#else
-#define S3C2410_SERIAL_DRV_DATA NULL
-#endif
-
-#ifdef CONFIG_CPU_S3C2412
-static const struct s3c24xx_serial_drv_data s3c2412_serial_drv_data = {
- .info = {
- .name = "Samsung S3C2412 UART",
- .type = TYPE_S3C24XX,
- .port_type = PORT_S3C2412,
- .fifosize = 64,
- .has_divslot = 1,
- .rx_fifomask = S3C2440_UFSTAT_RXMASK,
- .rx_fifoshift = S3C2440_UFSTAT_RXSHIFT,
- .rx_fifofull = S3C2440_UFSTAT_RXFULL,
- .tx_fifofull = S3C2440_UFSTAT_TXFULL,
- .tx_fifomask = S3C2440_UFSTAT_TXMASK,
- .tx_fifoshift = S3C2440_UFSTAT_TXSHIFT,
- .def_clk_sel = S3C2410_UCON_CLKSEL2,
- .num_clks = 4,
- .clksel_mask = S3C2412_UCON_CLKMASK,
- .clksel_shift = S3C2412_UCON_CLKSHIFT,
- },
- .def_cfg = {
- .ucon = S3C2410_UCON_DEFAULT,
- .ufcon = S3C2410_UFCON_DEFAULT,
- },
-};
-#define S3C2412_SERIAL_DRV_DATA (&s3c2412_serial_drv_data)
-#else
-#define S3C2412_SERIAL_DRV_DATA NULL
-#endif
-
-#if defined(CONFIG_CPU_S3C2440) || defined(CONFIG_CPU_S3C2416) || \
- defined(CONFIG_CPU_S3C2443) || defined(CONFIG_CPU_S3C2442)
-static const struct s3c24xx_serial_drv_data s3c2440_serial_drv_data = {
- .info = {
- .name = "Samsung S3C2440 UART",
- .type = TYPE_S3C24XX,
- .port_type = PORT_S3C2440,
- .fifosize = 64,
- .has_divslot = 1,
- .rx_fifomask = S3C2440_UFSTAT_RXMASK,
- .rx_fifoshift = S3C2440_UFSTAT_RXSHIFT,
- .rx_fifofull = S3C2440_UFSTAT_RXFULL,
- .tx_fifofull = S3C2440_UFSTAT_TXFULL,
- .tx_fifomask = S3C2440_UFSTAT_TXMASK,
- .tx_fifoshift = S3C2440_UFSTAT_TXSHIFT,
- .def_clk_sel = S3C2410_UCON_CLKSEL2,
- .num_clks = 4,
- .clksel_mask = S3C2412_UCON_CLKMASK,
- .clksel_shift = S3C2412_UCON_CLKSHIFT,
- .ucon_mask = S3C2440_UCON0_DIVMASK,
- },
- .def_cfg = {
- .ucon = S3C2410_UCON_DEFAULT,
- .ufcon = S3C2410_UFCON_DEFAULT,
- },
-};
-#define S3C2440_SERIAL_DRV_DATA (&s3c2440_serial_drv_data)
-#else
-#define S3C2440_SERIAL_DRV_DATA NULL
-#endif
-
#if defined(CONFIG_CPU_S3C6400) || defined(CONFIG_CPU_S3C6410)
static const struct s3c24xx_serial_drv_data s3c6400_serial_drv_data = {
.info = {
@@ -2845,15 +2661,6 @@ static const struct s3c24xx_serial_drv_data artpec8_serial_drv_data = {
static const struct platform_device_id s3c24xx_serial_driver_ids[] = {
{
- .name = "s3c2410-uart",
- .driver_data = (kernel_ulong_t)S3C2410_SERIAL_DRV_DATA,
- }, {
- .name = "s3c2412-uart",
- .driver_data = (kernel_ulong_t)S3C2412_SERIAL_DRV_DATA,
- }, {
- .name = "s3c2440-uart",
- .driver_data = (kernel_ulong_t)S3C2440_SERIAL_DRV_DATA,
- }, {
.name = "s3c6400-uart",
.driver_data = (kernel_ulong_t)S3C6400_SERIAL_DRV_DATA,
}, {
@@ -2881,12 +2688,6 @@ MODULE_DEVICE_TABLE(platform, s3c24xx_serial_driver_ids);
#ifdef CONFIG_OF
static const struct of_device_id s3c24xx_uart_dt_match[] = {
- { .compatible = "samsung,s3c2410-uart",
- .data = S3C2410_SERIAL_DRV_DATA },
- { .compatible = "samsung,s3c2412-uart",
- .data = S3C2412_SERIAL_DRV_DATA },
- { .compatible = "samsung,s3c2440-uart",
- .data = S3C2440_SERIAL_DRV_DATA },
{ .compatible = "samsung,s3c6400-uart",
.data = S3C6400_SERIAL_DRV_DATA },
{ .compatible = "samsung,s5pv210-uart",
@@ -443,12 +443,12 @@ config USB_OHCI_HCD_STI
STMicroelectronics consumer electronics SoC's.
config USB_OHCI_HCD_S3C2410
- tristate "OHCI support for Samsung S3C24xx/S3C64xx SoC series"
- depends on USB_OHCI_HCD && (ARCH_S3C24XX || ARCH_S3C64XX || COMPILE_TEST)
- default y if (ARCH_S3C24XX || ARCH_S3C64XX)
+ tristate "OHCI support for Samsung S3C64xx SoC series"
+ depends on USB_OHCI_HCD && (ARCH_S3C64XX || COMPILE_TEST)
+ default ARCH_S3C64XX
help
Enables support for the on-chip OHCI controller on
- S3C24xx/S3C64xx chips.
+ S3C64xx chips.
config USB_OHCI_HCD_LPC32XX
tristate "Support for LPC on-chip OHCI USB controller"
@@ -491,14 +491,13 @@ config IXP4XX_WATCHDOG
Say N if you are unsure.
config S3C2410_WATCHDOG
- tristate "S3C2410 Watchdog"
- depends on ARCH_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210 || ARCH_EXYNOS || \
- COMPILE_TEST
+ tristate "S3C6410/S5Pv210/Exynos Watchdog"
+ depends on ARCH_S3C64XX || ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST
select WATCHDOG_CORE
select MFD_SYSCON if ARCH_EXYNOS
help
- Watchdog timer block in the Samsung S3C24xx, S3C64xx, S5Pv210 and
- Exynos SoCs. This will reboot the system when the timer expires with
+ Watchdog timer block in the Samsung S3C64xx, S5Pv210 and Exynos
+ SoCs. This will reboot the system when the timer expires with
the watchdog enabled.
The driver is limited by the speed of the system's PCLK
@@ -562,73 +562,6 @@ static irqreturn_t s3c2410wdt_irq(int irqno, void *param)
return IRQ_HANDLED;
}
-#ifdef CONFIG_ARM_S3C24XX_CPUFREQ
-
-static int s3c2410wdt_cpufreq_transition(struct notifier_block *nb,
- unsigned long val, void *data)
-{
- int ret;
- struct s3c2410_wdt *wdt = freq_to_wdt(nb);
-
- if (!s3c2410wdt_is_running(wdt))
- goto done;
-
- if (val == CPUFREQ_PRECHANGE) {
- /* To ensure that over the change we don't cause the
- * watchdog to trigger, we perform an keep-alive if
- * the watchdog is running.
- */
-
- s3c2410wdt_keepalive(&wdt->wdt_device);
- } else if (val == CPUFREQ_POSTCHANGE) {
- s3c2410wdt_stop(&wdt->wdt_device);
-
- ret = s3c2410wdt_set_heartbeat(&wdt->wdt_device,
- wdt->wdt_device.timeout);
-
- if (ret >= 0)
- s3c2410wdt_start(&wdt->wdt_device);
- else
- goto err;
- }
-
-done:
- return 0;
-
- err:
- dev_err(wdt->dev, "cannot set new value for timeout %d\n",
- wdt->wdt_device.timeout);
- return ret;
-}
-
-static inline int s3c2410wdt_cpufreq_register(struct s3c2410_wdt *wdt)
-{
- wdt->freq_transition.notifier_call = s3c2410wdt_cpufreq_transition;
-
- return cpufreq_register_notifier(&wdt->freq_transition,
- CPUFREQ_TRANSITION_NOTIFIER);
-}
-
-static inline void s3c2410wdt_cpufreq_deregister(struct s3c2410_wdt *wdt)
-{
- wdt->freq_transition.notifier_call = s3c2410wdt_cpufreq_transition;
-
- cpufreq_unregister_notifier(&wdt->freq_transition,
- CPUFREQ_TRANSITION_NOTIFIER);
-}
-
-#else
-
-static inline int s3c2410wdt_cpufreq_register(struct s3c2410_wdt *wdt)
-{
- return 0;
-}
-
-static inline void s3c2410wdt_cpufreq_deregister(struct s3c2410_wdt *wdt)
-{
-}
-#endif
-
static inline unsigned int s3c2410wdt_get_bootstatus(struct s3c2410_wdt *wdt)
{
unsigned int rst_stat;
@@ -761,12 +694,6 @@ static int s3c2410wdt_probe(struct platform_device *pdev)
wdt->wdt_device.min_timeout = 1;
wdt->wdt_device.max_timeout = s3c2410wdt_max_timeout(wdt);
- ret = s3c2410wdt_cpufreq_register(wdt);
- if (ret < 0) {
- dev_err(dev, "failed to register cpufreq\n");
- goto err_src_clk;
- }
-
watchdog_set_drvdata(&wdt->wdt_device, wdt);
/* see if we can actually set the requested timer margin, and if
@@ -783,7 +710,7 @@ static int s3c2410wdt_probe(struct platform_device *pdev)
S3C2410_WATCHDOG_DEFAULT_TIME);
} else {
dev_err(dev, "failed to use default timeout\n");
- goto err_cpufreq;
+ goto err_src_clk;
}
}
@@ -791,7 +718,7 @@ static int s3c2410wdt_probe(struct platform_device *pdev)
pdev->name, pdev);
if (ret != 0) {
dev_err(dev, "failed to install irq (%d)\n", ret);
- goto err_cpufreq;
+ goto err_src_clk;
}
watchdog_set_nowayout(&wdt->wdt_device, nowayout);
@@ -817,7 +744,7 @@ static int s3c2410wdt_probe(struct platform_device *pdev)
ret = watchdog_register_device(&wdt->wdt_device);
if (ret)
- goto err_cpufreq;
+ goto err_src_clk;
ret = s3c2410wdt_enable(wdt, true);
if (ret < 0)
@@ -839,9 +766,6 @@ static int s3c2410wdt_probe(struct platform_device *pdev)
err_unregister:
watchdog_unregister_device(&wdt->wdt_device);
- err_cpufreq:
- s3c2410wdt_cpufreq_deregister(wdt);
-
err_src_clk:
clk_disable_unprepare(wdt->src_clk);
@@ -862,8 +786,6 @@ static int s3c2410wdt_remove(struct platform_device *dev)
watchdog_unregister_device(&wdt->wdt_device);
- s3c2410wdt_cpufreq_deregister(wdt);
-
clk_disable_unprepare(wdt->src_clk);
clk_disable_unprepare(wdt->bus_clk);
@@ -21,36 +21,4 @@ static inline void s3c64xx_clk_init(struct device_node *np,
bool s3c6400, void __iomem *base) { }
#endif /* CONFIG_S3C64XX_COMMON_CLK */
-#ifdef CONFIG_S3C2410_COMMON_CLK
-void s3c2410_common_clk_init(struct device_node *np, unsigned long xti_f,
- int current_soc,
- void __iomem *reg_base);
-#else
-static inline void s3c2410_common_clk_init(struct device_node *np,
- unsigned long xti_f,
- int current_soc,
- void __iomem *reg_base) { }
-#endif /* CONFIG_S3C2410_COMMON_CLK */
-
-#ifdef CONFIG_S3C2412_COMMON_CLK
-void s3c2412_common_clk_init(struct device_node *np, unsigned long xti_f,
- unsigned long ext_f, void __iomem *reg_base);
-#else
-static inline void s3c2412_common_clk_init(struct device_node *np,
- unsigned long xti_f,
- unsigned long ext_f,
- void __iomem *reg_base) { }
-#endif /* CONFIG_S3C2412_COMMON_CLK */
-
-#ifdef CONFIG_S3C2443_COMMON_CLK
-void s3c2443_common_clk_init(struct device_node *np, unsigned long xti_f,
- int current_soc,
- void __iomem *reg_base);
-#else
-static inline void s3c2443_common_clk_init(struct device_node *np,
- unsigned long xti_f,
- int current_soc,
- void __iomem *reg_base) { }
-#endif /* CONFIG_S3C2443_COMMON_CLK */
-
#endif /* __LINUX_CLK_SAMSUNG_H_ */
@@ -14,58 +14,10 @@
/* PM debug functions */
-/**
- * struct pm_uart_save - save block for core UART
- * @ulcon: Save value for S3C2410_ULCON
- * @ucon: Save value for S3C2410_UCON
- * @ufcon: Save value for S3C2410_UFCON
- * @umcon: Save value for S3C2410_UMCON
- * @ubrdiv: Save value for S3C2410_UBRDIV
- *
- * Save block for UART registers to be held over sleep and restored if they
- * are needed (say by debug).
-*/
-struct pm_uart_save {
- u32 ulcon;
- u32 ucon;
- u32 ufcon;
- u32 umcon;
- u32 ubrdiv;
- u32 udivslot;
-};
-
-#ifdef CONFIG_SAMSUNG_PM_DEBUG
-/**
- * s3c_pm_dbg() - low level debug function for use in suspend/resume.
- * @msg: The message to print.
- *
- * This function is used mainly to debug the resume process before the system
- * can rely on printk/console output. It uses the low-level debugging output
- * routine printascii() to do its work.
- */
-extern void s3c_pm_dbg(const char *msg, ...);
-
-#define S3C_PMDBG(fmt...) s3c_pm_dbg(fmt)
-
-extern void s3c_pm_save_uarts(bool is_s3c24xx);
-extern void s3c_pm_restore_uarts(bool is_s3c24xx);
-
-#ifdef CONFIG_ARCH_S3C64XX
-extern void s3c_pm_arch_update_uart(void __iomem *regs,
- struct pm_uart_save *save);
-#else
-static inline void
-s3c_pm_arch_update_uart(void __iomem *regs, struct pm_uart_save *save)
-{
-}
-#endif
-
-#else
#define S3C_PMDBG(fmt...) pr_debug(fmt)
static inline void s3c_pm_save_uarts(bool is_s3c24xx) { }
static inline void s3c_pm_restore_uarts(bool is_s3c24xx) { }
-#endif
/* suspend memory checking */
@@ -81,14 +33,4 @@ extern void s3c_pm_check_store(void);
#define s3c_pm_check_store() do { } while (0)
#endif
-/* system device subsystems */
-
-extern struct bus_type s3c2410_subsys;
-extern struct bus_type s3c2410a_subsys;
-extern struct bus_type s3c2412_subsys;
-extern struct bus_type s3c2416_subsys;
-extern struct bus_type s3c2440_subsys;
-extern struct bus_type s3c2442_subsys;
-extern struct bus_type s3c2443_subsys;
-
#endif