Loading drivers/mfd/ti_am335x_tscadc.c +15 −29 Original line number Diff line number Diff line Loading @@ -27,20 +27,6 @@ #include <linux/mfd/ti_am335x_tscadc.h> static unsigned int tscadc_readl(struct ti_tscadc_dev *tsadc, unsigned int reg) { unsigned int val; regmap_read(tsadc->regmap_tscadc, reg, &val); return val; } static void tscadc_writel(struct ti_tscadc_dev *tsadc, unsigned int reg, unsigned int val) { regmap_write(tsadc->regmap_tscadc, reg, val); } static const struct regmap_config tscadc_regmap_config = { .name = "ti_tscadc", .reg_bits = 32, Loading @@ -57,7 +43,7 @@ void am335x_tsc_se_set_cache(struct ti_tscadc_dev *tsadc, u32 val) if (tsadc->adc_waiting) wake_up(&tsadc->reg_se_wait); else if (!tsadc->adc_in_use) tscadc_writel(tsadc, REG_SE, tsadc->reg_se_cache); regmap_write(tsadc->regmap_tscadc, REG_SE, tsadc->reg_se_cache); spin_unlock_irqrestore(&tsadc->reg_lock, flags); } Loading @@ -68,7 +54,7 @@ static void am335x_tscadc_need_adc(struct ti_tscadc_dev *tsadc) DEFINE_WAIT(wait); u32 reg; reg = tscadc_readl(tsadc, REG_ADCFSM); regmap_read(tsadc->regmap_tscadc, REG_ADCFSM, ®); if (reg & SEQ_STATUS) { tsadc->adc_waiting = true; prepare_to_wait(&tsadc->reg_se_wait, &wait, Loading @@ -84,7 +70,7 @@ static void am335x_tscadc_need_adc(struct ti_tscadc_dev *tsadc) * Sequencer should either be idle or * busy applying the charge step. */ reg = tscadc_readl(tsadc, REG_ADCFSM); regmap_read(tsadc->regmap_tscadc, REG_ADCFSM, ®); WARN_ON((reg & SEQ_STATUS) && !(reg & CHARGE_STEP)); tsadc->adc_waiting = false; } Loading @@ -96,7 +82,7 @@ void am335x_tsc_se_set_once(struct ti_tscadc_dev *tsadc, u32 val) spin_lock_irq(&tsadc->reg_lock); am335x_tscadc_need_adc(tsadc); tscadc_writel(tsadc, REG_SE, val); regmap_write(tsadc->regmap_tscadc, REG_SE, val); spin_unlock_irq(&tsadc->reg_lock); } EXPORT_SYMBOL_GPL(am335x_tsc_se_set_once); Loading @@ -107,7 +93,7 @@ void am335x_tsc_se_adc_done(struct ti_tscadc_dev *tsadc) spin_lock_irqsave(&tsadc->reg_lock, flags); tsadc->adc_in_use = false; tscadc_writel(tsadc, REG_SE, tsadc->reg_se_cache); regmap_write(tsadc->regmap_tscadc, REG_SE, tsadc->reg_se_cache); spin_unlock_irqrestore(&tsadc->reg_lock, flags); } EXPORT_SYMBOL_GPL(am335x_tsc_se_adc_done); Loading @@ -118,7 +104,7 @@ void am335x_tsc_se_clr(struct ti_tscadc_dev *tsadc, u32 val) spin_lock_irqsave(&tsadc->reg_lock, flags); tsadc->reg_se_cache &= ~val; tscadc_writel(tsadc, REG_SE, tsadc->reg_se_cache); regmap_write(tsadc->regmap_tscadc, REG_SE, tsadc->reg_se_cache); spin_unlock_irqrestore(&tsadc->reg_lock, flags); } EXPORT_SYMBOL_GPL(am335x_tsc_se_clr); Loading @@ -130,7 +116,7 @@ static void tscadc_idle_config(struct ti_tscadc_dev *config) idleconfig = STEPCONFIG_YNN | STEPCONFIG_INM_ADCREFM | STEPCONFIG_INP_ADCREFM | STEPCONFIG_YPN; tscadc_writel(config, REG_IDLECONFIG, idleconfig); regmap_write(config->regmap_tscadc, REG_IDLECONFIG, idleconfig); } static int ti_tscadc_probe(struct platform_device *pdev) Loading Loading @@ -235,11 +221,11 @@ static int ti_tscadc_probe(struct platform_device *pdev) /* TSCADC_CLKDIV needs to be configured to the value minus 1 */ tscadc->clk_div--; tscadc_writel(tscadc, REG_CLKDIV, tscadc->clk_div); regmap_write(tscadc->regmap_tscadc, REG_CLKDIV, tscadc->clk_div); /* Set the control register bits */ ctrl = CNTRLREG_STEPCONFIGWRT | CNTRLREG_STEPID; tscadc_writel(tscadc, REG_CTRL, ctrl); regmap_write(tscadc->regmap_tscadc, REG_CTRL, ctrl); /* Set register bits for Idle Config Mode */ if (tsc_wires > 0) { Loading @@ -253,7 +239,7 @@ static int ti_tscadc_probe(struct platform_device *pdev) /* Enable the TSC module enable bit */ ctrl |= CNTRLREG_TSCSSENB; tscadc_writel(tscadc, REG_CTRL, ctrl); regmap_write(tscadc->regmap_tscadc, REG_CTRL, ctrl); tscadc->used_cells = 0; tscadc->tsc_cell = -1; Loading Loading @@ -299,7 +285,7 @@ static int ti_tscadc_remove(struct platform_device *pdev) { struct ti_tscadc_dev *tscadc = platform_get_drvdata(pdev); tscadc_writel(tscadc, REG_SE, 0x00); regmap_write(tscadc->regmap_tscadc, REG_SE, 0x00); pm_runtime_put_sync(&pdev->dev); pm_runtime_disable(&pdev->dev); Loading @@ -314,7 +300,7 @@ static int tscadc_suspend(struct device *dev) { struct ti_tscadc_dev *tscadc_dev = dev_get_drvdata(dev); tscadc_writel(tscadc_dev, REG_SE, 0x00); regmap_write(tscadc_dev->regmap_tscadc, REG_SE, 0x00); pm_runtime_put_sync(dev); return 0; Loading @@ -329,7 +315,7 @@ static int tscadc_resume(struct device *dev) /* context restore */ ctrl = CNTRLREG_STEPCONFIGWRT | CNTRLREG_STEPID; tscadc_writel(tscadc_dev, REG_CTRL, ctrl); regmap_write(tscadc_dev->regmap_tscadc, REG_CTRL, ctrl); if (tscadc_dev->tsc_cell != -1) { if (tscadc_dev->tsc_wires == 5) Loading @@ -339,9 +325,9 @@ static int tscadc_resume(struct device *dev) tscadc_idle_config(tscadc_dev); } ctrl |= CNTRLREG_TSCSSENB; tscadc_writel(tscadc_dev, REG_CTRL, ctrl); regmap_write(tscadc_dev->regmap_tscadc, REG_CTRL, ctrl); tscadc_writel(tscadc_dev, REG_CLKDIV, tscadc_dev->clk_div); regmap_write(tscadc_dev->regmap_tscadc, REG_CLKDIV, tscadc_dev->clk_div); return 0; } Loading Loading
drivers/mfd/ti_am335x_tscadc.c +15 −29 Original line number Diff line number Diff line Loading @@ -27,20 +27,6 @@ #include <linux/mfd/ti_am335x_tscadc.h> static unsigned int tscadc_readl(struct ti_tscadc_dev *tsadc, unsigned int reg) { unsigned int val; regmap_read(tsadc->regmap_tscadc, reg, &val); return val; } static void tscadc_writel(struct ti_tscadc_dev *tsadc, unsigned int reg, unsigned int val) { regmap_write(tsadc->regmap_tscadc, reg, val); } static const struct regmap_config tscadc_regmap_config = { .name = "ti_tscadc", .reg_bits = 32, Loading @@ -57,7 +43,7 @@ void am335x_tsc_se_set_cache(struct ti_tscadc_dev *tsadc, u32 val) if (tsadc->adc_waiting) wake_up(&tsadc->reg_se_wait); else if (!tsadc->adc_in_use) tscadc_writel(tsadc, REG_SE, tsadc->reg_se_cache); regmap_write(tsadc->regmap_tscadc, REG_SE, tsadc->reg_se_cache); spin_unlock_irqrestore(&tsadc->reg_lock, flags); } Loading @@ -68,7 +54,7 @@ static void am335x_tscadc_need_adc(struct ti_tscadc_dev *tsadc) DEFINE_WAIT(wait); u32 reg; reg = tscadc_readl(tsadc, REG_ADCFSM); regmap_read(tsadc->regmap_tscadc, REG_ADCFSM, ®); if (reg & SEQ_STATUS) { tsadc->adc_waiting = true; prepare_to_wait(&tsadc->reg_se_wait, &wait, Loading @@ -84,7 +70,7 @@ static void am335x_tscadc_need_adc(struct ti_tscadc_dev *tsadc) * Sequencer should either be idle or * busy applying the charge step. */ reg = tscadc_readl(tsadc, REG_ADCFSM); regmap_read(tsadc->regmap_tscadc, REG_ADCFSM, ®); WARN_ON((reg & SEQ_STATUS) && !(reg & CHARGE_STEP)); tsadc->adc_waiting = false; } Loading @@ -96,7 +82,7 @@ void am335x_tsc_se_set_once(struct ti_tscadc_dev *tsadc, u32 val) spin_lock_irq(&tsadc->reg_lock); am335x_tscadc_need_adc(tsadc); tscadc_writel(tsadc, REG_SE, val); regmap_write(tsadc->regmap_tscadc, REG_SE, val); spin_unlock_irq(&tsadc->reg_lock); } EXPORT_SYMBOL_GPL(am335x_tsc_se_set_once); Loading @@ -107,7 +93,7 @@ void am335x_tsc_se_adc_done(struct ti_tscadc_dev *tsadc) spin_lock_irqsave(&tsadc->reg_lock, flags); tsadc->adc_in_use = false; tscadc_writel(tsadc, REG_SE, tsadc->reg_se_cache); regmap_write(tsadc->regmap_tscadc, REG_SE, tsadc->reg_se_cache); spin_unlock_irqrestore(&tsadc->reg_lock, flags); } EXPORT_SYMBOL_GPL(am335x_tsc_se_adc_done); Loading @@ -118,7 +104,7 @@ void am335x_tsc_se_clr(struct ti_tscadc_dev *tsadc, u32 val) spin_lock_irqsave(&tsadc->reg_lock, flags); tsadc->reg_se_cache &= ~val; tscadc_writel(tsadc, REG_SE, tsadc->reg_se_cache); regmap_write(tsadc->regmap_tscadc, REG_SE, tsadc->reg_se_cache); spin_unlock_irqrestore(&tsadc->reg_lock, flags); } EXPORT_SYMBOL_GPL(am335x_tsc_se_clr); Loading @@ -130,7 +116,7 @@ static void tscadc_idle_config(struct ti_tscadc_dev *config) idleconfig = STEPCONFIG_YNN | STEPCONFIG_INM_ADCREFM | STEPCONFIG_INP_ADCREFM | STEPCONFIG_YPN; tscadc_writel(config, REG_IDLECONFIG, idleconfig); regmap_write(config->regmap_tscadc, REG_IDLECONFIG, idleconfig); } static int ti_tscadc_probe(struct platform_device *pdev) Loading Loading @@ -235,11 +221,11 @@ static int ti_tscadc_probe(struct platform_device *pdev) /* TSCADC_CLKDIV needs to be configured to the value minus 1 */ tscadc->clk_div--; tscadc_writel(tscadc, REG_CLKDIV, tscadc->clk_div); regmap_write(tscadc->regmap_tscadc, REG_CLKDIV, tscadc->clk_div); /* Set the control register bits */ ctrl = CNTRLREG_STEPCONFIGWRT | CNTRLREG_STEPID; tscadc_writel(tscadc, REG_CTRL, ctrl); regmap_write(tscadc->regmap_tscadc, REG_CTRL, ctrl); /* Set register bits for Idle Config Mode */ if (tsc_wires > 0) { Loading @@ -253,7 +239,7 @@ static int ti_tscadc_probe(struct platform_device *pdev) /* Enable the TSC module enable bit */ ctrl |= CNTRLREG_TSCSSENB; tscadc_writel(tscadc, REG_CTRL, ctrl); regmap_write(tscadc->regmap_tscadc, REG_CTRL, ctrl); tscadc->used_cells = 0; tscadc->tsc_cell = -1; Loading Loading @@ -299,7 +285,7 @@ static int ti_tscadc_remove(struct platform_device *pdev) { struct ti_tscadc_dev *tscadc = platform_get_drvdata(pdev); tscadc_writel(tscadc, REG_SE, 0x00); regmap_write(tscadc->regmap_tscadc, REG_SE, 0x00); pm_runtime_put_sync(&pdev->dev); pm_runtime_disable(&pdev->dev); Loading @@ -314,7 +300,7 @@ static int tscadc_suspend(struct device *dev) { struct ti_tscadc_dev *tscadc_dev = dev_get_drvdata(dev); tscadc_writel(tscadc_dev, REG_SE, 0x00); regmap_write(tscadc_dev->regmap_tscadc, REG_SE, 0x00); pm_runtime_put_sync(dev); return 0; Loading @@ -329,7 +315,7 @@ static int tscadc_resume(struct device *dev) /* context restore */ ctrl = CNTRLREG_STEPCONFIGWRT | CNTRLREG_STEPID; tscadc_writel(tscadc_dev, REG_CTRL, ctrl); regmap_write(tscadc_dev->regmap_tscadc, REG_CTRL, ctrl); if (tscadc_dev->tsc_cell != -1) { if (tscadc_dev->tsc_wires == 5) Loading @@ -339,9 +325,9 @@ static int tscadc_resume(struct device *dev) tscadc_idle_config(tscadc_dev); } ctrl |= CNTRLREG_TSCSSENB; tscadc_writel(tscadc_dev, REG_CTRL, ctrl); regmap_write(tscadc_dev->regmap_tscadc, REG_CTRL, ctrl); tscadc_writel(tscadc_dev, REG_CLKDIV, tscadc_dev->clk_div); regmap_write(tscadc_dev->regmap_tscadc, REG_CLKDIV, tscadc_dev->clk_div); return 0; } Loading