diff mbox series

[02/21] ARM: s3c: remove s3c24xx specific hacks

Message ID 20221021203329.4143397-2-arnd@kernel.org
State New
Headers show
Series ARM: s3c: clean out obsolete platforms | expand

Commit Message

Arnd Bergmann Oct. 21, 2022, 8:27 p.m. UTC
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

Jonathan Cameron Oct. 23, 2022, 11 a.m. UTC | #1
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
Daniel Lezcano Oct. 23, 2022, 6:08 p.m. UTC | #2
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>
Miquel Raynal Oct. 24, 2022, 7:55 a.m. UTC | #3
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
Krzysztof Kozlowski Oct. 24, 2022, 12:26 p.m. UTC | #4
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
Ulf Hansson Oct. 24, 2022, 4:53 p.m. UTC | #5
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
>
Stephen Boyd Oct. 27, 2022, 11:10 p.m. UTC | #6
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
diff mbox series

Patch

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