* [PATCH v3 0/9] omap: dmtimer: Move driver out of plat-omap
@ 2017-11-16 4:23 ` Keerthy
0 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-11-16 4:23 UTC (permalink / raw)
To: tony, aaro.koskinen, thierry.reding
Cc: j-keerthy, linux, daniel.lezcano, robh+dt, linux-omap,
linux-arm-kernel, linux-pwm, grygorii.strashko,
sebastian.reichel, ladis
The series moves dmtimer out of plat-omap to drivers/clocksource.
The series also does a bunch of changes to pwm-omap-dmtimer code
to adapt to the driver migration and clean up plat specific
pdata-quirks and use the dmtimer platform data.
Boot tested on DRA7-EVM, AM335X-EVM and AM437X-GP-EVM.
Compile tested omap1_defconfig.
This is based on top of linux-next branch.
Changes from V2:
* Wrapped the inline functions in header file under OMAP2PLUS
* Added a new of helper function to fetch plat_data from of node.
Keerthy (9):
clocksource: dmtimer: Remove all the exports
arm: omap: timer: Move the inline functions under OMAP2PLUS define
arm: omap: Move dmtimer.h out of plat-omap
arm: OMAP: Move dmtimer driver out of plat-omap to drivers under
clocksource
dmtimer: Add timer ops to the platform data structure
clocksource: dmtimer: Populate the timer ops to the pdata
of: platform: Add a function to get platfrom data from device node
pwm: pwm-omap-dmtimer: Adapt driver to utilize dmtimer pdata ops
arm: omap: pdata-quirks: Remove unused timer pdata
arch/arm/mach-omap1/pm.c | 2 +-
arch/arm/mach-omap1/timer.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_2420_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_2430_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_54xx_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_7xx_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_81xx_data.c | 2 +-
arch/arm/mach-omap2/pdata-quirks.c | 32 -------------
arch/arm/mach-omap2/timer.c | 2 +-
arch/arm/plat-omap/Kconfig | 6 ---
arch/arm/plat-omap/Makefile | 1 -
drivers/clocksource/Kconfig | 6 +++
drivers/clocksource/Makefile | 1 +
.../plat-omap => drivers/clocksource}/dmtimer.c | 54 +++++++++++-----------
drivers/of/platform.c | 23 +++++++++
drivers/pwm/pwm-omap-dmtimer.c | 39 +++++++++-------
.../include/plat => include/clocksource}/dmtimer.h | 8 +++-
include/linux/of_platform.h | 6 +++
include/linux/platform_data/dmtimer-omap.h | 38 +++++++++++++++
22 files changed, 140 insertions(+), 96 deletions(-)
rename {arch/arm/plat-omap => drivers/clocksource}/dmtimer.c (95%)
rename {arch/arm/plat-omap/include/plat => include/clocksource}/dmtimer.h (97%)
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH v3 0/9] omap: dmtimer: Move driver out of plat-omap
@ 2017-11-16 4:23 ` Keerthy
0 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-11-16 4:23 UTC (permalink / raw)
To: linux-arm-kernel
The series moves dmtimer out of plat-omap to drivers/clocksource.
The series also does a bunch of changes to pwm-omap-dmtimer code
to adapt to the driver migration and clean up plat specific
pdata-quirks and use the dmtimer platform data.
Boot tested on DRA7-EVM, AM335X-EVM and AM437X-GP-EVM.
Compile tested omap1_defconfig.
This is based on top of linux-next branch.
Changes from V2:
* Wrapped the inline functions in header file under OMAP2PLUS
* Added a new of helper function to fetch plat_data from of node.
Keerthy (9):
clocksource: dmtimer: Remove all the exports
arm: omap: timer: Move the inline functions under OMAP2PLUS define
arm: omap: Move dmtimer.h out of plat-omap
arm: OMAP: Move dmtimer driver out of plat-omap to drivers under
clocksource
dmtimer: Add timer ops to the platform data structure
clocksource: dmtimer: Populate the timer ops to the pdata
of: platform: Add a function to get platfrom data from device node
pwm: pwm-omap-dmtimer: Adapt driver to utilize dmtimer pdata ops
arm: omap: pdata-quirks: Remove unused timer pdata
arch/arm/mach-omap1/pm.c | 2 +-
arch/arm/mach-omap1/timer.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_2420_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_2430_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_54xx_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_7xx_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_81xx_data.c | 2 +-
arch/arm/mach-omap2/pdata-quirks.c | 32 -------------
arch/arm/mach-omap2/timer.c | 2 +-
arch/arm/plat-omap/Kconfig | 6 ---
arch/arm/plat-omap/Makefile | 1 -
drivers/clocksource/Kconfig | 6 +++
drivers/clocksource/Makefile | 1 +
.../plat-omap => drivers/clocksource}/dmtimer.c | 54 +++++++++++-----------
drivers/of/platform.c | 23 +++++++++
drivers/pwm/pwm-omap-dmtimer.c | 39 +++++++++-------
.../include/plat => include/clocksource}/dmtimer.h | 8 +++-
include/linux/of_platform.h | 6 +++
include/linux/platform_data/dmtimer-omap.h | 38 +++++++++++++++
22 files changed, 140 insertions(+), 96 deletions(-)
rename {arch/arm/plat-omap => drivers/clocksource}/dmtimer.c (95%)
rename {arch/arm/plat-omap/include/plat => include/clocksource}/dmtimer.h (97%)
--
1.9.1
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH v3 1/9] clocksource: dmtimer: Remove all the exports
2017-11-16 4:23 ` Keerthy
@ 2017-11-16 4:23 ` Keerthy
-1 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-11-16 4:23 UTC (permalink / raw)
To: tony, aaro.koskinen, thierry.reding
Cc: j-keerthy, linux, daniel.lezcano, robh+dt, linux-omap,
linux-arm-kernel, linux-pwm, grygorii.strashko,
sebastian.reichel, ladis
Remove all the unwanted exports from the driver
Signed-off-by: Keerthy <j-keerthy@ti.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
---
Changes in v3:
* Added Sebastian's Reviewed-by.
Changes in v2:
* No code changes in this v2 version. Only enhanced patch
statistics for renames.
arch/arm/plat-omap/dmtimer.c | 27 ---------------------------
1 file changed, 27 deletions(-)
diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c
index d443e48..72565fc 100644
--- a/arch/arm/plat-omap/dmtimer.c
+++ b/arch/arm/plat-omap/dmtimer.c
@@ -302,7 +302,6 @@ struct omap_dm_timer *omap_dm_timer_request(void)
{
return _omap_dm_timer_request(REQUEST_ANY, NULL);
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_request);
struct omap_dm_timer *omap_dm_timer_request_specific(int id)
{
@@ -315,7 +314,6 @@ struct omap_dm_timer *omap_dm_timer_request_specific(int id)
return _omap_dm_timer_request(REQUEST_BY_ID, &id);
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_request_specific);
/**
* omap_dm_timer_request_by_cap - Request a timer by capability
@@ -330,7 +328,6 @@ struct omap_dm_timer *omap_dm_timer_request_by_cap(u32 cap)
{
return _omap_dm_timer_request(REQUEST_BY_CAP, &cap);
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_request_by_cap);
/**
* omap_dm_timer_request_by_node - Request a timer by device-tree node
@@ -346,7 +343,6 @@ struct omap_dm_timer *omap_dm_timer_request_by_node(struct device_node *np)
return _omap_dm_timer_request(REQUEST_BY_NODE, np);
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_request_by_node);
int omap_dm_timer_free(struct omap_dm_timer *timer)
{
@@ -359,7 +355,6 @@ int omap_dm_timer_free(struct omap_dm_timer *timer)
timer->reserved = 0;
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_free);
void omap_dm_timer_enable(struct omap_dm_timer *timer)
{
@@ -379,13 +374,11 @@ void omap_dm_timer_enable(struct omap_dm_timer *timer)
}
}
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_enable);
void omap_dm_timer_disable(struct omap_dm_timer *timer)
{
pm_runtime_put_sync(&timer->pdev->dev);
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_disable);
int omap_dm_timer_get_irq(struct omap_dm_timer *timer)
{
@@ -393,7 +386,6 @@ int omap_dm_timer_get_irq(struct omap_dm_timer *timer)
return timer->irq;
return -EINVAL;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_get_irq);
#if defined(CONFIG_ARCH_OMAP1)
#include <mach/hardware.h>
@@ -429,7 +421,6 @@ __u32 omap_dm_timer_modify_idlect_mask(__u32 inputmask)
return inputmask;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_modify_idlect_mask);
#else
@@ -439,7 +430,6 @@ struct clk *omap_dm_timer_get_fclk(struct omap_dm_timer *timer)
return timer->fclk;
return NULL;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_get_fclk);
__u32 omap_dm_timer_modify_idlect_mask(__u32 inputmask)
{
@@ -447,7 +437,6 @@ __u32 omap_dm_timer_modify_idlect_mask(__u32 inputmask)
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_modify_idlect_mask);
#endif
@@ -461,7 +450,6 @@ int omap_dm_timer_trigger(struct omap_dm_timer *timer)
omap_dm_timer_write_reg(timer, OMAP_TIMER_TRIGGER_REG, 0);
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_trigger);
int omap_dm_timer_start(struct omap_dm_timer *timer)
{
@@ -482,7 +470,6 @@ int omap_dm_timer_start(struct omap_dm_timer *timer)
timer->context.tclr = l;
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_start);
int omap_dm_timer_stop(struct omap_dm_timer *timer)
{
@@ -506,7 +493,6 @@ int omap_dm_timer_stop(struct omap_dm_timer *timer)
omap_dm_timer_disable(timer);
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_stop);
int omap_dm_timer_set_source(struct omap_dm_timer *timer, int source)
{
@@ -569,7 +555,6 @@ int omap_dm_timer_set_source(struct omap_dm_timer *timer, int source)
return ret;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_set_source);
int omap_dm_timer_set_load(struct omap_dm_timer *timer, int autoreload,
unsigned int load)
@@ -595,7 +580,6 @@ int omap_dm_timer_set_load(struct omap_dm_timer *timer, int autoreload,
omap_dm_timer_disable(timer);
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_set_load);
/* Optimized set_load which removes costly spin wait in timer_start */
int omap_dm_timer_set_load_start(struct omap_dm_timer *timer, int autoreload,
@@ -625,7 +609,6 @@ int omap_dm_timer_set_load_start(struct omap_dm_timer *timer, int autoreload,
timer->context.tcrr = load;
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_set_load_start);
int omap_dm_timer_set_match(struct omap_dm_timer *timer, int enable,
unsigned int match)
@@ -650,7 +633,6 @@ int omap_dm_timer_set_match(struct omap_dm_timer *timer, int enable,
omap_dm_timer_disable(timer);
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_set_match);
int omap_dm_timer_set_pwm(struct omap_dm_timer *timer, int def_on,
int toggle, int trigger)
@@ -676,7 +658,6 @@ int omap_dm_timer_set_pwm(struct omap_dm_timer *timer, int def_on,
omap_dm_timer_disable(timer);
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_set_pwm);
int omap_dm_timer_set_prescaler(struct omap_dm_timer *timer, int prescaler)
{
@@ -699,7 +680,6 @@ int omap_dm_timer_set_prescaler(struct omap_dm_timer *timer, int prescaler)
omap_dm_timer_disable(timer);
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_set_prescaler);
int omap_dm_timer_set_int_enable(struct omap_dm_timer *timer,
unsigned int value)
@@ -716,7 +696,6 @@ int omap_dm_timer_set_int_enable(struct omap_dm_timer *timer,
omap_dm_timer_disable(timer);
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_set_int_enable);
/**
* omap_dm_timer_set_int_disable - disable timer interrupts
@@ -747,7 +726,6 @@ int omap_dm_timer_set_int_disable(struct omap_dm_timer *timer, u32 mask)
omap_dm_timer_disable(timer);
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_set_int_disable);
unsigned int omap_dm_timer_read_status(struct omap_dm_timer *timer)
{
@@ -762,7 +740,6 @@ unsigned int omap_dm_timer_read_status(struct omap_dm_timer *timer)
return l;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_read_status);
int omap_dm_timer_write_status(struct omap_dm_timer *timer, unsigned int value)
{
@@ -773,7 +750,6 @@ int omap_dm_timer_write_status(struct omap_dm_timer *timer, unsigned int value)
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_write_status);
unsigned int omap_dm_timer_read_counter(struct omap_dm_timer *timer)
{
@@ -784,7 +760,6 @@ unsigned int omap_dm_timer_read_counter(struct omap_dm_timer *timer)
return __omap_dm_timer_read_counter(timer, timer->posted);
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_read_counter);
int omap_dm_timer_write_counter(struct omap_dm_timer *timer, unsigned int value)
{
@@ -799,7 +774,6 @@ int omap_dm_timer_write_counter(struct omap_dm_timer *timer, unsigned int value)
timer->context.tcrr = value;
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_write_counter);
int omap_dm_timers_active(void)
{
@@ -816,7 +790,6 @@ int omap_dm_timers_active(void)
}
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timers_active);
static const struct of_device_id omap_timer_match[];
--
1.9.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 1/9] clocksource: dmtimer: Remove all the exports
@ 2017-11-16 4:23 ` Keerthy
0 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-11-16 4:23 UTC (permalink / raw)
To: linux-arm-kernel
Remove all the unwanted exports from the driver
Signed-off-by: Keerthy <j-keerthy@ti.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
---
Changes in v3:
* Added Sebastian's Reviewed-by.
Changes in v2:
* No code changes in this v2 version. Only enhanced patch
statistics for renames.
arch/arm/plat-omap/dmtimer.c | 27 ---------------------------
1 file changed, 27 deletions(-)
diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c
index d443e48..72565fc 100644
--- a/arch/arm/plat-omap/dmtimer.c
+++ b/arch/arm/plat-omap/dmtimer.c
@@ -302,7 +302,6 @@ struct omap_dm_timer *omap_dm_timer_request(void)
{
return _omap_dm_timer_request(REQUEST_ANY, NULL);
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_request);
struct omap_dm_timer *omap_dm_timer_request_specific(int id)
{
@@ -315,7 +314,6 @@ struct omap_dm_timer *omap_dm_timer_request_specific(int id)
return _omap_dm_timer_request(REQUEST_BY_ID, &id);
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_request_specific);
/**
* omap_dm_timer_request_by_cap - Request a timer by capability
@@ -330,7 +328,6 @@ struct omap_dm_timer *omap_dm_timer_request_by_cap(u32 cap)
{
return _omap_dm_timer_request(REQUEST_BY_CAP, &cap);
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_request_by_cap);
/**
* omap_dm_timer_request_by_node - Request a timer by device-tree node
@@ -346,7 +343,6 @@ struct omap_dm_timer *omap_dm_timer_request_by_node(struct device_node *np)
return _omap_dm_timer_request(REQUEST_BY_NODE, np);
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_request_by_node);
int omap_dm_timer_free(struct omap_dm_timer *timer)
{
@@ -359,7 +355,6 @@ int omap_dm_timer_free(struct omap_dm_timer *timer)
timer->reserved = 0;
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_free);
void omap_dm_timer_enable(struct omap_dm_timer *timer)
{
@@ -379,13 +374,11 @@ void omap_dm_timer_enable(struct omap_dm_timer *timer)
}
}
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_enable);
void omap_dm_timer_disable(struct omap_dm_timer *timer)
{
pm_runtime_put_sync(&timer->pdev->dev);
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_disable);
int omap_dm_timer_get_irq(struct omap_dm_timer *timer)
{
@@ -393,7 +386,6 @@ int omap_dm_timer_get_irq(struct omap_dm_timer *timer)
return timer->irq;
return -EINVAL;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_get_irq);
#if defined(CONFIG_ARCH_OMAP1)
#include <mach/hardware.h>
@@ -429,7 +421,6 @@ __u32 omap_dm_timer_modify_idlect_mask(__u32 inputmask)
return inputmask;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_modify_idlect_mask);
#else
@@ -439,7 +430,6 @@ struct clk *omap_dm_timer_get_fclk(struct omap_dm_timer *timer)
return timer->fclk;
return NULL;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_get_fclk);
__u32 omap_dm_timer_modify_idlect_mask(__u32 inputmask)
{
@@ -447,7 +437,6 @@ __u32 omap_dm_timer_modify_idlect_mask(__u32 inputmask)
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_modify_idlect_mask);
#endif
@@ -461,7 +450,6 @@ int omap_dm_timer_trigger(struct omap_dm_timer *timer)
omap_dm_timer_write_reg(timer, OMAP_TIMER_TRIGGER_REG, 0);
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_trigger);
int omap_dm_timer_start(struct omap_dm_timer *timer)
{
@@ -482,7 +470,6 @@ int omap_dm_timer_start(struct omap_dm_timer *timer)
timer->context.tclr = l;
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_start);
int omap_dm_timer_stop(struct omap_dm_timer *timer)
{
@@ -506,7 +493,6 @@ int omap_dm_timer_stop(struct omap_dm_timer *timer)
omap_dm_timer_disable(timer);
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_stop);
int omap_dm_timer_set_source(struct omap_dm_timer *timer, int source)
{
@@ -569,7 +555,6 @@ int omap_dm_timer_set_source(struct omap_dm_timer *timer, int source)
return ret;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_set_source);
int omap_dm_timer_set_load(struct omap_dm_timer *timer, int autoreload,
unsigned int load)
@@ -595,7 +580,6 @@ int omap_dm_timer_set_load(struct omap_dm_timer *timer, int autoreload,
omap_dm_timer_disable(timer);
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_set_load);
/* Optimized set_load which removes costly spin wait in timer_start */
int omap_dm_timer_set_load_start(struct omap_dm_timer *timer, int autoreload,
@@ -625,7 +609,6 @@ int omap_dm_timer_set_load_start(struct omap_dm_timer *timer, int autoreload,
timer->context.tcrr = load;
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_set_load_start);
int omap_dm_timer_set_match(struct omap_dm_timer *timer, int enable,
unsigned int match)
@@ -650,7 +633,6 @@ int omap_dm_timer_set_match(struct omap_dm_timer *timer, int enable,
omap_dm_timer_disable(timer);
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_set_match);
int omap_dm_timer_set_pwm(struct omap_dm_timer *timer, int def_on,
int toggle, int trigger)
@@ -676,7 +658,6 @@ int omap_dm_timer_set_pwm(struct omap_dm_timer *timer, int def_on,
omap_dm_timer_disable(timer);
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_set_pwm);
int omap_dm_timer_set_prescaler(struct omap_dm_timer *timer, int prescaler)
{
@@ -699,7 +680,6 @@ int omap_dm_timer_set_prescaler(struct omap_dm_timer *timer, int prescaler)
omap_dm_timer_disable(timer);
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_set_prescaler);
int omap_dm_timer_set_int_enable(struct omap_dm_timer *timer,
unsigned int value)
@@ -716,7 +696,6 @@ int omap_dm_timer_set_int_enable(struct omap_dm_timer *timer,
omap_dm_timer_disable(timer);
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_set_int_enable);
/**
* omap_dm_timer_set_int_disable - disable timer interrupts
@@ -747,7 +726,6 @@ int omap_dm_timer_set_int_disable(struct omap_dm_timer *timer, u32 mask)
omap_dm_timer_disable(timer);
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_set_int_disable);
unsigned int omap_dm_timer_read_status(struct omap_dm_timer *timer)
{
@@ -762,7 +740,6 @@ unsigned int omap_dm_timer_read_status(struct omap_dm_timer *timer)
return l;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_read_status);
int omap_dm_timer_write_status(struct omap_dm_timer *timer, unsigned int value)
{
@@ -773,7 +750,6 @@ int omap_dm_timer_write_status(struct omap_dm_timer *timer, unsigned int value)
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_write_status);
unsigned int omap_dm_timer_read_counter(struct omap_dm_timer *timer)
{
@@ -784,7 +760,6 @@ unsigned int omap_dm_timer_read_counter(struct omap_dm_timer *timer)
return __omap_dm_timer_read_counter(timer, timer->posted);
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_read_counter);
int omap_dm_timer_write_counter(struct omap_dm_timer *timer, unsigned int value)
{
@@ -799,7 +774,6 @@ int omap_dm_timer_write_counter(struct omap_dm_timer *timer, unsigned int value)
timer->context.tcrr = value;
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timer_write_counter);
int omap_dm_timers_active(void)
{
@@ -816,7 +790,6 @@ int omap_dm_timers_active(void)
}
return 0;
}
-EXPORT_SYMBOL_GPL(omap_dm_timers_active);
static const struct of_device_id omap_timer_match[];
--
1.9.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 2/9] arm: omap: timer: Wrap the inline functions under OMAP2PLUS define
2017-11-16 4:23 ` Keerthy
@ 2017-11-16 4:23 ` Keerthy
-1 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-11-16 4:23 UTC (permalink / raw)
To: tony, aaro.koskinen, thierry.reding
Cc: j-keerthy, linux, daniel.lezcano, robh+dt, linux-omap,
linux-arm-kernel, linux-pwm, grygorii.strashko,
sebastian.reichel, ladis
Wrap the inline functions under OMAP2PLUS/OMAP1 defines.
Signed-off-by: Keerthy <j-keerthy@ti.com>
---
arch/arm/plat-omap/include/plat/dmtimer.h | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/arch/arm/plat-omap/include/plat/dmtimer.h b/arch/arm/plat-omap/include/plat/dmtimer.h
index dd79f30..862ad62 100644
--- a/arch/arm/plat-omap/include/plat/dmtimer.h
+++ b/arch/arm/plat-omap/include/plat/dmtimer.h
@@ -276,6 +276,12 @@ struct omap_dm_timer {
#define OMAP_TIMER_TICK_INT_MASK_COUNT_REG \
(_OMAP_TIMER_TICK_INT_MASK_COUNT_OFFSET | (WP_TOWR << WPSHIFT))
+/*
+ * The below are inlined to optimize code size for system timers. Other code
+ * should not need these at all, see
+ * include/linux/platform_data/pwm_omap_dmtimer.h
+ */
+#if defined(CONFIG_ARCH_OMAP1) || defined(CONFIG_ARCH_OMAP2PLUS)
static inline u32 __omap_dm_timer_read(struct omap_dm_timer *timer, u32 reg,
int posted)
{
@@ -414,5 +420,5 @@ static inline void __omap_dm_timer_write_status(struct omap_dm_timer *timer,
{
writel_relaxed(value, timer->irq_stat);
}
-
+#endif /* CONFIG_ARCH_OMAP1 || CONFIG_ARCH_OMAP2PLUS */
#endif /* __ASM_ARCH_DMTIMER_H */
--
1.9.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 2/9] arm: omap: timer: Wrap the inline functions under OMAP2PLUS define
@ 2017-11-16 4:23 ` Keerthy
0 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-11-16 4:23 UTC (permalink / raw)
To: linux-arm-kernel
Wrap the inline functions under OMAP2PLUS/OMAP1 defines.
Signed-off-by: Keerthy <j-keerthy@ti.com>
---
arch/arm/plat-omap/include/plat/dmtimer.h | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/arch/arm/plat-omap/include/plat/dmtimer.h b/arch/arm/plat-omap/include/plat/dmtimer.h
index dd79f30..862ad62 100644
--- a/arch/arm/plat-omap/include/plat/dmtimer.h
+++ b/arch/arm/plat-omap/include/plat/dmtimer.h
@@ -276,6 +276,12 @@ struct omap_dm_timer {
#define OMAP_TIMER_TICK_INT_MASK_COUNT_REG \
(_OMAP_TIMER_TICK_INT_MASK_COUNT_OFFSET | (WP_TOWR << WPSHIFT))
+/*
+ * The below are inlined to optimize code size for system timers. Other code
+ * should not need these@all, see
+ * include/linux/platform_data/pwm_omap_dmtimer.h
+ */
+#if defined(CONFIG_ARCH_OMAP1) || defined(CONFIG_ARCH_OMAP2PLUS)
static inline u32 __omap_dm_timer_read(struct omap_dm_timer *timer, u32 reg,
int posted)
{
@@ -414,5 +420,5 @@ static inline void __omap_dm_timer_write_status(struct omap_dm_timer *timer,
{
writel_relaxed(value, timer->irq_stat);
}
-
+#endif /* CONFIG_ARCH_OMAP1 || CONFIG_ARCH_OMAP2PLUS */
#endif /* __ASM_ARCH_DMTIMER_H */
--
1.9.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 3/9] arm: omap: Move dmtimer.h out of plat-omap
2017-11-16 4:23 ` Keerthy
@ 2017-11-16 4:23 ` Keerthy
-1 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-11-16 4:23 UTC (permalink / raw)
To: tony, aaro.koskinen, thierry.reding
Cc: linux-pwm, grygorii.strashko, j-keerthy, daniel.lezcano, linux,
robh+dt, ladis, sebastian.reichel, linux-omap, linux-arm-kernel
The header file is currently under plat-omap directory
under arch/omap. Move this out to an accessible place.
No Code changes done to the header file.
Signed-off-by: Keerthy <j-keerthy@ti.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
---
Changes in v3:
* Added Sebastian's Reviewed-by.
Changes in v2:
* No code changes in this v2 version. Only enhanced patch
statistics for renames.
arch/arm/mach-omap1/pm.c | 2 +-
arch/arm/mach-omap1/timer.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_2420_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_2430_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_54xx_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_7xx_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_81xx_data.c | 2 +-
arch/arm/mach-omap2/pdata-quirks.c | 2 +-
arch/arm/mach-omap2/timer.c | 2 +-
arch/arm/plat-omap/dmtimer.c | 2 +-
{arch/arm/plat-omap/include/plat => include/clocksource}/dmtimer.h | 0
14 files changed, 13 insertions(+), 13 deletions(-)
rename {arch/arm/plat-omap/include/plat => include/clocksource}/dmtimer.h (100%)
diff --git a/arch/arm/mach-omap1/pm.c b/arch/arm/mach-omap1/pm.c
index f1135bf..a07d47cf 100644
--- a/arch/arm/mach-omap1/pm.c
+++ b/arch/arm/mach-omap1/pm.c
@@ -55,7 +55,7 @@
#include <mach/tc.h>
#include <mach/mux.h>
#include <linux/omap-dma.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
#include <mach/irqs.h>
diff --git a/arch/arm/mach-omap1/timer.c b/arch/arm/mach-omap1/timer.c
index 8fb1ec6..7c057ab 100644
--- a/arch/arm/mach-omap1/timer.c
+++ b/arch/arm/mach-omap1/timer.c
@@ -27,7 +27,7 @@
#include <linux/platform_device.h>
#include <linux/platform_data/dmtimer-omap.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
#include "soc.h"
diff --git a/arch/arm/mach-omap2/omap_hwmod_2420_data.c b/arch/arm/mach-omap2/omap_hwmod_2420_data.c
index 1a15a34..45c1043 100644
--- a/arch/arm/mach-omap2/omap_hwmod_2420_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_2420_data.c
@@ -16,7 +16,7 @@
#include <linux/i2c-omap.h>
#include <linux/platform_data/spi-omap2-mcspi.h>
#include <linux/omap-dma.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
#include "omap_hwmod.h"
#include "l3_2xxx.h"
diff --git a/arch/arm/mach-omap2/omap_hwmod_2430_data.c b/arch/arm/mach-omap2/omap_hwmod_2430_data.c
index 3801850..892ca58 100644
--- a/arch/arm/mach-omap2/omap_hwmod_2430_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_2430_data.c
@@ -18,7 +18,7 @@
#include <linux/platform_data/hsmmc-omap.h>
#include <linux/platform_data/spi-omap2-mcspi.h>
#include <linux/omap-dma.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
#include "omap_hwmod.h"
#include "l3_2xxx.h"
diff --git a/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c b/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
index beec4cd..82b51c0 100644
--- a/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
@@ -11,7 +11,7 @@
#include <linux/platform_data/gpio-omap.h>
#include <linux/omap-dma.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
#include <linux/platform_data/spi-omap2-mcspi.h>
#include "omap_hwmod.h"
diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
index 52c9d58..310aef5 100644
--- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
@@ -25,7 +25,7 @@
#include "l4_3xxx.h"
#include <linux/platform_data/asoc-ti-mcbsp.h>
#include <linux/platform_data/spi-omap2-mcspi.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
#include "soc.h"
#include "omap_hwmod.h"
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
index c477096..22e0e38 100644
--- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
@@ -30,7 +30,7 @@
#include <linux/platform_data/spi-omap2-mcspi.h>
#include <linux/platform_data/asoc-ti-mcbsp.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
#include "omap_hwmod.h"
#include "omap_hwmod_common_data.h"
diff --git a/arch/arm/mach-omap2/omap_hwmod_54xx_data.c b/arch/arm/mach-omap2/omap_hwmod_54xx_data.c
index 988e7ea..530334e 100644
--- a/arch/arm/mach-omap2/omap_hwmod_54xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_54xx_data.c
@@ -26,7 +26,7 @@
#include <linux/omap-dma.h>
#include <linux/platform_data/spi-omap2-mcspi.h>
#include <linux/platform_data/asoc-ti-mcbsp.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
#include "omap_hwmod.h"
#include "omap_hwmod_common_data.h"
diff --git a/arch/arm/mach-omap2/omap_hwmod_7xx_data.c b/arch/arm/mach-omap2/omap_hwmod_7xx_data.c
index d05e553d..adabdef 100644
--- a/arch/arm/mach-omap2/omap_hwmod_7xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_7xx_data.c
@@ -26,7 +26,7 @@
#include <linux/omap-dma.h>
#include <linux/platform_data/spi-omap2-mcspi.h>
#include <linux/platform_data/asoc-ti-mcbsp.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
#include "omap_hwmod.h"
#include "omap_hwmod_common_data.h"
diff --git a/arch/arm/mach-omap2/omap_hwmod_81xx_data.c b/arch/arm/mach-omap2/omap_hwmod_81xx_data.c
index 77a515b..d05dd2d 100644
--- a/arch/arm/mach-omap2/omap_hwmod_81xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_81xx_data.c
@@ -18,7 +18,7 @@
#include <linux/platform_data/gpio-omap.h>
#include <linux/platform_data/hsmmc-omap.h>
#include <linux/platform_data/spi-omap2-mcspi.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
#include "omap_hwmod_common_data.h"
#include "cm81xx.h"
diff --git a/arch/arm/mach-omap2/pdata-quirks.c b/arch/arm/mach-omap2/pdata-quirks.c
index 6b433fc..ad9df86 100644
--- a/arch/arm/mach-omap2/pdata-quirks.c
+++ b/arch/arm/mach-omap2/pdata-quirks.c
@@ -27,7 +27,7 @@
#include <linux/platform_data/pwm_omap_dmtimer.h>
#include <linux/platform_data/media/ir-rx51.h>
#include <linux/platform_data/asoc-ti-mcbsp.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
#include "common.h"
#include "common-board-devices.h"
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
index ece09c9..31c1b01 100644
--- a/arch/arm/mach-omap2/timer.c
+++ b/arch/arm/mach-omap2/timer.c
@@ -26,6 +26,7 @@
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*/
+#include <clocksource/dmtimer.h>
#include <linux/init.h>
#include <linux/time.h>
#include <linux/interrupt.h>
@@ -49,7 +50,6 @@
#include "omap_hwmod.h"
#include "omap_device.h"
#include <plat/counter-32k.h>
-#include <plat/dmtimer.h>
#include "omap-pm.h"
#include "soc.h"
diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c
index 72565fc..afe1dc9 100644
--- a/arch/arm/plat-omap/dmtimer.c
+++ b/arch/arm/plat-omap/dmtimer.c
@@ -47,7 +47,7 @@
#include <linux/platform_device.h>
#include <linux/platform_data/dmtimer-omap.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
static u32 omap_reserved_systimers;
static LIST_HEAD(omap_timer_list);
diff --git a/arch/arm/plat-omap/include/plat/dmtimer.h b/include/clocksource/dmtimer.h
similarity index 100%
rename from arch/arm/plat-omap/include/plat/dmtimer.h
rename to include/clocksource/dmtimer.h
--
1.9.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 3/9] arm: omap: Move dmtimer.h out of plat-omap
@ 2017-11-16 4:23 ` Keerthy
0 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-11-16 4:23 UTC (permalink / raw)
To: linux-arm-kernel
The header file is currently under plat-omap directory
under arch/omap. Move this out to an accessible place.
No Code changes done to the header file.
Signed-off-by: Keerthy <j-keerthy@ti.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
---
Changes in v3:
* Added Sebastian's Reviewed-by.
Changes in v2:
* No code changes in this v2 version. Only enhanced patch
statistics for renames.
arch/arm/mach-omap1/pm.c | 2 +-
arch/arm/mach-omap1/timer.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_2420_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_2430_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_54xx_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_7xx_data.c | 2 +-
arch/arm/mach-omap2/omap_hwmod_81xx_data.c | 2 +-
arch/arm/mach-omap2/pdata-quirks.c | 2 +-
arch/arm/mach-omap2/timer.c | 2 +-
arch/arm/plat-omap/dmtimer.c | 2 +-
{arch/arm/plat-omap/include/plat => include/clocksource}/dmtimer.h | 0
14 files changed, 13 insertions(+), 13 deletions(-)
rename {arch/arm/plat-omap/include/plat => include/clocksource}/dmtimer.h (100%)
diff --git a/arch/arm/mach-omap1/pm.c b/arch/arm/mach-omap1/pm.c
index f1135bf..a07d47cf 100644
--- a/arch/arm/mach-omap1/pm.c
+++ b/arch/arm/mach-omap1/pm.c
@@ -55,7 +55,7 @@
#include <mach/tc.h>
#include <mach/mux.h>
#include <linux/omap-dma.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
#include <mach/irqs.h>
diff --git a/arch/arm/mach-omap1/timer.c b/arch/arm/mach-omap1/timer.c
index 8fb1ec6..7c057ab 100644
--- a/arch/arm/mach-omap1/timer.c
+++ b/arch/arm/mach-omap1/timer.c
@@ -27,7 +27,7 @@
#include <linux/platform_device.h>
#include <linux/platform_data/dmtimer-omap.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
#include "soc.h"
diff --git a/arch/arm/mach-omap2/omap_hwmod_2420_data.c b/arch/arm/mach-omap2/omap_hwmod_2420_data.c
index 1a15a34..45c1043 100644
--- a/arch/arm/mach-omap2/omap_hwmod_2420_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_2420_data.c
@@ -16,7 +16,7 @@
#include <linux/i2c-omap.h>
#include <linux/platform_data/spi-omap2-mcspi.h>
#include <linux/omap-dma.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
#include "omap_hwmod.h"
#include "l3_2xxx.h"
diff --git a/arch/arm/mach-omap2/omap_hwmod_2430_data.c b/arch/arm/mach-omap2/omap_hwmod_2430_data.c
index 3801850..892ca58 100644
--- a/arch/arm/mach-omap2/omap_hwmod_2430_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_2430_data.c
@@ -18,7 +18,7 @@
#include <linux/platform_data/hsmmc-omap.h>
#include <linux/platform_data/spi-omap2-mcspi.h>
#include <linux/omap-dma.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
#include "omap_hwmod.h"
#include "l3_2xxx.h"
diff --git a/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c b/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
index beec4cd..82b51c0 100644
--- a/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
@@ -11,7 +11,7 @@
#include <linux/platform_data/gpio-omap.h>
#include <linux/omap-dma.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
#include <linux/platform_data/spi-omap2-mcspi.h>
#include "omap_hwmod.h"
diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
index 52c9d58..310aef5 100644
--- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
@@ -25,7 +25,7 @@
#include "l4_3xxx.h"
#include <linux/platform_data/asoc-ti-mcbsp.h>
#include <linux/platform_data/spi-omap2-mcspi.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
#include "soc.h"
#include "omap_hwmod.h"
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
index c477096..22e0e38 100644
--- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
@@ -30,7 +30,7 @@
#include <linux/platform_data/spi-omap2-mcspi.h>
#include <linux/platform_data/asoc-ti-mcbsp.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
#include "omap_hwmod.h"
#include "omap_hwmod_common_data.h"
diff --git a/arch/arm/mach-omap2/omap_hwmod_54xx_data.c b/arch/arm/mach-omap2/omap_hwmod_54xx_data.c
index 988e7ea..530334e 100644
--- a/arch/arm/mach-omap2/omap_hwmod_54xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_54xx_data.c
@@ -26,7 +26,7 @@
#include <linux/omap-dma.h>
#include <linux/platform_data/spi-omap2-mcspi.h>
#include <linux/platform_data/asoc-ti-mcbsp.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
#include "omap_hwmod.h"
#include "omap_hwmod_common_data.h"
diff --git a/arch/arm/mach-omap2/omap_hwmod_7xx_data.c b/arch/arm/mach-omap2/omap_hwmod_7xx_data.c
index d05e553d..adabdef 100644
--- a/arch/arm/mach-omap2/omap_hwmod_7xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_7xx_data.c
@@ -26,7 +26,7 @@
#include <linux/omap-dma.h>
#include <linux/platform_data/spi-omap2-mcspi.h>
#include <linux/platform_data/asoc-ti-mcbsp.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
#include "omap_hwmod.h"
#include "omap_hwmod_common_data.h"
diff --git a/arch/arm/mach-omap2/omap_hwmod_81xx_data.c b/arch/arm/mach-omap2/omap_hwmod_81xx_data.c
index 77a515b..d05dd2d 100644
--- a/arch/arm/mach-omap2/omap_hwmod_81xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_81xx_data.c
@@ -18,7 +18,7 @@
#include <linux/platform_data/gpio-omap.h>
#include <linux/platform_data/hsmmc-omap.h>
#include <linux/platform_data/spi-omap2-mcspi.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
#include "omap_hwmod_common_data.h"
#include "cm81xx.h"
diff --git a/arch/arm/mach-omap2/pdata-quirks.c b/arch/arm/mach-omap2/pdata-quirks.c
index 6b433fc..ad9df86 100644
--- a/arch/arm/mach-omap2/pdata-quirks.c
+++ b/arch/arm/mach-omap2/pdata-quirks.c
@@ -27,7 +27,7 @@
#include <linux/platform_data/pwm_omap_dmtimer.h>
#include <linux/platform_data/media/ir-rx51.h>
#include <linux/platform_data/asoc-ti-mcbsp.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
#include "common.h"
#include "common-board-devices.h"
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
index ece09c9..31c1b01 100644
--- a/arch/arm/mach-omap2/timer.c
+++ b/arch/arm/mach-omap2/timer.c
@@ -26,6 +26,7 @@
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*/
+#include <clocksource/dmtimer.h>
#include <linux/init.h>
#include <linux/time.h>
#include <linux/interrupt.h>
@@ -49,7 +50,6 @@
#include "omap_hwmod.h"
#include "omap_device.h"
#include <plat/counter-32k.h>
-#include <plat/dmtimer.h>
#include "omap-pm.h"
#include "soc.h"
diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c
index 72565fc..afe1dc9 100644
--- a/arch/arm/plat-omap/dmtimer.c
+++ b/arch/arm/plat-omap/dmtimer.c
@@ -47,7 +47,7 @@
#include <linux/platform_device.h>
#include <linux/platform_data/dmtimer-omap.h>
-#include <plat/dmtimer.h>
+#include <clocksource/dmtimer.h>
static u32 omap_reserved_systimers;
static LIST_HEAD(omap_timer_list);
diff --git a/arch/arm/plat-omap/include/plat/dmtimer.h b/include/clocksource/dmtimer.h
similarity index 100%
rename from arch/arm/plat-omap/include/plat/dmtimer.h
rename to include/clocksource/dmtimer.h
--
1.9.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 4/9] arm: OMAP: Move dmtimer driver out of plat-omap to drivers under clocksource
2017-11-16 4:23 ` Keerthy
@ 2017-11-16 4:23 ` Keerthy
-1 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-11-16 4:23 UTC (permalink / raw)
To: tony, aaro.koskinen, thierry.reding
Cc: j-keerthy, linux, daniel.lezcano, robh+dt, linux-omap,
linux-arm-kernel, linux-pwm, grygorii.strashko,
sebastian.reichel, ladis
Move the dmtimer driver out of plat-omap to clocksource.
So that non-omap devices also could use this.
No Code changes done to the driver file.
Signed-off-by: Keerthy <j-keerthy@ti.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
---
Changes in v3:
* Added Sebastian's Reviewed-by.
Changes in v2:
* No code changes in this v2 version. Only enhanced patch
statistics for renames.
arch/arm/plat-omap/Kconfig | 6 ------
arch/arm/plat-omap/Makefile | 1 -
drivers/clocksource/Kconfig | 6 ++++++
drivers/clocksource/Makefile | 1 +
{arch/arm/plat-omap => drivers/clocksource}/dmtimer.c | 0
5 files changed, 7 insertions(+), 7 deletions(-)
rename {arch/arm/plat-omap => drivers/clocksource}/dmtimer.c (100%)
diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig
index 7276afe..afc1a1d 100644
--- a/arch/arm/plat-omap/Kconfig
+++ b/arch/arm/plat-omap/Kconfig
@@ -106,12 +106,6 @@ config OMAP3_L2_AUX_SECURE_SERVICE_SET_ID
help
PPA routine service ID for setting L2 auxiliary control register.
-config OMAP_DM_TIMER
- bool "Use dual-mode timer"
- depends on ARCH_OMAP16XX || ARCH_OMAP2PLUS
- help
- Select this option if you want to use OMAP Dual-Mode timers.
-
config OMAP_SERIAL_WAKE
bool "Enable wake-up events for serial ports"
depends on ARCH_OMAP1 && OMAP_MUX
diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile
index 47e1867..7215ada 100644
--- a/arch/arm/plat-omap/Makefile
+++ b/arch/arm/plat-omap/Makefile
@@ -9,5 +9,4 @@ obj-y := sram.o dma.o counter_32k.o
# omap_device support (OMAP2+ only at the moment)
-obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o
obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o
diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
index c729a88..4da66cf 100644
--- a/drivers/clocksource/Kconfig
+++ b/drivers/clocksource/Kconfig
@@ -46,6 +46,12 @@ config DIGICOLOR_TIMER
help
Enables the support for the digicolor timer driver.
+config OMAP_DM_TIMER
+ bool "Use dual-mode timer"
+ depends on ARCH_OMAP16XX || ARCH_OMAP2PLUS
+ help
+ Select this option if you want to use Dual-Mode timers.
+
config DW_APB_TIMER
bool "DW APB timer driver" if COMPILE_TEST
help
diff --git a/drivers/clocksource/Makefile b/drivers/clocksource/Makefile
index 72711f1..b077076 100644
--- a/drivers/clocksource/Makefile
+++ b/drivers/clocksource/Makefile
@@ -16,6 +16,7 @@ obj-$(CONFIG_EM_TIMER_STI) += em_sti.o
obj-$(CONFIG_CLKBLD_I8253) += i8253.o
obj-$(CONFIG_CLKSRC_MMIO) += mmio.o
obj-$(CONFIG_DIGICOLOR_TIMER) += timer-digicolor.o
+obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o
obj-$(CONFIG_DW_APB_TIMER) += dw_apb_timer.o
obj-$(CONFIG_DW_APB_TIMER_OF) += dw_apb_timer_of.o
obj-$(CONFIG_FTTMR010_TIMER) += timer-fttmr010.o
diff --git a/arch/arm/plat-omap/dmtimer.c b/drivers/clocksource/dmtimer.c
similarity index 100%
rename from arch/arm/plat-omap/dmtimer.c
rename to drivers/clocksource/dmtimer.c
--
1.9.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 4/9] arm: OMAP: Move dmtimer driver out of plat-omap to drivers under clocksource
@ 2017-11-16 4:23 ` Keerthy
0 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-11-16 4:23 UTC (permalink / raw)
To: linux-arm-kernel
Move the dmtimer driver out of plat-omap to clocksource.
So that non-omap devices also could use this.
No Code changes done to the driver file.
Signed-off-by: Keerthy <j-keerthy@ti.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
---
Changes in v3:
* Added Sebastian's Reviewed-by.
Changes in v2:
* No code changes in this v2 version. Only enhanced patch
statistics for renames.
arch/arm/plat-omap/Kconfig | 6 ------
arch/arm/plat-omap/Makefile | 1 -
drivers/clocksource/Kconfig | 6 ++++++
drivers/clocksource/Makefile | 1 +
{arch/arm/plat-omap => drivers/clocksource}/dmtimer.c | 0
5 files changed, 7 insertions(+), 7 deletions(-)
rename {arch/arm/plat-omap => drivers/clocksource}/dmtimer.c (100%)
diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig
index 7276afe..afc1a1d 100644
--- a/arch/arm/plat-omap/Kconfig
+++ b/arch/arm/plat-omap/Kconfig
@@ -106,12 +106,6 @@ config OMAP3_L2_AUX_SECURE_SERVICE_SET_ID
help
PPA routine service ID for setting L2 auxiliary control register.
-config OMAP_DM_TIMER
- bool "Use dual-mode timer"
- depends on ARCH_OMAP16XX || ARCH_OMAP2PLUS
- help
- Select this option if you want to use OMAP Dual-Mode timers.
-
config OMAP_SERIAL_WAKE
bool "Enable wake-up events for serial ports"
depends on ARCH_OMAP1 && OMAP_MUX
diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile
index 47e1867..7215ada 100644
--- a/arch/arm/plat-omap/Makefile
+++ b/arch/arm/plat-omap/Makefile
@@ -9,5 +9,4 @@ obj-y := sram.o dma.o counter_32k.o
# omap_device support (OMAP2+ only at the moment)
-obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o
obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o
diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
index c729a88..4da66cf 100644
--- a/drivers/clocksource/Kconfig
+++ b/drivers/clocksource/Kconfig
@@ -46,6 +46,12 @@ config DIGICOLOR_TIMER
help
Enables the support for the digicolor timer driver.
+config OMAP_DM_TIMER
+ bool "Use dual-mode timer"
+ depends on ARCH_OMAP16XX || ARCH_OMAP2PLUS
+ help
+ Select this option if you want to use Dual-Mode timers.
+
config DW_APB_TIMER
bool "DW APB timer driver" if COMPILE_TEST
help
diff --git a/drivers/clocksource/Makefile b/drivers/clocksource/Makefile
index 72711f1..b077076 100644
--- a/drivers/clocksource/Makefile
+++ b/drivers/clocksource/Makefile
@@ -16,6 +16,7 @@ obj-$(CONFIG_EM_TIMER_STI) += em_sti.o
obj-$(CONFIG_CLKBLD_I8253) += i8253.o
obj-$(CONFIG_CLKSRC_MMIO) += mmio.o
obj-$(CONFIG_DIGICOLOR_TIMER) += timer-digicolor.o
+obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o
obj-$(CONFIG_DW_APB_TIMER) += dw_apb_timer.o
obj-$(CONFIG_DW_APB_TIMER_OF) += dw_apb_timer_of.o
obj-$(CONFIG_FTTMR010_TIMER) += timer-fttmr010.o
diff --git a/arch/arm/plat-omap/dmtimer.c b/drivers/clocksource/dmtimer.c
similarity index 100%
rename from arch/arm/plat-omap/dmtimer.c
rename to drivers/clocksource/dmtimer.c
--
1.9.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 5/9] dmtimer: Add timer ops to the platform data structure
2017-11-16 4:23 ` Keerthy
@ 2017-11-16 4:23 ` Keerthy
-1 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-11-16 4:23 UTC (permalink / raw)
To: tony, aaro.koskinen, thierry.reding
Cc: j-keerthy, linux, daniel.lezcano, robh+dt, linux-omap,
linux-arm-kernel, linux-pwm, grygorii.strashko,
sebastian.reichel, ladis
Add timer ops to the platform data structure
Signed-off-by: Keerthy <j-keerthy@ti.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
---
Changes in v3:
* Added Sebastian's Reviewed-by.
Changes in v2:
* No code changes in this v2 version. Only enhanced patch
statistics for renames.
include/linux/platform_data/dmtimer-omap.h | 38 ++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/include/linux/platform_data/dmtimer-omap.h b/include/linux/platform_data/dmtimer-omap.h
index a19b78d..a3e1794 100644
--- a/include/linux/platform_data/dmtimer-omap.h
+++ b/include/linux/platform_data/dmtimer-omap.h
@@ -20,12 +20,50 @@
#ifndef __PLATFORM_DATA_DMTIMER_OMAP_H__
#define __PLATFORM_DATA_DMTIMER_OMAP_H__
+struct omap_dm_timer_ops {
+ struct omap_dm_timer *(*request_by_node)(struct device_node *np);
+ struct omap_dm_timer *(*request_specific)(int timer_id);
+ struct omap_dm_timer *(*request)(void);
+
+ int (*free)(struct omap_dm_timer *timer);
+
+ void (*enable)(struct omap_dm_timer *timer);
+ void (*disable)(struct omap_dm_timer *timer);
+
+ int (*get_irq)(struct omap_dm_timer *timer);
+ int (*set_int_enable)(struct omap_dm_timer *timer,
+ unsigned int value);
+ int (*set_int_disable)(struct omap_dm_timer *timer, u32 mask);
+
+ struct clk *(*get_fclk)(struct omap_dm_timer *timer);
+
+ int (*start)(struct omap_dm_timer *timer);
+ int (*stop)(struct omap_dm_timer *timer);
+ int (*set_source)(struct omap_dm_timer *timer, int source);
+
+ int (*set_load)(struct omap_dm_timer *timer, int autoreload,
+ unsigned int value);
+ int (*set_match)(struct omap_dm_timer *timer, int enable,
+ unsigned int match);
+ int (*set_pwm)(struct omap_dm_timer *timer, int def_on,
+ int toggle, int trigger);
+ int (*set_prescaler)(struct omap_dm_timer *timer, int prescaler);
+
+ unsigned int (*read_counter)(struct omap_dm_timer *timer);
+ int (*write_counter)(struct omap_dm_timer *timer,
+ unsigned int value);
+ unsigned int (*read_status)(struct omap_dm_timer *timer);
+ int (*write_status)(struct omap_dm_timer *timer,
+ unsigned int value);
+};
+
struct dmtimer_platform_data {
/* set_timer_src - Only used for OMAP1 devices */
int (*set_timer_src)(struct platform_device *pdev, int source);
u32 timer_capability;
u32 timer_errata;
int (*get_context_loss_count)(struct device *);
+ struct omap_dm_timer_ops *timer_ops;
};
#endif /* __PLATFORM_DATA_DMTIMER_OMAP_H__ */
--
1.9.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 5/9] dmtimer: Add timer ops to the platform data structure
@ 2017-11-16 4:23 ` Keerthy
0 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-11-16 4:23 UTC (permalink / raw)
To: linux-arm-kernel
Add timer ops to the platform data structure
Signed-off-by: Keerthy <j-keerthy@ti.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
---
Changes in v3:
* Added Sebastian's Reviewed-by.
Changes in v2:
* No code changes in this v2 version. Only enhanced patch
statistics for renames.
include/linux/platform_data/dmtimer-omap.h | 38 ++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/include/linux/platform_data/dmtimer-omap.h b/include/linux/platform_data/dmtimer-omap.h
index a19b78d..a3e1794 100644
--- a/include/linux/platform_data/dmtimer-omap.h
+++ b/include/linux/platform_data/dmtimer-omap.h
@@ -20,12 +20,50 @@
#ifndef __PLATFORM_DATA_DMTIMER_OMAP_H__
#define __PLATFORM_DATA_DMTIMER_OMAP_H__
+struct omap_dm_timer_ops {
+ struct omap_dm_timer *(*request_by_node)(struct device_node *np);
+ struct omap_dm_timer *(*request_specific)(int timer_id);
+ struct omap_dm_timer *(*request)(void);
+
+ int (*free)(struct omap_dm_timer *timer);
+
+ void (*enable)(struct omap_dm_timer *timer);
+ void (*disable)(struct omap_dm_timer *timer);
+
+ int (*get_irq)(struct omap_dm_timer *timer);
+ int (*set_int_enable)(struct omap_dm_timer *timer,
+ unsigned int value);
+ int (*set_int_disable)(struct omap_dm_timer *timer, u32 mask);
+
+ struct clk *(*get_fclk)(struct omap_dm_timer *timer);
+
+ int (*start)(struct omap_dm_timer *timer);
+ int (*stop)(struct omap_dm_timer *timer);
+ int (*set_source)(struct omap_dm_timer *timer, int source);
+
+ int (*set_load)(struct omap_dm_timer *timer, int autoreload,
+ unsigned int value);
+ int (*set_match)(struct omap_dm_timer *timer, int enable,
+ unsigned int match);
+ int (*set_pwm)(struct omap_dm_timer *timer, int def_on,
+ int toggle, int trigger);
+ int (*set_prescaler)(struct omap_dm_timer *timer, int prescaler);
+
+ unsigned int (*read_counter)(struct omap_dm_timer *timer);
+ int (*write_counter)(struct omap_dm_timer *timer,
+ unsigned int value);
+ unsigned int (*read_status)(struct omap_dm_timer *timer);
+ int (*write_status)(struct omap_dm_timer *timer,
+ unsigned int value);
+};
+
struct dmtimer_platform_data {
/* set_timer_src - Only used for OMAP1 devices */
int (*set_timer_src)(struct platform_device *pdev, int source);
u32 timer_capability;
u32 timer_errata;
int (*get_context_loss_count)(struct device *);
+ struct omap_dm_timer_ops *timer_ops;
};
#endif /* __PLATFORM_DATA_DMTIMER_OMAP_H__ */
--
1.9.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 6/9] clocksource: dmtimer: Populate the timer ops to the pdata
2017-11-16 4:23 ` Keerthy
@ 2017-11-16 4:23 ` Keerthy
-1 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-11-16 4:23 UTC (permalink / raw)
To: tony, aaro.koskinen, thierry.reding
Cc: j-keerthy, linux, daniel.lezcano, robh+dt, linux-omap,
linux-arm-kernel, linux-pwm, grygorii.strashko,
sebastian.reichel, ladis
Add the timer ops to the platform data
Signed-off-by: Keerthy <j-keerthy@ti.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
---
Changes in v3:
* Added Sebastian's Reviewed-by.
Changes in v2:
* No code changes in this v2 version. Only enhanced patch
statistics for renames.
drivers/clocksource/dmtimer.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/drivers/clocksource/dmtimer.c b/drivers/clocksource/dmtimer.c
index afe1dc9..1cbd954 100644
--- a/drivers/clocksource/dmtimer.c
+++ b/drivers/clocksource/dmtimer.c
@@ -922,8 +922,33 @@ static int omap_dm_timer_remove(struct platform_device *pdev)
return ret;
}
+static struct omap_dm_timer_ops dmtimer_ops = {
+ .request_by_node = omap_dm_timer_request_by_node,
+ .request_specific = omap_dm_timer_request_specific,
+ .request = omap_dm_timer_request,
+ .set_source = omap_dm_timer_set_source,
+ .get_irq = omap_dm_timer_get_irq,
+ .set_int_enable = omap_dm_timer_set_int_enable,
+ .set_int_disable = omap_dm_timer_set_int_disable,
+ .free = omap_dm_timer_free,
+ .enable = omap_dm_timer_enable,
+ .disable = omap_dm_timer_disable,
+ .get_fclk = omap_dm_timer_get_fclk,
+ .start = omap_dm_timer_start,
+ .stop = omap_dm_timer_stop,
+ .set_load = omap_dm_timer_set_load,
+ .set_match = omap_dm_timer_set_match,
+ .set_pwm = omap_dm_timer_set_pwm,
+ .set_prescaler = omap_dm_timer_set_prescaler,
+ .read_counter = omap_dm_timer_read_counter,
+ .write_counter = omap_dm_timer_write_counter,
+ .read_status = omap_dm_timer_read_status,
+ .write_status = omap_dm_timer_write_status,
+};
+
static const struct dmtimer_platform_data omap3plus_pdata = {
.timer_errata = OMAP_TIMER_ERRATA_I103_I767,
+ .timer_ops = &dmtimer_ops,
};
static const struct of_device_id omap_timer_match[] = {
--
1.9.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 6/9] clocksource: dmtimer: Populate the timer ops to the pdata
@ 2017-11-16 4:23 ` Keerthy
0 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-11-16 4:23 UTC (permalink / raw)
To: linux-arm-kernel
Add the timer ops to the platform data
Signed-off-by: Keerthy <j-keerthy@ti.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
---
Changes in v3:
* Added Sebastian's Reviewed-by.
Changes in v2:
* No code changes in this v2 version. Only enhanced patch
statistics for renames.
drivers/clocksource/dmtimer.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/drivers/clocksource/dmtimer.c b/drivers/clocksource/dmtimer.c
index afe1dc9..1cbd954 100644
--- a/drivers/clocksource/dmtimer.c
+++ b/drivers/clocksource/dmtimer.c
@@ -922,8 +922,33 @@ static int omap_dm_timer_remove(struct platform_device *pdev)
return ret;
}
+static struct omap_dm_timer_ops dmtimer_ops = {
+ .request_by_node = omap_dm_timer_request_by_node,
+ .request_specific = omap_dm_timer_request_specific,
+ .request = omap_dm_timer_request,
+ .set_source = omap_dm_timer_set_source,
+ .get_irq = omap_dm_timer_get_irq,
+ .set_int_enable = omap_dm_timer_set_int_enable,
+ .set_int_disable = omap_dm_timer_set_int_disable,
+ .free = omap_dm_timer_free,
+ .enable = omap_dm_timer_enable,
+ .disable = omap_dm_timer_disable,
+ .get_fclk = omap_dm_timer_get_fclk,
+ .start = omap_dm_timer_start,
+ .stop = omap_dm_timer_stop,
+ .set_load = omap_dm_timer_set_load,
+ .set_match = omap_dm_timer_set_match,
+ .set_pwm = omap_dm_timer_set_pwm,
+ .set_prescaler = omap_dm_timer_set_prescaler,
+ .read_counter = omap_dm_timer_read_counter,
+ .write_counter = omap_dm_timer_write_counter,
+ .read_status = omap_dm_timer_read_status,
+ .write_status = omap_dm_timer_write_status,
+};
+
static const struct dmtimer_platform_data omap3plus_pdata = {
.timer_errata = OMAP_TIMER_ERRATA_I103_I767,
+ .timer_ops = &dmtimer_ops,
};
static const struct of_device_id omap_timer_match[] = {
--
1.9.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 7/9] of: platform: Add a function to get platfrom data from device node
2017-11-16 4:23 ` Keerthy
@ 2017-11-16 4:23 ` Keerthy
-1 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-11-16 4:23 UTC (permalink / raw)
To: tony, aaro.koskinen, thierry.reding
Cc: j-keerthy, linux, daniel.lezcano, robh+dt, linux-omap,
linux-arm-kernel, linux-pwm, grygorii.strashko,
sebastian.reichel, ladis
Add a function to get platfrom data from device node.
Signed-off-by: Keerthy <j-keerthy@ti.com>
---
drivers/of/platform.c | 23 +++++++++++++++++++++++
include/linux/of_platform.h | 6 ++++++
2 files changed, 29 insertions(+)
diff --git a/drivers/of/platform.c b/drivers/of/platform.c
index b7cf84b..b9edfcf 100644
--- a/drivers/of/platform.c
+++ b/drivers/of/platform.c
@@ -60,6 +60,29 @@ struct platform_device *of_find_device_by_node(struct device_node *np)
}
EXPORT_SYMBOL(of_find_device_by_node);
+/**
+ * of_find_platdata_by_node - Find the platform_data associated with a node
+ * @np: Pointer to device tree node
+ *
+ * Fetches the platform device pointer of device tree node and in turn gets the
+ * associated platform data.
+ *
+ * Returns platform_data pointer, or NULL if not found
+ */
+void *of_find_platdata_by_node(struct device_node *np)
+{
+ struct platform_device *pdev;
+
+ pdev = of_find_device_by_node(np);
+ if (!pdev) {
+ pr_err("Unable to find pdev\n");
+ return pdev;
+ }
+
+ return dev_get_platdata(&pdev->dev);
+}
+EXPORT_SYMBOL(of_find_platdata_by_node);
+
#ifdef CONFIG_OF_ADDRESS
/*
* The following routines scan a subtree and registers a device for
diff --git a/include/linux/of_platform.h b/include/linux/of_platform.h
index fb908e5..77b770f 100644
--- a/include/linux/of_platform.h
+++ b/include/linux/of_platform.h
@@ -59,11 +59,17 @@ extern struct platform_device *of_device_alloc(struct device_node *np,
struct device *parent);
#ifdef CONFIG_OF
extern struct platform_device *of_find_device_by_node(struct device_node *np);
+extern void *of_find_platdata_by_node(struct device_node *np);
#else
static inline struct platform_device *of_find_device_by_node(struct device_node *np)
{
return NULL;
}
+
+static void *of_find_platdata_by_node(struct device_node *np)
+{
+ return NULL;
+}
#endif
/* Platform devices and busses creation */
--
1.9.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 7/9] of: platform: Add a function to get platfrom data from device node
@ 2017-11-16 4:23 ` Keerthy
0 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-11-16 4:23 UTC (permalink / raw)
To: linux-arm-kernel
Add a function to get platfrom data from device node.
Signed-off-by: Keerthy <j-keerthy@ti.com>
---
drivers/of/platform.c | 23 +++++++++++++++++++++++
include/linux/of_platform.h | 6 ++++++
2 files changed, 29 insertions(+)
diff --git a/drivers/of/platform.c b/drivers/of/platform.c
index b7cf84b..b9edfcf 100644
--- a/drivers/of/platform.c
+++ b/drivers/of/platform.c
@@ -60,6 +60,29 @@ struct platform_device *of_find_device_by_node(struct device_node *np)
}
EXPORT_SYMBOL(of_find_device_by_node);
+/**
+ * of_find_platdata_by_node - Find the platform_data associated with a node
+ * @np: Pointer to device tree node
+ *
+ * Fetches the platform device pointer of device tree node and in turn gets the
+ * associated platform data.
+ *
+ * Returns platform_data pointer, or NULL if not found
+ */
+void *of_find_platdata_by_node(struct device_node *np)
+{
+ struct platform_device *pdev;
+
+ pdev = of_find_device_by_node(np);
+ if (!pdev) {
+ pr_err("Unable to find pdev\n");
+ return pdev;
+ }
+
+ return dev_get_platdata(&pdev->dev);
+}
+EXPORT_SYMBOL(of_find_platdata_by_node);
+
#ifdef CONFIG_OF_ADDRESS
/*
* The following routines scan a subtree and registers a device for
diff --git a/include/linux/of_platform.h b/include/linux/of_platform.h
index fb908e5..77b770f 100644
--- a/include/linux/of_platform.h
+++ b/include/linux/of_platform.h
@@ -59,11 +59,17 @@ extern struct platform_device *of_device_alloc(struct device_node *np,
struct device *parent);
#ifdef CONFIG_OF
extern struct platform_device *of_find_device_by_node(struct device_node *np);
+extern void *of_find_platdata_by_node(struct device_node *np);
#else
static inline struct platform_device *of_find_device_by_node(struct device_node *np)
{
return NULL;
}
+
+static void *of_find_platdata_by_node(struct device_node *np)
+{
+ return NULL;
+}
#endif
/* Platform devices and busses creation */
--
1.9.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 8/9] pwm: pwm-omap-dmtimer: Adapt driver to utilize dmtimer pdata ops
2017-11-16 4:23 ` Keerthy
@ 2017-11-16 4:23 ` Keerthy
-1 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-11-16 4:23 UTC (permalink / raw)
To: tony, aaro.koskinen, thierry.reding
Cc: j-keerthy, linux, daniel.lezcano, robh+dt, linux-omap,
linux-arm-kernel, linux-pwm, grygorii.strashko,
sebastian.reichel, ladis
Adapt driver to utilize dmtimer pdata ops instead of pdata-quirks.
Signed-off-by: Keerthy <j-keerthy@ti.com>
---
Changes in v3:
* Used of_find_platdata_by_node function to fetch platform
data for timer node.
drivers/pwm/pwm-omap-dmtimer.c | 39 ++++++++++++++++++++++-----------------
1 file changed, 22 insertions(+), 17 deletions(-)
diff --git a/drivers/pwm/pwm-omap-dmtimer.c b/drivers/pwm/pwm-omap-dmtimer.c
index 5ad42f3..2caf46b 100644
--- a/drivers/pwm/pwm-omap-dmtimer.c
+++ b/drivers/pwm/pwm-omap-dmtimer.c
@@ -23,6 +23,7 @@
#include <linux/mutex.h>
#include <linux/of.h>
#include <linux/of_platform.h>
+#include <linux/platform_data/dmtimer-omap.h>
#include <linux/platform_data/pwm_omap_dmtimer.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
@@ -37,7 +38,7 @@ struct pwm_omap_dmtimer_chip {
struct pwm_chip chip;
struct mutex mutex;
pwm_omap_dmtimer *dm_timer;
- struct pwm_omap_dmtimer_pdata *pdata;
+ struct omap_dm_timer_ops *pdata;
struct platform_device *dm_timer_pdev;
};
@@ -242,19 +243,33 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev)
{
struct device_node *np = pdev->dev.of_node;
struct device_node *timer;
+ struct platform_device *timer_pdev;
struct pwm_omap_dmtimer_chip *omap;
- struct pwm_omap_dmtimer_pdata *pdata;
+ struct dmtimer_platform_data *timer_pdata;
+ struct omap_dm_timer_ops *pdata;
pwm_omap_dmtimer *dm_timer;
u32 v;
int status;
- pdata = dev_get_platdata(&pdev->dev);
- if (!pdata) {
- dev_err(&pdev->dev, "Missing dmtimer platform data\n");
+ timer = of_parse_phandle(np, "ti,timers", 0);
+ if (!timer)
+ return -ENODEV;
+
+ timer_pdev = of_find_device_by_node(timer);
+ if (!timer_pdev) {
+ dev_err(&pdev->dev, "Unable to find Timer pdev\n");
+ return -ENODEV;
+ }
+
+ timer_pdata = of_find_platdata_by_node(timer);
+ if (!timer_pdata) {
+ dev_err(&pdev->dev, "dmtimer pdata structure NULL\n");
return -EINVAL;
}
- if (!pdata->request_by_node ||
+ pdata = timer_pdata->timer_ops;
+
+ if (!pdata || !pdata->request_by_node ||
!pdata->free ||
!pdata->enable ||
!pdata->disable ||
@@ -270,10 +285,6 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev)
return -EINVAL;
}
- timer = of_parse_phandle(np, "ti,timers", 0);
- if (!timer)
- return -ENODEV;
-
if (!of_get_property(timer, "ti,timer-pwm", NULL)) {
dev_err(&pdev->dev, "Missing ti,timer-pwm capability\n");
return -ENODEV;
@@ -291,13 +302,7 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev)
omap->pdata = pdata;
omap->dm_timer = dm_timer;
-
- omap->dm_timer_pdev = of_find_device_by_node(timer);
- if (!omap->dm_timer_pdev) {
- dev_err(&pdev->dev, "Unable to find timer pdev\n");
- omap->pdata->free(dm_timer);
- return -EINVAL;
- }
+ omap->dm_timer_pdev = timer_pdev;
/*
* Ensure that the timer is stopped before we allow PWM core to call
--
1.9.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 8/9] pwm: pwm-omap-dmtimer: Adapt driver to utilize dmtimer pdata ops
@ 2017-11-16 4:23 ` Keerthy
0 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-11-16 4:23 UTC (permalink / raw)
To: linux-arm-kernel
Adapt driver to utilize dmtimer pdata ops instead of pdata-quirks.
Signed-off-by: Keerthy <j-keerthy@ti.com>
---
Changes in v3:
* Used of_find_platdata_by_node function to fetch platform
data for timer node.
drivers/pwm/pwm-omap-dmtimer.c | 39 ++++++++++++++++++++++-----------------
1 file changed, 22 insertions(+), 17 deletions(-)
diff --git a/drivers/pwm/pwm-omap-dmtimer.c b/drivers/pwm/pwm-omap-dmtimer.c
index 5ad42f3..2caf46b 100644
--- a/drivers/pwm/pwm-omap-dmtimer.c
+++ b/drivers/pwm/pwm-omap-dmtimer.c
@@ -23,6 +23,7 @@
#include <linux/mutex.h>
#include <linux/of.h>
#include <linux/of_platform.h>
+#include <linux/platform_data/dmtimer-omap.h>
#include <linux/platform_data/pwm_omap_dmtimer.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
@@ -37,7 +38,7 @@ struct pwm_omap_dmtimer_chip {
struct pwm_chip chip;
struct mutex mutex;
pwm_omap_dmtimer *dm_timer;
- struct pwm_omap_dmtimer_pdata *pdata;
+ struct omap_dm_timer_ops *pdata;
struct platform_device *dm_timer_pdev;
};
@@ -242,19 +243,33 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev)
{
struct device_node *np = pdev->dev.of_node;
struct device_node *timer;
+ struct platform_device *timer_pdev;
struct pwm_omap_dmtimer_chip *omap;
- struct pwm_omap_dmtimer_pdata *pdata;
+ struct dmtimer_platform_data *timer_pdata;
+ struct omap_dm_timer_ops *pdata;
pwm_omap_dmtimer *dm_timer;
u32 v;
int status;
- pdata = dev_get_platdata(&pdev->dev);
- if (!pdata) {
- dev_err(&pdev->dev, "Missing dmtimer platform data\n");
+ timer = of_parse_phandle(np, "ti,timers", 0);
+ if (!timer)
+ return -ENODEV;
+
+ timer_pdev = of_find_device_by_node(timer);
+ if (!timer_pdev) {
+ dev_err(&pdev->dev, "Unable to find Timer pdev\n");
+ return -ENODEV;
+ }
+
+ timer_pdata = of_find_platdata_by_node(timer);
+ if (!timer_pdata) {
+ dev_err(&pdev->dev, "dmtimer pdata structure NULL\n");
return -EINVAL;
}
- if (!pdata->request_by_node ||
+ pdata = timer_pdata->timer_ops;
+
+ if (!pdata || !pdata->request_by_node ||
!pdata->free ||
!pdata->enable ||
!pdata->disable ||
@@ -270,10 +285,6 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev)
return -EINVAL;
}
- timer = of_parse_phandle(np, "ti,timers", 0);
- if (!timer)
- return -ENODEV;
-
if (!of_get_property(timer, "ti,timer-pwm", NULL)) {
dev_err(&pdev->dev, "Missing ti,timer-pwm capability\n");
return -ENODEV;
@@ -291,13 +302,7 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev)
omap->pdata = pdata;
omap->dm_timer = dm_timer;
-
- omap->dm_timer_pdev = of_find_device_by_node(timer);
- if (!omap->dm_timer_pdev) {
- dev_err(&pdev->dev, "Unable to find timer pdev\n");
- omap->pdata->free(dm_timer);
- return -EINVAL;
- }
+ omap->dm_timer_pdev = timer_pdev;
/*
* Ensure that the timer is stopped before we allow PWM core to call
--
1.9.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 9/9] arm: omap: pdata-quirks: Remove unused timer pdata
2017-11-16 4:23 ` Keerthy
@ 2017-11-16 4:23 ` Keerthy
-1 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-11-16 4:23 UTC (permalink / raw)
To: tony, aaro.koskinen, thierry.reding
Cc: j-keerthy, linux, daniel.lezcano, robh+dt, linux-omap,
linux-arm-kernel, linux-pwm, grygorii.strashko,
sebastian.reichel, ladis
Remove unused timer pdata.
Signed-off-by: Keerthy <j-keerthy@ti.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
---
Changes in v3:
* Added Sebastian's Reviewed-by.
Changes in v2:
* No code changes in this v2 version. Only enhanced patch
statistics for renames.
arch/arm/mach-omap2/pdata-quirks.c | 32 --------------------------------
1 file changed, 32 deletions(-)
diff --git a/arch/arm/mach-omap2/pdata-quirks.c b/arch/arm/mach-omap2/pdata-quirks.c
index ad9df86..e7d7fc7 100644
--- a/arch/arm/mach-omap2/pdata-quirks.c
+++ b/arch/arm/mach-omap2/pdata-quirks.c
@@ -24,10 +24,8 @@
#include <linux/platform_data/hsmmc-omap.h>
#include <linux/platform_data/iommu-omap.h>
#include <linux/platform_data/wkup_m3.h>
-#include <linux/platform_data/pwm_omap_dmtimer.h>
#include <linux/platform_data/media/ir-rx51.h>
#include <linux/platform_data/asoc-ti-mcbsp.h>
-#include <clocksource/dmtimer.h>
#include "common.h"
#include "common-board-devices.h"
@@ -477,33 +475,6 @@ void omap_auxdata_legacy_init(struct device *dev)
dev->platform_data = &twl_gpio_auxdata;
}
-/* Dual mode timer PWM callbacks platdata */
-#if IS_ENABLED(CONFIG_OMAP_DM_TIMER)
-static struct pwm_omap_dmtimer_pdata pwm_dmtimer_pdata = {
- .request_by_node = omap_dm_timer_request_by_node,
- .request_specific = omap_dm_timer_request_specific,
- .request = omap_dm_timer_request,
- .set_source = omap_dm_timer_set_source,
- .get_irq = omap_dm_timer_get_irq,
- .set_int_enable = omap_dm_timer_set_int_enable,
- .set_int_disable = omap_dm_timer_set_int_disable,
- .free = omap_dm_timer_free,
- .enable = omap_dm_timer_enable,
- .disable = omap_dm_timer_disable,
- .get_fclk = omap_dm_timer_get_fclk,
- .start = omap_dm_timer_start,
- .stop = omap_dm_timer_stop,
- .set_load = omap_dm_timer_set_load,
- .set_match = omap_dm_timer_set_match,
- .set_pwm = omap_dm_timer_set_pwm,
- .set_prescaler = omap_dm_timer_set_prescaler,
- .read_counter = omap_dm_timer_read_counter,
- .write_counter = omap_dm_timer_write_counter,
- .read_status = omap_dm_timer_read_status,
- .write_status = omap_dm_timer_write_status,
-};
-#endif
-
static struct ir_rx51_platform_data __maybe_unused rx51_ir_data = {
.set_max_mpu_wakeup_lat = omap_pm_set_max_mpu_wakeup_lat,
};
@@ -572,9 +543,6 @@ static void __init omap3_mcbsp_init(void) {}
OF_DEV_AUXDATA("ti,am4372-wkup-m3", 0x44d00000, "44d00000.wkup_m3",
&wkup_m3_data),
#endif
-#if IS_ENABLED(CONFIG_OMAP_DM_TIMER)
- OF_DEV_AUXDATA("ti,omap-dmtimer-pwm", 0, NULL, &pwm_dmtimer_pdata),
-#endif
#if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5)
OF_DEV_AUXDATA("ti,omap4-iommu", 0x4a066000, "4a066000.mmu",
&omap4_iommu_pdata),
--
1.9.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH v3 9/9] arm: omap: pdata-quirks: Remove unused timer pdata
@ 2017-11-16 4:23 ` Keerthy
0 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-11-16 4:23 UTC (permalink / raw)
To: linux-arm-kernel
Remove unused timer pdata.
Signed-off-by: Keerthy <j-keerthy@ti.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
---
Changes in v3:
* Added Sebastian's Reviewed-by.
Changes in v2:
* No code changes in this v2 version. Only enhanced patch
statistics for renames.
arch/arm/mach-omap2/pdata-quirks.c | 32 --------------------------------
1 file changed, 32 deletions(-)
diff --git a/arch/arm/mach-omap2/pdata-quirks.c b/arch/arm/mach-omap2/pdata-quirks.c
index ad9df86..e7d7fc7 100644
--- a/arch/arm/mach-omap2/pdata-quirks.c
+++ b/arch/arm/mach-omap2/pdata-quirks.c
@@ -24,10 +24,8 @@
#include <linux/platform_data/hsmmc-omap.h>
#include <linux/platform_data/iommu-omap.h>
#include <linux/platform_data/wkup_m3.h>
-#include <linux/platform_data/pwm_omap_dmtimer.h>
#include <linux/platform_data/media/ir-rx51.h>
#include <linux/platform_data/asoc-ti-mcbsp.h>
-#include <clocksource/dmtimer.h>
#include "common.h"
#include "common-board-devices.h"
@@ -477,33 +475,6 @@ void omap_auxdata_legacy_init(struct device *dev)
dev->platform_data = &twl_gpio_auxdata;
}
-/* Dual mode timer PWM callbacks platdata */
-#if IS_ENABLED(CONFIG_OMAP_DM_TIMER)
-static struct pwm_omap_dmtimer_pdata pwm_dmtimer_pdata = {
- .request_by_node = omap_dm_timer_request_by_node,
- .request_specific = omap_dm_timer_request_specific,
- .request = omap_dm_timer_request,
- .set_source = omap_dm_timer_set_source,
- .get_irq = omap_dm_timer_get_irq,
- .set_int_enable = omap_dm_timer_set_int_enable,
- .set_int_disable = omap_dm_timer_set_int_disable,
- .free = omap_dm_timer_free,
- .enable = omap_dm_timer_enable,
- .disable = omap_dm_timer_disable,
- .get_fclk = omap_dm_timer_get_fclk,
- .start = omap_dm_timer_start,
- .stop = omap_dm_timer_stop,
- .set_load = omap_dm_timer_set_load,
- .set_match = omap_dm_timer_set_match,
- .set_pwm = omap_dm_timer_set_pwm,
- .set_prescaler = omap_dm_timer_set_prescaler,
- .read_counter = omap_dm_timer_read_counter,
- .write_counter = omap_dm_timer_write_counter,
- .read_status = omap_dm_timer_read_status,
- .write_status = omap_dm_timer_write_status,
-};
-#endif
-
static struct ir_rx51_platform_data __maybe_unused rx51_ir_data = {
.set_max_mpu_wakeup_lat = omap_pm_set_max_mpu_wakeup_lat,
};
@@ -572,9 +543,6 @@ static void __init omap3_mcbsp_init(void) {}
OF_DEV_AUXDATA("ti,am4372-wkup-m3", 0x44d00000, "44d00000.wkup_m3",
&wkup_m3_data),
#endif
-#if IS_ENABLED(CONFIG_OMAP_DM_TIMER)
- OF_DEV_AUXDATA("ti,omap-dmtimer-pwm", 0, NULL, &pwm_dmtimer_pdata),
-#endif
#if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5)
OF_DEV_AUXDATA("ti,omap4-iommu", 0x4a066000, "4a066000.mmu",
&omap4_iommu_pdata),
--
1.9.1
^ permalink raw reply related [flat|nested] 28+ messages in thread
* Re: [PATCH v3 8/9] pwm: pwm-omap-dmtimer: Adapt driver to utilize dmtimer pdata ops
2017-11-16 4:23 ` Keerthy
@ 2017-11-28 18:27 ` Grygorii Strashko
-1 siblings, 0 replies; 28+ messages in thread
From: Grygorii Strashko @ 2017-11-28 18:27 UTC (permalink / raw)
To: Keerthy, tony, aaro.koskinen, thierry.reding
Cc: linux, daniel.lezcano, robh+dt, linux-omap, linux-arm-kernel,
linux-pwm, sebastian.reichel, ladis
On 11/15/2017 10:23 PM, Keerthy wrote:
> Adapt driver to utilize dmtimer pdata ops instead of pdata-quirks.
>
> Signed-off-by: Keerthy <j-keerthy@ti.com>
> ---
>
> Changes in v3:
>
> * Used of_find_platdata_by_node function to fetch platform
> data for timer node.
>
> drivers/pwm/pwm-omap-dmtimer.c | 39 ++++++++++++++++++++++-----------------
> 1 file changed, 22 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/pwm/pwm-omap-dmtimer.c b/drivers/pwm/pwm-omap-dmtimer.c
> index 5ad42f3..2caf46b 100644
> --- a/drivers/pwm/pwm-omap-dmtimer.c
> +++ b/drivers/pwm/pwm-omap-dmtimer.c
> @@ -23,6 +23,7 @@
> #include <linux/mutex.h>
> #include <linux/of.h>
> #include <linux/of_platform.h>
> +#include <linux/platform_data/dmtimer-omap.h>
> #include <linux/platform_data/pwm_omap_dmtimer.h>
> #include <linux/platform_device.h>
> #include <linux/pm_runtime.h>
> @@ -37,7 +38,7 @@ struct pwm_omap_dmtimer_chip {
> struct pwm_chip chip;
> struct mutex mutex;
> pwm_omap_dmtimer *dm_timer;
> - struct pwm_omap_dmtimer_pdata *pdata;
> + struct omap_dm_timer_ops *pdata;
> struct platform_device *dm_timer_pdev;
> };
>
> @@ -242,19 +243,33 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev)
> {
> struct device_node *np = pdev->dev.of_node;
> struct device_node *timer;
> + struct platform_device *timer_pdev;
> struct pwm_omap_dmtimer_chip *omap;
> - struct pwm_omap_dmtimer_pdata *pdata;
> + struct dmtimer_platform_data *timer_pdata;
> + struct omap_dm_timer_ops *pdata;
> pwm_omap_dmtimer *dm_timer;
> u32 v;
> int status;
>
> - pdata = dev_get_platdata(&pdev->dev);
> - if (!pdata) {
> - dev_err(&pdev->dev, "Missing dmtimer platform data\n");
> + timer = of_parse_phandle(np, "ti,timers", 0);
> + if (!timer)
> + return -ENODEV;
> +
> + timer_pdev = of_find_device_by_node(timer);
> + if (!timer_pdev) {
> + dev_err(&pdev->dev, "Unable to find Timer pdev\n");
> + return -ENODEV;
> + }
> +
> + timer_pdata = of_find_platdata_by_node(timer);
> + if (!timer_pdata) {
> + dev_err(&pdev->dev, "dmtimer pdata structure NULL\n");
> return -EINVAL;
> }
Huh. I think It might be better if you add smth. like
struct omap_dm_timer *dm_timer = of_omap_dm_timer_get(parent_np, "ti,timers", idx);
struct omap_dm_timer_ops *pdata = omap_dm_timer_get_ops(dm_timer);
so all DT and platdata implementation details will be hidden.
>
> - if (!pdata->request_by_node ||
> + pdata = timer_pdata->timer_ops;
> +
> + if (!pdata || !pdata->request_by_node ||
> !pdata->free ||
> !pdata->enable ||
> !pdata->disable ||
> @@ -270,10 +285,6 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev)
> return -EINVAL;
> }
>
> - timer = of_parse_phandle(np, "ti,timers", 0);
> - if (!timer)
> - return -ENODEV;
> -
> if (!of_get_property(timer, "ti,timer-pwm", NULL)) {
> dev_err(&pdev->dev, "Missing ti,timer-pwm capability\n");
> return -ENODEV;
> @@ -291,13 +302,7 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev)
>
> omap->pdata = pdata;
> omap->dm_timer = dm_timer;
> -
> - omap->dm_timer_pdev = of_find_device_by_node(timer);
> - if (!omap->dm_timer_pdev) {
> - dev_err(&pdev->dev, "Unable to find timer pdev\n");
> - omap->pdata->free(dm_timer);
> - return -EINVAL;
> - }
> + omap->dm_timer_pdev = timer_pdev;
>
> /*
> * Ensure that the timer is stopped before we allow PWM core to call
>
--
regards,
-grygorii
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH v3 8/9] pwm: pwm-omap-dmtimer: Adapt driver to utilize dmtimer pdata ops
@ 2017-11-28 18:27 ` Grygorii Strashko
0 siblings, 0 replies; 28+ messages in thread
From: Grygorii Strashko @ 2017-11-28 18:27 UTC (permalink / raw)
To: linux-arm-kernel
On 11/15/2017 10:23 PM, Keerthy wrote:
> Adapt driver to utilize dmtimer pdata ops instead of pdata-quirks.
>
> Signed-off-by: Keerthy <j-keerthy@ti.com>
> ---
>
> Changes in v3:
>
> * Used of_find_platdata_by_node function to fetch platform
> data for timer node.
>
> drivers/pwm/pwm-omap-dmtimer.c | 39 ++++++++++++++++++++++-----------------
> 1 file changed, 22 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/pwm/pwm-omap-dmtimer.c b/drivers/pwm/pwm-omap-dmtimer.c
> index 5ad42f3..2caf46b 100644
> --- a/drivers/pwm/pwm-omap-dmtimer.c
> +++ b/drivers/pwm/pwm-omap-dmtimer.c
> @@ -23,6 +23,7 @@
> #include <linux/mutex.h>
> #include <linux/of.h>
> #include <linux/of_platform.h>
> +#include <linux/platform_data/dmtimer-omap.h>
> #include <linux/platform_data/pwm_omap_dmtimer.h>
> #include <linux/platform_device.h>
> #include <linux/pm_runtime.h>
> @@ -37,7 +38,7 @@ struct pwm_omap_dmtimer_chip {
> struct pwm_chip chip;
> struct mutex mutex;
> pwm_omap_dmtimer *dm_timer;
> - struct pwm_omap_dmtimer_pdata *pdata;
> + struct omap_dm_timer_ops *pdata;
> struct platform_device *dm_timer_pdev;
> };
>
> @@ -242,19 +243,33 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev)
> {
> struct device_node *np = pdev->dev.of_node;
> struct device_node *timer;
> + struct platform_device *timer_pdev;
> struct pwm_omap_dmtimer_chip *omap;
> - struct pwm_omap_dmtimer_pdata *pdata;
> + struct dmtimer_platform_data *timer_pdata;
> + struct omap_dm_timer_ops *pdata;
> pwm_omap_dmtimer *dm_timer;
> u32 v;
> int status;
>
> - pdata = dev_get_platdata(&pdev->dev);
> - if (!pdata) {
> - dev_err(&pdev->dev, "Missing dmtimer platform data\n");
> + timer = of_parse_phandle(np, "ti,timers", 0);
> + if (!timer)
> + return -ENODEV;
> +
> + timer_pdev = of_find_device_by_node(timer);
> + if (!timer_pdev) {
> + dev_err(&pdev->dev, "Unable to find Timer pdev\n");
> + return -ENODEV;
> + }
> +
> + timer_pdata = of_find_platdata_by_node(timer);
> + if (!timer_pdata) {
> + dev_err(&pdev->dev, "dmtimer pdata structure NULL\n");
> return -EINVAL;
> }
Huh. I think It might be better if you add smth. like
struct omap_dm_timer *dm_timer = of_omap_dm_timer_get(parent_np, "ti,timers", idx);
struct omap_dm_timer_ops *pdata = omap_dm_timer_get_ops(dm_timer);
so all DT and platdata implementation details will be hidden.
>
> - if (!pdata->request_by_node ||
> + pdata = timer_pdata->timer_ops;
> +
> + if (!pdata || !pdata->request_by_node ||
> !pdata->free ||
> !pdata->enable ||
> !pdata->disable ||
> @@ -270,10 +285,6 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev)
> return -EINVAL;
> }
>
> - timer = of_parse_phandle(np, "ti,timers", 0);
> - if (!timer)
> - return -ENODEV;
> -
> if (!of_get_property(timer, "ti,timer-pwm", NULL)) {
> dev_err(&pdev->dev, "Missing ti,timer-pwm capability\n");
> return -ENODEV;
> @@ -291,13 +302,7 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev)
>
> omap->pdata = pdata;
> omap->dm_timer = dm_timer;
> -
> - omap->dm_timer_pdev = of_find_device_by_node(timer);
> - if (!omap->dm_timer_pdev) {
> - dev_err(&pdev->dev, "Unable to find timer pdev\n");
> - omap->pdata->free(dm_timer);
> - return -EINVAL;
> - }
> + omap->dm_timer_pdev = timer_pdev;
>
> /*
> * Ensure that the timer is stopped before we allow PWM core to call
>
--
regards,
-grygorii
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH v3 8/9] pwm: pwm-omap-dmtimer: Adapt driver to utilize dmtimer pdata ops
2017-11-28 18:27 ` Grygorii Strashko
@ 2017-11-30 9:36 ` Keerthy
-1 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-11-30 9:36 UTC (permalink / raw)
To: Strashko, Grygorii, tony, aaro.koskinen, thierry.reding
Cc: linux, daniel.lezcano, robh+dt, linux-omap, linux-arm-kernel,
linux-pwm, sebastian.reichel, ladis
On Tuesday 28 November 2017 11:57 PM, Strashko, Grygorii wrote:
>
>
> On 11/15/2017 10:23 PM, Keerthy wrote:
>> Adapt driver to utilize dmtimer pdata ops instead of pdata-quirks.
>>
>> Signed-off-by: Keerthy <j-keerthy@ti.com>
>> ---
>>
>> Changes in v3:
>>
>> * Used of_find_platdata_by_node function to fetch platform
>> data for timer node.
>>
>> drivers/pwm/pwm-omap-dmtimer.c | 39 ++++++++++++++++++++++-----------------
>> 1 file changed, 22 insertions(+), 17 deletions(-)
>>
>> diff --git a/drivers/pwm/pwm-omap-dmtimer.c b/drivers/pwm/pwm-omap-dmtimer.c
>> index 5ad42f3..2caf46b 100644
>> --- a/drivers/pwm/pwm-omap-dmtimer.c
>> +++ b/drivers/pwm/pwm-omap-dmtimer.c
>> @@ -23,6 +23,7 @@
>> #include <linux/mutex.h>
>> #include <linux/of.h>
>> #include <linux/of_platform.h>
>> +#include <linux/platform_data/dmtimer-omap.h>
>> #include <linux/platform_data/pwm_omap_dmtimer.h>
>> #include <linux/platform_device.h>
>> #include <linux/pm_runtime.h>
>> @@ -37,7 +38,7 @@ struct pwm_omap_dmtimer_chip {
>> struct pwm_chip chip;
>> struct mutex mutex;
>> pwm_omap_dmtimer *dm_timer;
>> - struct pwm_omap_dmtimer_pdata *pdata;
>> + struct omap_dm_timer_ops *pdata;
>> struct platform_device *dm_timer_pdev;
>> };
>>
>> @@ -242,19 +243,33 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev)
>> {
>> struct device_node *np = pdev->dev.of_node;
>> struct device_node *timer;
>> + struct platform_device *timer_pdev;
>> struct pwm_omap_dmtimer_chip *omap;
>> - struct pwm_omap_dmtimer_pdata *pdata;
>> + struct dmtimer_platform_data *timer_pdata;
>> + struct omap_dm_timer_ops *pdata;
>> pwm_omap_dmtimer *dm_timer;
>> u32 v;
>> int status;
>>
>> - pdata = dev_get_platdata(&pdev->dev);
>> - if (!pdata) {
>> - dev_err(&pdev->dev, "Missing dmtimer platform data\n");
>> + timer = of_parse_phandle(np, "ti,timers", 0);
>> + if (!timer)
>> + return -ENODEV;
>> +
>> + timer_pdev = of_find_device_by_node(timer);
>> + if (!timer_pdev) {
>> + dev_err(&pdev->dev, "Unable to find Timer pdev\n");
>> + return -ENODEV;
>> + }
>> +
>> + timer_pdata = of_find_platdata_by_node(timer);
>> + if (!timer_pdata) {
>> + dev_err(&pdev->dev, "dmtimer pdata structure NULL\n");
>> return -EINVAL;
>> }
>
> Huh. I think It might be better if you add smth. like
>
> struct omap_dm_timer *dm_timer = of_omap_dm_timer_get(parent_np, "ti,timers", idx);
>
> struct omap_dm_timer_ops *pdata = omap_dm_timer_get_ops(dm_timer);
>
> so all DT and platdata implementation details will be hidden.
Grygorii,
This driver is already fetching:
omap->dm_timer_pdev = of_find_device_by_node(timer);
It stores dm_timer_pdev in struct pwm_omap_dmtimer_chip.
So we already need:
timer = of_parse_phandle(np, "ti,timers", 0);
and
omap->dm_timer_pdev = of_find_device_by_node(timer);
So why not just do:
struct omap_dm_timer_ops *pdata =
omap_dm_timer_get_ops(omap->dm_timer_pdev);
Regards,
Keerthy
>
>
>>
>> - if (!pdata->request_by_node ||
>> + pdata = timer_pdata->timer_ops;
>> +
>> + if (!pdata || !pdata->request_by_node ||
>> !pdata->free ||
>> !pdata->enable ||
>> !pdata->disable ||
>> @@ -270,10 +285,6 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev)
>> return -EINVAL;
>> }
>>
>> - timer = of_parse_phandle(np, "ti,timers", 0);
>> - if (!timer)
>> - return -ENODEV;
>> -
>> if (!of_get_property(timer, "ti,timer-pwm", NULL)) {
>> dev_err(&pdev->dev, "Missing ti,timer-pwm capability\n");
>> return -ENODEV;
>> @@ -291,13 +302,7 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev)
>>
>> omap->pdata = pdata;
>> omap->dm_timer = dm_timer;
>> -
>> - omap->dm_timer_pdev = of_find_device_by_node(timer);
>> - if (!omap->dm_timer_pdev) {
>> - dev_err(&pdev->dev, "Unable to find timer pdev\n");
>> - omap->pdata->free(dm_timer);
>> - return -EINVAL;
>> - }
>> + omap->dm_timer_pdev = timer_pdev;
Here we need timer_pdev anyways.
>>
>> /*
>> * Ensure that the timer is stopped before we allow PWM core to call
>>
>
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH v3 8/9] pwm: pwm-omap-dmtimer: Adapt driver to utilize dmtimer pdata ops
@ 2017-11-30 9:36 ` Keerthy
0 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-11-30 9:36 UTC (permalink / raw)
To: linux-arm-kernel
On Tuesday 28 November 2017 11:57 PM, Strashko, Grygorii wrote:
>
>
> On 11/15/2017 10:23 PM, Keerthy wrote:
>> Adapt driver to utilize dmtimer pdata ops instead of pdata-quirks.
>>
>> Signed-off-by: Keerthy <j-keerthy@ti.com>
>> ---
>>
>> Changes in v3:
>>
>> * Used of_find_platdata_by_node function to fetch platform
>> data for timer node.
>>
>> drivers/pwm/pwm-omap-dmtimer.c | 39 ++++++++++++++++++++++-----------------
>> 1 file changed, 22 insertions(+), 17 deletions(-)
>>
>> diff --git a/drivers/pwm/pwm-omap-dmtimer.c b/drivers/pwm/pwm-omap-dmtimer.c
>> index 5ad42f3..2caf46b 100644
>> --- a/drivers/pwm/pwm-omap-dmtimer.c
>> +++ b/drivers/pwm/pwm-omap-dmtimer.c
>> @@ -23,6 +23,7 @@
>> #include <linux/mutex.h>
>> #include <linux/of.h>
>> #include <linux/of_platform.h>
>> +#include <linux/platform_data/dmtimer-omap.h>
>> #include <linux/platform_data/pwm_omap_dmtimer.h>
>> #include <linux/platform_device.h>
>> #include <linux/pm_runtime.h>
>> @@ -37,7 +38,7 @@ struct pwm_omap_dmtimer_chip {
>> struct pwm_chip chip;
>> struct mutex mutex;
>> pwm_omap_dmtimer *dm_timer;
>> - struct pwm_omap_dmtimer_pdata *pdata;
>> + struct omap_dm_timer_ops *pdata;
>> struct platform_device *dm_timer_pdev;
>> };
>>
>> @@ -242,19 +243,33 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev)
>> {
>> struct device_node *np = pdev->dev.of_node;
>> struct device_node *timer;
>> + struct platform_device *timer_pdev;
>> struct pwm_omap_dmtimer_chip *omap;
>> - struct pwm_omap_dmtimer_pdata *pdata;
>> + struct dmtimer_platform_data *timer_pdata;
>> + struct omap_dm_timer_ops *pdata;
>> pwm_omap_dmtimer *dm_timer;
>> u32 v;
>> int status;
>>
>> - pdata = dev_get_platdata(&pdev->dev);
>> - if (!pdata) {
>> - dev_err(&pdev->dev, "Missing dmtimer platform data\n");
>> + timer = of_parse_phandle(np, "ti,timers", 0);
>> + if (!timer)
>> + return -ENODEV;
>> +
>> + timer_pdev = of_find_device_by_node(timer);
>> + if (!timer_pdev) {
>> + dev_err(&pdev->dev, "Unable to find Timer pdev\n");
>> + return -ENODEV;
>> + }
>> +
>> + timer_pdata = of_find_platdata_by_node(timer);
>> + if (!timer_pdata) {
>> + dev_err(&pdev->dev, "dmtimer pdata structure NULL\n");
>> return -EINVAL;
>> }
>
> Huh. I think It might be better if you add smth. like
>
> struct omap_dm_timer *dm_timer = of_omap_dm_timer_get(parent_np, "ti,timers", idx);
>
> struct omap_dm_timer_ops *pdata = omap_dm_timer_get_ops(dm_timer);
>
> so all DT and platdata implementation details will be hidden.
Grygorii,
This driver is already fetching:
omap->dm_timer_pdev = of_find_device_by_node(timer);
It stores dm_timer_pdev in struct pwm_omap_dmtimer_chip.
So we already need:
timer = of_parse_phandle(np, "ti,timers", 0);
and
omap->dm_timer_pdev = of_find_device_by_node(timer);
So why not just do:
struct omap_dm_timer_ops *pdata =
omap_dm_timer_get_ops(omap->dm_timer_pdev);
Regards,
Keerthy
>
>
>>
>> - if (!pdata->request_by_node ||
>> + pdata = timer_pdata->timer_ops;
>> +
>> + if (!pdata || !pdata->request_by_node ||
>> !pdata->free ||
>> !pdata->enable ||
>> !pdata->disable ||
>> @@ -270,10 +285,6 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev)
>> return -EINVAL;
>> }
>>
>> - timer = of_parse_phandle(np, "ti,timers", 0);
>> - if (!timer)
>> - return -ENODEV;
>> -
>> if (!of_get_property(timer, "ti,timer-pwm", NULL)) {
>> dev_err(&pdev->dev, "Missing ti,timer-pwm capability\n");
>> return -ENODEV;
>> @@ -291,13 +302,7 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev)
>>
>> omap->pdata = pdata;
>> omap->dm_timer = dm_timer;
>> -
>> - omap->dm_timer_pdev = of_find_device_by_node(timer);
>> - if (!omap->dm_timer_pdev) {
>> - dev_err(&pdev->dev, "Unable to find timer pdev\n");
>> - omap->pdata->free(dm_timer);
>> - return -EINVAL;
>> - }
>> + omap->dm_timer_pdev = timer_pdev;
Here we need timer_pdev anyways.
>>
>> /*
>> * Ensure that the timer is stopped before we allow PWM core to call
>>
>
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH v3 8/9] pwm: pwm-omap-dmtimer: Adapt driver to utilize dmtimer pdata ops
2017-11-30 9:36 ` Keerthy
@ 2017-11-30 23:19 ` Grygorii Strashko
-1 siblings, 0 replies; 28+ messages in thread
From: Grygorii Strashko @ 2017-11-30 23:19 UTC (permalink / raw)
To: Keerthy, tony, aaro.koskinen, thierry.reding
Cc: linux, daniel.lezcano, robh+dt, linux-omap, linux-arm-kernel,
linux-pwm, sebastian.reichel, ladis
On 11/30/2017 03:36 AM, Keerthy wrote:
>
>
> On Tuesday 28 November 2017 11:57 PM, Strashko, Grygorii wrote:
>>
>>
>> On 11/15/2017 10:23 PM, Keerthy wrote:
>>> Adapt driver to utilize dmtimer pdata ops instead of pdata-quirks.
>>>
>>> Signed-off-by: Keerthy <j-keerthy@ti.com>
>>> ---
>>>
>>> Changes in v3:
>>>
>>> * Used of_find_platdata_by_node function to fetch platform
>>> data for timer node.
>>>
>>> drivers/pwm/pwm-omap-dmtimer.c | 39 ++++++++++++++++++++++-----------------
>>> 1 file changed, 22 insertions(+), 17 deletions(-)
>>>
>>> diff --git a/drivers/pwm/pwm-omap-dmtimer.c b/drivers/pwm/pwm-omap-dmtimer.c
>>> index 5ad42f3..2caf46b 100644
>>> --- a/drivers/pwm/pwm-omap-dmtimer.c
>>> +++ b/drivers/pwm/pwm-omap-dmtimer.c
>>> @@ -23,6 +23,7 @@
>>> #include <linux/mutex.h>
>>> #include <linux/of.h>
>>> #include <linux/of_platform.h>
>>> +#include <linux/platform_data/dmtimer-omap.h>
>>> #include <linux/platform_data/pwm_omap_dmtimer.h>
>>> #include <linux/platform_device.h>
>>> #include <linux/pm_runtime.h>
>>> @@ -37,7 +38,7 @@ struct pwm_omap_dmtimer_chip {
>>> struct pwm_chip chip;
>>> struct mutex mutex;
>>> pwm_omap_dmtimer *dm_timer;
>>> - struct pwm_omap_dmtimer_pdata *pdata;
>>> + struct omap_dm_timer_ops *pdata;
>>> struct platform_device *dm_timer_pdev;
>>> };
>>>
>>> @@ -242,19 +243,33 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev)
>>> {
>>> struct device_node *np = pdev->dev.of_node;
>>> struct device_node *timer;
>>> + struct platform_device *timer_pdev;
>>> struct pwm_omap_dmtimer_chip *omap;
>>> - struct pwm_omap_dmtimer_pdata *pdata;
>>> + struct dmtimer_platform_data *timer_pdata;
>>> + struct omap_dm_timer_ops *pdata;
>>> pwm_omap_dmtimer *dm_timer;
>>> u32 v;
>>> int status;
>>>
>>> - pdata = dev_get_platdata(&pdev->dev);
>>> - if (!pdata) {
>>> - dev_err(&pdev->dev, "Missing dmtimer platform data\n");
>>> + timer = of_parse_phandle(np, "ti,timers", 0);
>>> + if (!timer)
>>> + return -ENODEV;
>>> +
>>> + timer_pdev = of_find_device_by_node(timer);
>>> + if (!timer_pdev) {
>>> + dev_err(&pdev->dev, "Unable to find Timer pdev\n");
>>> + return -ENODEV;
>>> + }
>>> +
>>> + timer_pdata = of_find_platdata_by_node(timer);
>>> + if (!timer_pdata) {
>>> + dev_err(&pdev->dev, "dmtimer pdata structure NULL\n");
>>> return -EINVAL;
>>> }
>>
>> Huh. I think It might be better if you add smth. like
>>
>> struct omap_dm_timer *dm_timer = of_omap_dm_timer_get(parent_np, "ti,timers", idx);
>>
>> struct omap_dm_timer_ops *pdata = omap_dm_timer_get_ops(dm_timer);
>>
>> so all DT and platdata implementation details will be hidden.
>
> Grygorii,
>
> This driver is already fetching:
>
> omap->dm_timer_pdev = of_find_device_by_node(timer);
>
> It stores dm_timer_pdev in struct pwm_omap_dmtimer_chip.
> So we already need:
> timer = of_parse_phandle(np, "ti,timers", 0);
> and
> omap->dm_timer_pdev = of_find_device_by_node(timer);
>
> So why not just do:
>
> struct omap_dm_timer_ops *pdata =
> omap_dm_timer_get_ops(omap->dm_timer_pdev);
if you dont want to do additional optimizations as part of migration
might be
dev_get_platdata(&omap->dm_timer_pdev->dev);
would be enough.
But, again, PWM driver don't need to know so many details about
DM timer implementation and internal structure as consumer.
--
regards,
-grygorii
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH v3 8/9] pwm: pwm-omap-dmtimer: Adapt driver to utilize dmtimer pdata ops
@ 2017-11-30 23:19 ` Grygorii Strashko
0 siblings, 0 replies; 28+ messages in thread
From: Grygorii Strashko @ 2017-11-30 23:19 UTC (permalink / raw)
To: linux-arm-kernel
On 11/30/2017 03:36 AM, Keerthy wrote:
>
>
> On Tuesday 28 November 2017 11:57 PM, Strashko, Grygorii wrote:
>>
>>
>> On 11/15/2017 10:23 PM, Keerthy wrote:
>>> Adapt driver to utilize dmtimer pdata ops instead of pdata-quirks.
>>>
>>> Signed-off-by: Keerthy <j-keerthy@ti.com>
>>> ---
>>>
>>> Changes in v3:
>>>
>>> * Used of_find_platdata_by_node function to fetch platform
>>> data for timer node.
>>>
>>> drivers/pwm/pwm-omap-dmtimer.c | 39 ++++++++++++++++++++++-----------------
>>> 1 file changed, 22 insertions(+), 17 deletions(-)
>>>
>>> diff --git a/drivers/pwm/pwm-omap-dmtimer.c b/drivers/pwm/pwm-omap-dmtimer.c
>>> index 5ad42f3..2caf46b 100644
>>> --- a/drivers/pwm/pwm-omap-dmtimer.c
>>> +++ b/drivers/pwm/pwm-omap-dmtimer.c
>>> @@ -23,6 +23,7 @@
>>> #include <linux/mutex.h>
>>> #include <linux/of.h>
>>> #include <linux/of_platform.h>
>>> +#include <linux/platform_data/dmtimer-omap.h>
>>> #include <linux/platform_data/pwm_omap_dmtimer.h>
>>> #include <linux/platform_device.h>
>>> #include <linux/pm_runtime.h>
>>> @@ -37,7 +38,7 @@ struct pwm_omap_dmtimer_chip {
>>> struct pwm_chip chip;
>>> struct mutex mutex;
>>> pwm_omap_dmtimer *dm_timer;
>>> - struct pwm_omap_dmtimer_pdata *pdata;
>>> + struct omap_dm_timer_ops *pdata;
>>> struct platform_device *dm_timer_pdev;
>>> };
>>>
>>> @@ -242,19 +243,33 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev)
>>> {
>>> struct device_node *np = pdev->dev.of_node;
>>> struct device_node *timer;
>>> + struct platform_device *timer_pdev;
>>> struct pwm_omap_dmtimer_chip *omap;
>>> - struct pwm_omap_dmtimer_pdata *pdata;
>>> + struct dmtimer_platform_data *timer_pdata;
>>> + struct omap_dm_timer_ops *pdata;
>>> pwm_omap_dmtimer *dm_timer;
>>> u32 v;
>>> int status;
>>>
>>> - pdata = dev_get_platdata(&pdev->dev);
>>> - if (!pdata) {
>>> - dev_err(&pdev->dev, "Missing dmtimer platform data\n");
>>> + timer = of_parse_phandle(np, "ti,timers", 0);
>>> + if (!timer)
>>> + return -ENODEV;
>>> +
>>> + timer_pdev = of_find_device_by_node(timer);
>>> + if (!timer_pdev) {
>>> + dev_err(&pdev->dev, "Unable to find Timer pdev\n");
>>> + return -ENODEV;
>>> + }
>>> +
>>> + timer_pdata = of_find_platdata_by_node(timer);
>>> + if (!timer_pdata) {
>>> + dev_err(&pdev->dev, "dmtimer pdata structure NULL\n");
>>> return -EINVAL;
>>> }
>>
>> Huh. I think It might be better if you add smth. like
>>
>> struct omap_dm_timer *dm_timer = of_omap_dm_timer_get(parent_np, "ti,timers", idx);
>>
>> struct omap_dm_timer_ops *pdata = omap_dm_timer_get_ops(dm_timer);
>>
>> so all DT and platdata implementation details will be hidden.
>
> Grygorii,
>
> This driver is already fetching:
>
> omap->dm_timer_pdev = of_find_device_by_node(timer);
>
> It stores dm_timer_pdev in struct pwm_omap_dmtimer_chip.
> So we already need:
> timer = of_parse_phandle(np, "ti,timers", 0);
> and
> omap->dm_timer_pdev = of_find_device_by_node(timer);
>
> So why not just do:
>
> struct omap_dm_timer_ops *pdata =
> omap_dm_timer_get_ops(omap->dm_timer_pdev);
if you dont want to do additional optimizations as part of migration
might be
dev_get_platdata(&omap->dm_timer_pdev->dev);
would be enough.
But, again, PWM driver don't need to know so many details about
DM timer implementation and internal structure as consumer.
--
regards,
-grygorii
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH v3 8/9] pwm: pwm-omap-dmtimer: Adapt driver to utilize dmtimer pdata ops
2017-11-30 23:19 ` Grygorii Strashko
@ 2017-12-01 4:32 ` Keerthy
-1 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-12-01 4:32 UTC (permalink / raw)
To: Grygorii Strashko, tony, aaro.koskinen, thierry.reding
Cc: linux, daniel.lezcano, robh+dt, linux-omap, linux-arm-kernel,
linux-pwm, sebastian.reichel, ladis
On Friday 01 December 2017 04:49 AM, Grygorii Strashko wrote:
>
>
> On 11/30/2017 03:36 AM, Keerthy wrote:
>>
>>
>> On Tuesday 28 November 2017 11:57 PM, Strashko, Grygorii wrote:
>>>
>>>
>>> On 11/15/2017 10:23 PM, Keerthy wrote:
>>>> Adapt driver to utilize dmtimer pdata ops instead of pdata-quirks.
>>>>
>>>> Signed-off-by: Keerthy <j-keerthy@ti.com>
>>>> ---
>>>>
>>>> Changes in v3:
>>>>
>>>> * Used of_find_platdata_by_node function to fetch platform
>>>> data for timer node.
>>>>
>>>> drivers/pwm/pwm-omap-dmtimer.c | 39
>>>> ++++++++++++++++++++++-----------------
>>>> 1 file changed, 22 insertions(+), 17 deletions(-)
>>>>
>>>> diff --git a/drivers/pwm/pwm-omap-dmtimer.c
>>>> b/drivers/pwm/pwm-omap-dmtimer.c
>>>> index 5ad42f3..2caf46b 100644
>>>> --- a/drivers/pwm/pwm-omap-dmtimer.c
>>>> +++ b/drivers/pwm/pwm-omap-dmtimer.c
>>>> @@ -23,6 +23,7 @@
>>>> #include <linux/mutex.h>
>>>> #include <linux/of.h>
>>>> #include <linux/of_platform.h>
>>>> +#include <linux/platform_data/dmtimer-omap.h>
>>>> #include <linux/platform_data/pwm_omap_dmtimer.h>
>>>> #include <linux/platform_device.h>
>>>> #include <linux/pm_runtime.h>
>>>> @@ -37,7 +38,7 @@ struct pwm_omap_dmtimer_chip {
>>>> struct pwm_chip chip;
>>>> struct mutex mutex;
>>>> pwm_omap_dmtimer *dm_timer;
>>>> - struct pwm_omap_dmtimer_pdata *pdata;
>>>> + struct omap_dm_timer_ops *pdata;
>>>> struct platform_device *dm_timer_pdev;
>>>> };
>>>> @@ -242,19 +243,33 @@ static int pwm_omap_dmtimer_probe(struct
>>>> platform_device *pdev)
>>>> {
>>>> struct device_node *np = pdev->dev.of_node;
>>>> struct device_node *timer;
>>>> + struct platform_device *timer_pdev;
>>>> struct pwm_omap_dmtimer_chip *omap;
>>>> - struct pwm_omap_dmtimer_pdata *pdata;
>>>> + struct dmtimer_platform_data *timer_pdata;
>>>> + struct omap_dm_timer_ops *pdata;
>>>> pwm_omap_dmtimer *dm_timer;
>>>> u32 v;
>>>> int status;
>>>> - pdata = dev_get_platdata(&pdev->dev);
>>>> - if (!pdata) {
>>>> - dev_err(&pdev->dev, "Missing dmtimer platform data\n");
>>>> + timer = of_parse_phandle(np, "ti,timers", 0);
>>>> + if (!timer)
>>>> + return -ENODEV;
>>>> +
>>>> + timer_pdev = of_find_device_by_node(timer);
>>>> + if (!timer_pdev) {
>>>> + dev_err(&pdev->dev, "Unable to find Timer pdev\n");
>>>> + return -ENODEV;
>>>> + }
>>>> +
>>>> + timer_pdata = of_find_platdata_by_node(timer);
>>>> + if (!timer_pdata) {
>>>> + dev_err(&pdev->dev, "dmtimer pdata structure NULL\n");
>>>> return -EINVAL;
>>>> }
>>>
>>> Huh. I think It might be better if you add smth. like
>>>
>>> struct omap_dm_timer *dm_timer = of_omap_dm_timer_get(parent_np,
>>> "ti,timers", idx);
>>>
>>> struct omap_dm_timer_ops *pdata = omap_dm_timer_get_ops(dm_timer);
>>>
>>> so all DT and platdata implementation details will be hidden.
>>
>> Grygorii,
>>
>> This driver is already fetching:
>>
>> omap->dm_timer_pdev = of_find_device_by_node(timer);
>>
>> It stores dm_timer_pdev in struct pwm_omap_dmtimer_chip.
>> So we already need:
>> timer = of_parse_phandle(np, "ti,timers", 0);
>> and
>> omap->dm_timer_pdev = of_find_device_by_node(timer);
>>
>> So why not just do:
>>
>> struct omap_dm_timer_ops *pdata =
>> omap_dm_timer_get_ops(omap->dm_timer_pdev);
>
> if you dont want to do additional optimizations as part of migration
> might be
> dev_get_platdata(&omap->dm_timer_pdev->dev);
>
> would be enough.
That is pretty much what i want to do with the migration series.
>
> But, again, PWM driver don't need to know so many details about
> DM timer implementation and internal structure as consumer.
Totally understand that. I will follow up with more clean ups once the
code is migrated. Hope that is a reasonable approach.
>
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH v3 8/9] pwm: pwm-omap-dmtimer: Adapt driver to utilize dmtimer pdata ops
@ 2017-12-01 4:32 ` Keerthy
0 siblings, 0 replies; 28+ messages in thread
From: Keerthy @ 2017-12-01 4:32 UTC (permalink / raw)
To: linux-arm-kernel
On Friday 01 December 2017 04:49 AM, Grygorii Strashko wrote:
>
>
> On 11/30/2017 03:36 AM, Keerthy wrote:
>>
>>
>> On Tuesday 28 November 2017 11:57 PM, Strashko, Grygorii wrote:
>>>
>>>
>>> On 11/15/2017 10:23 PM, Keerthy wrote:
>>>> Adapt driver to utilize dmtimer pdata ops instead of pdata-quirks.
>>>>
>>>> Signed-off-by: Keerthy <j-keerthy@ti.com>
>>>> ---
>>>>
>>>> Changes in v3:
>>>>
>>>> ??? * Used of_find_platdata_by_node function to fetch platform
>>>> ????? data for timer node.
>>>>
>>>> ?? drivers/pwm/pwm-omap-dmtimer.c | 39
>>>> ++++++++++++++++++++++-----------------
>>>> ?? 1 file changed, 22 insertions(+), 17 deletions(-)
>>>>
>>>> diff --git a/drivers/pwm/pwm-omap-dmtimer.c
>>>> b/drivers/pwm/pwm-omap-dmtimer.c
>>>> index 5ad42f3..2caf46b 100644
>>>> --- a/drivers/pwm/pwm-omap-dmtimer.c
>>>> +++ b/drivers/pwm/pwm-omap-dmtimer.c
>>>> @@ -23,6 +23,7 @@
>>>> ?? #include <linux/mutex.h>
>>>> ?? #include <linux/of.h>
>>>> ?? #include <linux/of_platform.h>
>>>> +#include <linux/platform_data/dmtimer-omap.h>
>>>> ?? #include <linux/platform_data/pwm_omap_dmtimer.h>
>>>> ?? #include <linux/platform_device.h>
>>>> ?? #include <linux/pm_runtime.h>
>>>> @@ -37,7 +38,7 @@ struct pwm_omap_dmtimer_chip {
>>>> ?????? struct pwm_chip chip;
>>>> ?????? struct mutex mutex;
>>>> ?????? pwm_omap_dmtimer *dm_timer;
>>>> -??? struct pwm_omap_dmtimer_pdata *pdata;
>>>> +??? struct omap_dm_timer_ops *pdata;
>>>> ?????? struct platform_device *dm_timer_pdev;
>>>> ?? };
>>>> ?? @@ -242,19 +243,33 @@ static int pwm_omap_dmtimer_probe(struct
>>>> platform_device *pdev)
>>>> ?? {
>>>> ?????? struct device_node *np = pdev->dev.of_node;
>>>> ?????? struct device_node *timer;
>>>> +??? struct platform_device *timer_pdev;
>>>> ?????? struct pwm_omap_dmtimer_chip *omap;
>>>> -??? struct pwm_omap_dmtimer_pdata *pdata;
>>>> +??? struct dmtimer_platform_data *timer_pdata;
>>>> +??? struct omap_dm_timer_ops *pdata;
>>>> ?????? pwm_omap_dmtimer *dm_timer;
>>>> ?????? u32 v;
>>>> ?????? int status;
>>>> ?? -??? pdata = dev_get_platdata(&pdev->dev);
>>>> -??? if (!pdata) {
>>>> -??????? dev_err(&pdev->dev, "Missing dmtimer platform data\n");
>>>> +??? timer = of_parse_phandle(np, "ti,timers", 0);
>>>> +??? if (!timer)
>>>> +??????? return -ENODEV;
>>>> +
>>>> +??? timer_pdev = of_find_device_by_node(timer);
>>>> +??? if (!timer_pdev) {
>>>> +??????? dev_err(&pdev->dev, "Unable to find Timer pdev\n");
>>>> +??????? return -ENODEV;
>>>> +??? }
>>>> +
>>>> +??? timer_pdata = of_find_platdata_by_node(timer);
>>>> +??? if (!timer_pdata) {
>>>> +??????? dev_err(&pdev->dev, "dmtimer pdata structure NULL\n");
>>>> ?????????? return -EINVAL;
>>>> ?????? }
>>>
>>> Huh. I think It might be better if you add smth. like
>>>
>>> struct omap_dm_timer *dm_timer = of_omap_dm_timer_get(parent_np,
>>> "ti,timers", idx);
>>>
>>> struct omap_dm_timer_ops *pdata = omap_dm_timer_get_ops(dm_timer);
>>>
>>> so all DT and platdata implementation details will be hidden.
>>
>> Grygorii,
>>
>> This driver is already fetching:
>>
>> omap->dm_timer_pdev = of_find_device_by_node(timer);
>>
>> It stores dm_timer_pdev in struct pwm_omap_dmtimer_chip.
>> So we already need:
>> timer = of_parse_phandle(np, "ti,timers", 0);
>> and
>> omap->dm_timer_pdev = of_find_device_by_node(timer);
>>
>> So why not just do:
>>
>> struct omap_dm_timer_ops *pdata =
>> omap_dm_timer_get_ops(omap->dm_timer_pdev);
>
> if you dont want to do additional optimizations as part of migration
> might be
> dev_get_platdata(&omap->dm_timer_pdev->dev);
>
> would be enough.
That is pretty much what i want to do with the migration series.
>
> But, again, PWM driver don't need to know so many details about
> DM timer implementation and internal structure as consumer.
Totally understand that. I will follow up with more clean ups once the
code is migrated. Hope that is a reasonable approach.
>
^ permalink raw reply [flat|nested] 28+ messages in thread
end of thread, other threads:[~2017-12-01 4:33 UTC | newest]
Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-16 4:23 [PATCH v3 0/9] omap: dmtimer: Move driver out of plat-omap Keerthy
2017-11-16 4:23 ` Keerthy
2017-11-16 4:23 ` [PATCH v3 1/9] clocksource: dmtimer: Remove all the exports Keerthy
2017-11-16 4:23 ` Keerthy
2017-11-16 4:23 ` [PATCH v3 2/9] arm: omap: timer: Wrap the inline functions under OMAP2PLUS define Keerthy
2017-11-16 4:23 ` Keerthy
2017-11-16 4:23 ` [PATCH v3 3/9] arm: omap: Move dmtimer.h out of plat-omap Keerthy
2017-11-16 4:23 ` Keerthy
2017-11-16 4:23 ` [PATCH v3 4/9] arm: OMAP: Move dmtimer driver out of plat-omap to drivers under clocksource Keerthy
2017-11-16 4:23 ` Keerthy
2017-11-16 4:23 ` [PATCH v3 5/9] dmtimer: Add timer ops to the platform data structure Keerthy
2017-11-16 4:23 ` Keerthy
2017-11-16 4:23 ` [PATCH v3 6/9] clocksource: dmtimer: Populate the timer ops to the pdata Keerthy
2017-11-16 4:23 ` Keerthy
2017-11-16 4:23 ` [PATCH v3 7/9] of: platform: Add a function to get platfrom data from device node Keerthy
2017-11-16 4:23 ` Keerthy
2017-11-16 4:23 ` [PATCH v3 8/9] pwm: pwm-omap-dmtimer: Adapt driver to utilize dmtimer pdata ops Keerthy
2017-11-16 4:23 ` Keerthy
2017-11-28 18:27 ` Grygorii Strashko
2017-11-28 18:27 ` Grygorii Strashko
2017-11-30 9:36 ` Keerthy
2017-11-30 9:36 ` Keerthy
2017-11-30 23:19 ` Grygorii Strashko
2017-11-30 23:19 ` Grygorii Strashko
2017-12-01 4:32 ` Keerthy
2017-12-01 4:32 ` Keerthy
2017-11-16 4:23 ` [PATCH v3 9/9] arm: omap: pdata-quirks: Remove unused timer pdata Keerthy
2017-11-16 4:23 ` Keerthy
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.