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
6 changed files with 69 additions and 42 deletions
|
@ -231,7 +231,7 @@ config MACH_HMT
|
|||
select S3C_DEV_NAND
|
||||
select S3C_DEV_USB_HOST
|
||||
select S3C64XX_SETUP_FB_24BPP
|
||||
select HAVE_PWM
|
||||
select SAMSUNG_DEV_PWM
|
||||
help
|
||||
Machine support for the Airgoo HMT
|
||||
|
||||
|
@ -249,8 +249,8 @@ config MACH_SMARTQ
|
|||
select S3C64XX_SETUP_SDHCI
|
||||
select S3C64XX_SETUP_FB_24BPP
|
||||
select SAMSUNG_DEV_ADC
|
||||
select SAMSUNG_DEV_PWM
|
||||
select SAMSUNG_DEV_TS
|
||||
select HAVE_PWM
|
||||
help
|
||||
Shared machine support for SmartQ 5/7
|
||||
|
||||
|
|
|
@ -56,13 +56,6 @@ config S3C24XX_DCLK
|
|||
help
|
||||
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
|
||||
|
||||
config S3C24XX_GPIO_EXTRA
|
||||
|
|
|
@ -273,6 +273,19 @@ config SAMSUNG_DEV_KEYPAD
|
|||
help
|
||||
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
|
||||
|
||||
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_TS) += dev-ts.o
|
||||
obj-$(CONFIG_SAMSUNG_DEV_KEYPAD) += dev-keypad.o
|
||||
obj-$(CONFIG_SAMSUNG_DEV_PWM) += dev-pwm.o
|
||||
|
||||
# DMA support
|
||||
|
||||
|
|
53
arch/arm/plat-samsung/dev-pwm.c
Normal file
53
arch/arm/plat-samsung/dev-pwm.c
Normal file
|
@ -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/pwm.h>
|
||||
|
||||
#include <mach/irqs.h>
|
||||
#include <mach/map.h>
|
||||
|
||||
#include <plat/devs.h>
|
||||
#include <plat/regs-timer.h>
|
||||
|
||||
struct pwm_device {
|
||||
|
@ -47,37 +45,6 @@ struct pwm_device {
|
|||
|
||||
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)
|
||||
{
|
||||
return clk_get_parent(pwm->clk) == pwm->clk_div;
|
||||
|
|
Loading…
Reference in a new issue