From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <> From: Yoshihiro Shimoda Subject: [PATCH v3 1/3] usb: renesas_usbhs: Add reset_control Date: Thu, 6 Sep 2018 14:50:12 +0900 Message-Id: <1536213014-1325-2-git-send-email-yoshihiro.shimoda.uh@renesas.com> In-Reply-To: <1536213014-1325-1-git-send-email-yoshihiro.shimoda.uh@renesas.com> References: <1536213014-1325-1-git-send-email-yoshihiro.shimoda.uh@renesas.com> MIME-Version: 1.0 Content-Type: text/plain To: balbi@kernel.org, robh+dt@kernel.org, mark.rutland@arm.com Cc: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-renesas-soc@vger.kernel.org, devicetree@vger.kernel.org, Yoshihiro Shimoda List-ID: R-Car Gen3 needs to deassert resets of both host and peripheral. Since [eo]hci-platform is possible to assert the reset(s) when the probing failed, renesas_usbhs driver doesn't work correctly regardless of finished probing. To fix this issue, this patch adds reset_control on this renesas_usbhs driver. Signed-off-by: Yoshihiro Shimoda --- drivers/usb/renesas_usbhs/common.c | 12 ++++++++++++ drivers/usb/renesas_usbhs/common.h | 2 ++ 2 files changed, 14 insertions(+) diff --git a/drivers/usb/renesas_usbhs/common.c b/drivers/usb/renesas_usbhs/common.c index 4310df4..1d355d5 100644 --- a/drivers/usb/renesas_usbhs/common.c +++ b/drivers/usb/renesas_usbhs/common.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include "common.h" @@ -574,6 +575,10 @@ static int usbhs_probe(struct platform_device *pdev) return PTR_ERR(priv->edev); } + priv->rsts = devm_reset_control_array_get_optional_shared(&pdev->dev); + if (IS_ERR(priv->rsts)) + return PTR_ERR(priv->rsts); + /* * care platform info */ @@ -658,6 +663,10 @@ static int usbhs_probe(struct platform_device *pdev) /* dev_set_drvdata should be called after usbhs_mod_init */ platform_set_drvdata(pdev, priv); + ret = reset_control_deassert(priv->rsts); + if (ret) + goto probe_fail_rst; + /* * deviece reset here because * USB device might be used in boot loader. @@ -711,6 +720,8 @@ static int usbhs_probe(struct platform_device *pdev) return ret; probe_end_mod_exit: + reset_control_assert(priv->rsts); +probe_fail_rst: usbhs_mod_remove(priv); probe_end_fifo_exit: usbhs_fifo_remove(priv); @@ -739,6 +750,7 @@ static int usbhs_remove(struct platform_device *pdev) pm_runtime_disable(&pdev->dev); usbhs_platform_call(priv, hardware_exit, pdev); + reset_control_assert(priv->rsts); usbhs_mod_remove(priv); usbhs_fifo_remove(priv); usbhs_pipe_remove(priv); diff --git a/drivers/usb/renesas_usbhs/common.h b/drivers/usb/renesas_usbhs/common.h index 6137f79..bce7d35 100644 --- a/drivers/usb/renesas_usbhs/common.h +++ b/drivers/usb/renesas_usbhs/common.h @@ -10,6 +10,7 @@ #include #include +#include #include struct usbhs_priv; @@ -277,6 +278,7 @@ struct usbhs_priv { struct usbhs_fifo_info fifo_info; struct phy *phy; + struct reset_control *rsts; }; /* -- 1.9.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v3,1/3] usb: renesas_usbhs: Add reset_control From: Yoshihiro Shimoda Message-Id: <1536213014-1325-2-git-send-email-yoshihiro.shimoda.uh@renesas.com> Date: Thu, 6 Sep 2018 14:50:12 +0900 To: balbi@kernel.org, robh+dt@kernel.org, mark.rutland@arm.com Cc: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-renesas-soc@vger.kernel.org, devicetree@vger.kernel.org, Yoshihiro Shimoda List-ID: Ui1DYXIgR2VuMyBuZWVkcyB0byBkZWFzc2VydCByZXNldHMgb2YgYm90aCBob3N0IGFuZCBwZXJp cGhlcmFsLgpTaW5jZSBbZW9daGNpLXBsYXRmb3JtIGlzIHBvc3NpYmxlIHRvIGFzc2VydCB0aGUg cmVzZXQocykgd2hlbgp0aGUgcHJvYmluZyBmYWlsZWQsIHJlbmVzYXNfdXNiaHMgZHJpdmVyIGRv ZXNuJ3Qgd29yayBjb3JyZWN0bHkKcmVnYXJkbGVzcyBvZiBmaW5pc2hlZCBwcm9iaW5nLiBUbyBm aXggdGhpcyBpc3N1ZSwgdGhpcyBwYXRjaCBhZGRzCnJlc2V0X2NvbnRyb2wgb24gdGhpcyByZW5l c2FzX3VzYmhzIGRyaXZlci4KClNpZ25lZC1vZmYtYnk6IFlvc2hpaGlybyBTaGltb2RhIDx5b3No aWhpcm8uc2hpbW9kYS51aEByZW5lc2FzLmNvbT4KLS0tCiBkcml2ZXJzL3VzYi9yZW5lc2FzX3Vz YmhzL2NvbW1vbi5jIHwgMTIgKysrKysrKysrKysrCiBkcml2ZXJzL3VzYi9yZW5lc2FzX3VzYmhz L2NvbW1vbi5oIHwgIDIgKysKIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3JlbmVzYXNfdXNiaHMvY29tbW9uLmMgYi9kcml2ZXJzL3Vz Yi9yZW5lc2FzX3VzYmhzL2NvbW1vbi5jCmluZGV4IDQzMTBkZjQuLjFkMzU1ZDUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvdXNiL3JlbmVzYXNfdXNiaHMvY29tbW9uLmMKKysrIGIvZHJpdmVycy91c2Iv cmVuZXNhc191c2Jocy9jb21tb24uYwpAQCAtMTIsNiArMTIsNyBAQAogI2luY2x1ZGUgPGxpbnV4 L29mX2RldmljZS5oPgogI2luY2x1ZGUgPGxpbnV4L29mX2dwaW8uaD4KICNpbmNsdWRlIDxsaW51 eC9wbV9ydW50aW1lLmg+CisjaW5jbHVkZSA8bGludXgvcmVzZXQuaD4KICNpbmNsdWRlIDxsaW51 eC9zbGFiLmg+CiAjaW5jbHVkZSA8bGludXgvc3lzZnMuaD4KICNpbmNsdWRlICJjb21tb24uaCIK QEAgLTU3NCw2ICs1NzUsMTAgQEAgc3RhdGljIGludCB1c2Joc19wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQogCQkJcmV0dXJuIFBUUl9FUlIocHJpdi0+ZWRldik7CiAJfQogCisJ cHJpdi0+cnN0cyA9IGRldm1fcmVzZXRfY29udHJvbF9hcnJheV9nZXRfb3B0aW9uYWxfc2hhcmVk KCZwZGV2LT5kZXYpOworCWlmIChJU19FUlIocHJpdi0+cnN0cykpCisJCXJldHVybiBQVFJfRVJS KHByaXYtPnJzdHMpOworCiAJLyoKIAkgKiBjYXJlIHBsYXRmb3JtIGluZm8KIAkgKi8KQEAgLTY1 OCw2ICs2NjMsMTAgQEAgc3RhdGljIGludCB1c2Joc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2KQogCS8qIGRldl9zZXRfZHJ2ZGF0YSBzaG91bGQgYmUgY2FsbGVkIGFmdGVyIHVz YmhzX21vZF9pbml0ICovCiAJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcHJpdik7CiAKKwly ZXQgPSByZXNldF9jb250cm9sX2RlYXNzZXJ0KHByaXYtPnJzdHMpOworCWlmIChyZXQpCisJCWdv dG8gcHJvYmVfZmFpbF9yc3Q7CisKIAkvKgogCSAqIGRldmllY2UgcmVzZXQgaGVyZSBiZWNhdXNl CiAJICogVVNCIGRldmljZSBtaWdodCBiZSB1c2VkIGluIGJvb3QgbG9hZGVyLgpAQCAtNzExLDYg KzcyMCw4IEBAIHN0YXRpYyBpbnQgdXNiaHNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKIAlyZXR1cm4gcmV0OwogCiBwcm9iZV9lbmRfbW9kX2V4aXQ6CisJcmVzZXRfY29udHJv bF9hc3NlcnQocHJpdi0+cnN0cyk7Citwcm9iZV9mYWlsX3JzdDoKIAl1c2Joc19tb2RfcmVtb3Zl KHByaXYpOwogcHJvYmVfZW5kX2ZpZm9fZXhpdDoKIAl1c2Joc19maWZvX3JlbW92ZShwcml2KTsK QEAgLTczOSw2ICs3NTAsNyBAQCBzdGF0aWMgaW50IHVzYmhzX3JlbW92ZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQogCXBtX3J1bnRpbWVfZGlzYWJsZSgmcGRldi0+ZGV2KTsKIAogCXVz YmhzX3BsYXRmb3JtX2NhbGwocHJpdiwgaGFyZHdhcmVfZXhpdCwgcGRldik7CisJcmVzZXRfY29u dHJvbF9hc3NlcnQocHJpdi0+cnN0cyk7CiAJdXNiaHNfbW9kX3JlbW92ZShwcml2KTsKIAl1c2Jo c19maWZvX3JlbW92ZShwcml2KTsKIAl1c2Joc19waXBlX3JlbW92ZShwcml2KTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvdXNiL3JlbmVzYXNfdXNiaHMvY29tbW9uLmggYi9kcml2ZXJzL3VzYi9yZW5l c2FzX3VzYmhzL2NvbW1vbi5oCmluZGV4IDYxMzdmNzkuLmJjZTdkMzUgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvdXNiL3JlbmVzYXNfdXNiaHMvY29tbW9uLmgKKysrIGIvZHJpdmVycy91c2IvcmVuZXNh c191c2Jocy9jb21tb24uaApAQCAtMTAsNiArMTAsNyBAQAogCiAjaW5jbHVkZSA8bGludXgvZXh0 Y29uLmg+CiAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGlu dXgvcmVzZXQuaD4KICNpbmNsdWRlIDxsaW51eC91c2IvcmVuZXNhc191c2Jocy5oPgogCiBzdHJ1 Y3QgdXNiaHNfcHJpdjsKQEAgLTI3Nyw2ICsyNzgsNyBAQCBzdHJ1Y3QgdXNiaHNfcHJpdiB7CiAJ c3RydWN0IHVzYmhzX2ZpZm9faW5mbyBmaWZvX2luZm87CiAKIAlzdHJ1Y3QgcGh5ICpwaHk7CisJ c3RydWN0IHJlc2V0X2NvbnRyb2wgKnJzdHM7CiB9OwogCiAvKgo=