Hi,
> @@ -857,15 +885,44 @@ static int nmk_i2c_suspend(struct device *dev)
> {
> struct amba_device *adev = to_amba_device(dev);
> struct nmk_i2c_dev *nmk_i2c = amba_get_drvdata(adev);
> + int ret;
>
> if (nmk_i2c->busy)
> return -EBUSY;
>
> + if (!IS_ERR(nmk_i2c->pins_sleep)) {
> + ret = pinctrl_select_state(nmk_i2c->pinctrl,
> + nmk_i2c->pins_sleep);
> + if (ret)
> + dev_err(dev,
> + "could not set pins to sleep state\n");
One line please.
> + }
> +
> return 0;
> }
>
> static int nmk_i2c_resume(struct device *dev)
> {
> + struct amba_device *adev = to_amba_device(dev);
> + struct nmk_i2c_dev *nmk_i2c = amba_get_drvdata(adev);
> + int ret;
> +
> + /* First go to the default state */
> + if (!IS_ERR(nmk_i2c->pins_default)) {
> + ret = pinctrl_select_state(nmk_i2c->pinctrl,
> + nmk_i2c->pins_default);
> + if (ret)
> + dev_err(dev,
One line please.
> + "could not set pins to default state\n");
> + }
> + /* Then let's idle the pins until the next transfer happens */
> + if (!IS_ERR(nmk_i2c->pins_idle)) {
> + ret = pinctrl_select_state(nmk_i2c->pinctrl,
> + nmk_i2c->pins_idle);
> + if (ret)
> + dev_err(dev,
> + "could not set pins to idle state\n");
One line please.
> + }
> return 0;
> }
> #else
> @@ -953,6 +1010,40 @@ static int nmk_i2c_probe(struct amba_device *adev,
> const struct amba_id *id)
> dev->adev = adev;
> amba_set_drvdata(adev, dev);
>
> + dev->pinctrl = devm_pinctrl_get(&adev->dev);
> + if (IS_ERR(dev->pinctrl)) {
> + ret = PTR_ERR(dev->pinctrl);
> + goto err_pinctrl;
> + }
> +
> + dev->pins_default = pinctrl_lookup_state(dev->pinctrl,
> + PINCTRL_STATE_DEFAULT);
> + if (IS_ERR(dev->pins_default))
> + dev_err(&adev->dev, "could not get default pinstate\n");
> + else {
braces before else, please.
> + ret = pinctrl_select_state(dev->pinctrl,
> + dev->pins_default);
> + if (ret)
> + dev_dbg(&adev->dev, "could not set default pinstate\n");
> + }
> +
> + dev->pins_idle = pinctrl_lookup_state(dev->pinctrl,
> + PINCTRL_STATE_IDLE);
> + if (IS_ERR(dev->pins_idle))
> + dev_dbg(&adev->dev, "could not get idle pinstate\n");
> + else {
braces before else, please.
> + /* If possible, let's go to idle until the first transfer */
> + ret = pinctrl_select_state(dev->pinctrl,
> + dev->pins_idle);
> + if (ret)
> + dev_dbg(&adev->dev, "could not set idle pinstate\n");
> + }
> +
> + dev->pins_sleep = pinctrl_lookup_state(dev->pinctrl,
> + PINCTRL_STATE_SLEEP);
> + if (IS_ERR(dev->pins_sleep))
> + dev_dbg(&adev->dev, "could not get sleep pinstate\n");
> +
Thanks,
Wolfram
--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html