Commit 24003d50 authored by Uwe Kleine-König's avatar Uwe Kleine-König

pwm: Provide wrappers for storing and getting driver private data

These functions are useful to store and query driver private data
depending on the pwm_chip. After struct pwm_chip got its own struct
device, this can make use of dev_get_drvdata() and dev_set_drvdata() on
that device. These functions are required already now to convert
drivers to pwmchip_alloc() which must happen before changing
pwm_chip::dev.
Reviewed-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://lore.kernel.org/r/67514cdf29d29bd8b4ad8d44fac87f6ae6dca1e5.1707900770.git.u.kleine-koenig@pengutronix.deSigned-off-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
parent 4e59267c
...@@ -272,6 +272,7 @@ struct pwm_ops { ...@@ -272,6 +272,7 @@ struct pwm_ops {
* @npwm: number of PWMs controlled by this chip * @npwm: number of PWMs controlled by this chip
* @of_xlate: request a PWM device given a device tree PWM specifier * @of_xlate: request a PWM device given a device tree PWM specifier
* @atomic: can the driver's ->apply() be called in atomic context * @atomic: can the driver's ->apply() be called in atomic context
* @driver_data: Private pointer for driver specific info
* @pwms: array of PWM devices allocated by the framework * @pwms: array of PWM devices allocated by the framework
*/ */
struct pwm_chip { struct pwm_chip {
...@@ -286,6 +287,7 @@ struct pwm_chip { ...@@ -286,6 +287,7 @@ struct pwm_chip {
bool atomic; bool atomic;
/* only used internally by the PWM framework */ /* only used internally by the PWM framework */
void *driver_data;
struct pwm_device *pwms; struct pwm_device *pwms;
}; };
...@@ -294,6 +296,24 @@ static inline struct device *pwmchip_parent(const struct pwm_chip *chip) ...@@ -294,6 +296,24 @@ static inline struct device *pwmchip_parent(const struct pwm_chip *chip)
return chip->dev; return chip->dev;
} }
static inline void *pwmchip_get_drvdata(struct pwm_chip *chip)
{
/*
* After pwm_chip got a dedicated struct device, this can be replaced by
* dev_get_drvdata(&chip->dev);
*/
return chip->driver_data;
}
static inline void pwmchip_set_drvdata(struct pwm_chip *chip, void *data)
{
/*
* After pwm_chip got a dedicated struct device, this can be replaced by
* dev_set_drvdata(&chip->dev, data);
*/
chip->driver_data = data;
}
#if IS_ENABLED(CONFIG_PWM) #if IS_ENABLED(CONFIG_PWM)
/* PWM user APIs */ /* PWM user APIs */
int pwm_apply_might_sleep(struct pwm_device *pwm, const struct pwm_state *state); int pwm_apply_might_sleep(struct pwm_device *pwm, const struct pwm_state *state);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment