@@ -80,6 +80,7 @@
#define MX3_PWMPR_MAX 0xfffe
struct pwm_imx27_chip {
+ struct device *parent;
struct clk *clk_ipg;
struct clk *clk_per;
void __iomem *mmio_base;
@@ -147,7 +148,7 @@ static int pwm_imx27_get_state(struct pwm_chip *chip,
state->polarity = PWM_POLARITY_INVERSED;
break;
default:
- dev_warn(chip->dev, "can't set polarity, output disconnected");
+ dev_warn(imx->parent, "can't set polarity, output disconnected");
}
prescaler = MX3_PWMCR_PRESCALER_GET(val);
@@ -179,7 +180,7 @@ static int pwm_imx27_get_state(struct pwm_chip *chip,
static void pwm_imx27_sw_reset(struct pwm_chip *chip)
{
struct pwm_imx27_chip *imx = to_pwm_imx27_chip(chip);
- struct device *dev = chip->dev;
+ struct device *dev = imx->parent;
int wait_count = 0;
u32 cr;
@@ -198,7 +199,7 @@ static void pwm_imx27_wait_fifo_slot(struct pwm_chip *chip,
struct pwm_device *pwm)
{
struct pwm_imx27_chip *imx = to_pwm_imx27_chip(chip);
- struct device *dev = chip->dev;
+ struct device *dev = imx->parent;
unsigned int period_ms;
int fifoav;
u32 sr;
@@ -318,6 +319,7 @@ static int pwm_imx27_probe(struct platform_device *pdev)
return PTR_ERR(chip);
imx = pwmchip_priv(chip);
+ imx->parent = &pdev->dev;
imx->clk_ipg = devm_clk_get(&pdev->dev, "ipg");
if (IS_ERR(imx->clk_ipg))
return dev_err_probe(&pdev->dev, PTR_ERR(imx->clk_ipg),
struct pwm_chip::dev is about to change. To not have to touch this driver in the same commit as struct pwm_chip::dev, store a pointer to the parent device in driver data. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> --- drivers/pwm/pwm-imx27.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)