ARM: SAMSUNG: Move PWM device definition from plat-s3c24xx to plat-samsung
This patch does the following:- 1. It moves file pwm.c from plat-s3c24xx to plat-samsung. This will enable all machines with Samsung SoCs to make use of the same code. 2. The device definitions have been separated to a new file dev-pwm.c for better clarity and structure. 3. It will enable all Samsung S3C and S5P series SoC's to use common PWM Kconfig definition. Signed-off-by: Banajit Goswami <banajit.g@samsung.com> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
This commit is contained in:
parent
dd9c1549ed
commit
2ce3013709
|
@ -231,7 +231,7 @@ config MACH_HMT
|
||||||
select S3C_DEV_NAND
|
select S3C_DEV_NAND
|
||||||
select S3C_DEV_USB_HOST
|
select S3C_DEV_USB_HOST
|
||||||
select S3C64XX_SETUP_FB_24BPP
|
select S3C64XX_SETUP_FB_24BPP
|
||||||
select HAVE_PWM
|
select SAMSUNG_DEV_PWM
|
||||||
help
|
help
|
||||||
Machine support for the Airgoo HMT
|
Machine support for the Airgoo HMT
|
||||||
|
|
||||||
|
@ -249,8 +249,8 @@ config MACH_SMARTQ
|
||||||
select S3C64XX_SETUP_SDHCI
|
select S3C64XX_SETUP_SDHCI
|
||||||
select S3C64XX_SETUP_FB_24BPP
|
select S3C64XX_SETUP_FB_24BPP
|
||||||
select SAMSUNG_DEV_ADC
|
select SAMSUNG_DEV_ADC
|
||||||
|
select SAMSUNG_DEV_PWM
|
||||||
select SAMSUNG_DEV_TS
|
select SAMSUNG_DEV_TS
|
||||||
select HAVE_PWM
|
|
||||||
help
|
help
|
||||||
Shared machine support for SmartQ 5/7
|
Shared machine support for SmartQ 5/7
|
||||||
|
|
||||||
|
|
|
@ -56,13 +56,6 @@ config S3C24XX_DCLK
|
||||||
help
|
help
|
||||||
Clock code for supporting DCLK/CLKOUT on S3C24XX architectures
|
Clock code for supporting DCLK/CLKOUT on S3C24XX architectures
|
||||||
|
|
||||||
config S3C24XX_PWM
|
|
||||||
bool "PWM device support"
|
|
||||||
select HAVE_PWM
|
|
||||||
help
|
|
||||||
Support for exporting the PWM timer blocks via the pwm device
|
|
||||||
system.
|
|
||||||
|
|
||||||
# gpio configurations
|
# gpio configurations
|
||||||
|
|
||||||
config S3C24XX_GPIO_EXTRA
|
config S3C24XX_GPIO_EXTRA
|
||||||
|
|
|
@ -273,6 +273,19 @@ config SAMSUNG_DEV_KEYPAD
|
||||||
help
|
help
|
||||||
Compile in platform device definitions for keypad
|
Compile in platform device definitions for keypad
|
||||||
|
|
||||||
|
config SAMSUNG_DEV_PWM
|
||||||
|
bool
|
||||||
|
default y if ARCH_S3C2410
|
||||||
|
help
|
||||||
|
Compile in platform device definition for PWM Timer
|
||||||
|
|
||||||
|
config S3C24XX_PWM
|
||||||
|
bool "PWM device support"
|
||||||
|
select HAVE_PWM
|
||||||
|
help
|
||||||
|
Support for exporting the PWM timer blocks via the pwm device
|
||||||
|
system
|
||||||
|
|
||||||
# DMA
|
# DMA
|
||||||
|
|
||||||
config S3C_DMA
|
config S3C_DMA
|
||||||
|
|
|
@ -59,6 +59,7 @@ obj-$(CONFIG_SAMSUNG_DEV_ADC) += dev-adc.o
|
||||||
obj-$(CONFIG_SAMSUNG_DEV_IDE) += dev-ide.o
|
obj-$(CONFIG_SAMSUNG_DEV_IDE) += dev-ide.o
|
||||||
obj-$(CONFIG_SAMSUNG_DEV_TS) += dev-ts.o
|
obj-$(CONFIG_SAMSUNG_DEV_TS) += dev-ts.o
|
||||||
obj-$(CONFIG_SAMSUNG_DEV_KEYPAD) += dev-keypad.o
|
obj-$(CONFIG_SAMSUNG_DEV_KEYPAD) += dev-keypad.o
|
||||||
|
obj-$(CONFIG_SAMSUNG_DEV_PWM) += dev-pwm.o
|
||||||
|
|
||||||
# DMA support
|
# DMA support
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
/* linux/arch/arm/plat-samsung/dev-pwm.c
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011 Samsung Electronics Co., Ltd.
|
||||||
|
* http://www.samsung.com
|
||||||
|
*
|
||||||
|
* Copyright (c) 2007 Ben Dooks
|
||||||
|
* Copyright (c) 2008 Simtec Electronics
|
||||||
|
* Ben Dooks <ben@simtec.co.uk>, <ben-linux@fluff.org>
|
||||||
|
*
|
||||||
|
* S3C series device definition for the PWM timer
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/platform_device.h>
|
||||||
|
|
||||||
|
#include <mach/irqs.h>
|
||||||
|
|
||||||
|
#include <plat/devs.h>
|
||||||
|
|
||||||
|
#define TIMER_RESOURCE_SIZE (1)
|
||||||
|
|
||||||
|
#define TIMER_RESOURCE(_tmr, _irq) \
|
||||||
|
(struct resource [TIMER_RESOURCE_SIZE]) { \
|
||||||
|
[0] = { \
|
||||||
|
.start = _irq, \
|
||||||
|
.end = _irq, \
|
||||||
|
.flags = IORESOURCE_IRQ \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define DEFINE_S3C_TIMER(_tmr_no, _irq) \
|
||||||
|
.name = "s3c24xx-pwm", \
|
||||||
|
.id = _tmr_no, \
|
||||||
|
.num_resources = TIMER_RESOURCE_SIZE, \
|
||||||
|
.resource = TIMER_RESOURCE(_tmr_no, _irq), \
|
||||||
|
|
||||||
|
/*
|
||||||
|
* since we already have an static mapping for the timer,
|
||||||
|
* we do not bother setting any IO resource for the base.
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct platform_device s3c_device_timer[] = {
|
||||||
|
[0] = { DEFINE_S3C_TIMER(0, IRQ_TIMER0) },
|
||||||
|
[1] = { DEFINE_S3C_TIMER(1, IRQ_TIMER1) },
|
||||||
|
[2] = { DEFINE_S3C_TIMER(2, IRQ_TIMER2) },
|
||||||
|
[3] = { DEFINE_S3C_TIMER(3, IRQ_TIMER3) },
|
||||||
|
[4] = { DEFINE_S3C_TIMER(4, IRQ_TIMER4) },
|
||||||
|
};
|
||||||
|
EXPORT_SYMBOL(s3c_device_timer);
|
|
@ -20,10 +20,8 @@
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
#include <linux/pwm.h>
|
#include <linux/pwm.h>
|
||||||
|
|
||||||
#include <mach/irqs.h>
|
|
||||||
#include <mach/map.h>
|
#include <mach/map.h>
|
||||||
|
|
||||||
#include <plat/devs.h>
|
|
||||||
#include <plat/regs-timer.h>
|
#include <plat/regs-timer.h>
|
||||||
|
|
||||||
struct pwm_device {
|
struct pwm_device {
|
||||||
|
@ -47,37 +45,6 @@ struct pwm_device {
|
||||||
|
|
||||||
static struct clk *clk_scaler[2];
|
static struct clk *clk_scaler[2];
|
||||||
|
|
||||||
/* Standard setup for a timer block. */
|
|
||||||
|
|
||||||
#define TIMER_RESOURCE_SIZE (1)
|
|
||||||
|
|
||||||
#define TIMER_RESOURCE(_tmr, _irq) \
|
|
||||||
(struct resource [TIMER_RESOURCE_SIZE]) { \
|
|
||||||
[0] = { \
|
|
||||||
.start = _irq, \
|
|
||||||
.end = _irq, \
|
|
||||||
.flags = IORESOURCE_IRQ \
|
|
||||||
} \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define DEFINE_S3C_TIMER(_tmr_no, _irq) \
|
|
||||||
.name = "s3c24xx-pwm", \
|
|
||||||
.id = _tmr_no, \
|
|
||||||
.num_resources = TIMER_RESOURCE_SIZE, \
|
|
||||||
.resource = TIMER_RESOURCE(_tmr_no, _irq), \
|
|
||||||
|
|
||||||
/* since we already have an static mapping for the timer, we do not
|
|
||||||
* bother setting any IO resource for the base.
|
|
||||||
*/
|
|
||||||
|
|
||||||
struct platform_device s3c_device_timer[] = {
|
|
||||||
[0] = { DEFINE_S3C_TIMER(0, IRQ_TIMER0) },
|
|
||||||
[1] = { DEFINE_S3C_TIMER(1, IRQ_TIMER1) },
|
|
||||||
[2] = { DEFINE_S3C_TIMER(2, IRQ_TIMER2) },
|
|
||||||
[3] = { DEFINE_S3C_TIMER(3, IRQ_TIMER3) },
|
|
||||||
[4] = { DEFINE_S3C_TIMER(4, IRQ_TIMER4) },
|
|
||||||
};
|
|
||||||
|
|
||||||
static inline int pwm_is_tdiv(struct pwm_device *pwm)
|
static inline int pwm_is_tdiv(struct pwm_device *pwm)
|
||||||
{
|
{
|
||||||
return clk_get_parent(pwm->clk) == pwm->clk_div;
|
return clk_get_parent(pwm->clk) == pwm->clk_div;
|
||||||
|
|
Loading…
Reference in New Issue