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: [2/2] usb: xhci: tegra: Add genpd support From: Mathias Nyman Message-Id: <1539688963-12564-3-git-send-email-mathias.nyman@linux.intel.com> Date: Tue, 16 Oct 2018 14:22:43 +0300 To: gregkh@linuxfoundation.org Cc: linux-usb@vger.kernel.org, thierry.reding@gmail.com, mark.rutland@arm.com, robh+dt@kernel.org, ulf.hansson@linaro.org, jonathanh@nvidia.com, Mathias Nyman List-ID: RnJvbTogSm9uIEh1bnRlciA8am9uYXRoYW5oQG52aWRpYS5jb20+CgpUaGUgZ2VuZXJpYyBwb3dl ci1kb21haW4gZnJhbWV3b3JrIGhhcyBiZWVuIHVwZGF0ZWQgdG8gYWxsb3cgZGV2aWNlcwp0aGF0 IHJlcXVpcmUgbW9yZSB0aGFuIG9uZSBwb3dlci1kb21haW4gdG8gY3JlYXRlIGEgbmV3IGRldmlj ZSBmb3IKZWFjaCBwb3dlci1kb21haW4gcmVxdWlyZWQgYW5kIHRoZW4gbGluayB0aGVzZSBuZXcg cG93ZXItZG9tYWluCmRldmljZXMgdG8gdGhlIGNvbnN1bWVyIGRldmljZS4KClVwZGF0ZSB0aGUg VGVncmEgeEhDSSBkcml2ZXIgdG8gdXNlIHRoZSBuZXcgQVBJcyBwcm92aWRlZCBieSB0aGUKZ2Vu ZXJpYyBwb3dlci1kb21haW4gZnJhbWV3b3JrIHNvIHdlIGNhbiB1c2UgdGhlIGdlbmVyaWMgcG93 ZXItZG9tYWluCmZyYW1ld29yayBmb3IgbWFuYWdpbmcgdGhlIHhIQ0kgY29udHJvbGxlcnMgcG93 ZXItZG9tYWlucy4gUGxlYXNlCm5vdGUgdGhhdCB0byBtYWludGFpbiBiYWNrd2FyZCBjb21wYXRp YmlsaXR5IHdpdGggb2xkZXIgZGV2aWNlLXRyZWUKYmxvYnMgdGhlc2UgbmV3IGdlbmVyaWMgcG93 ZXItZG9tYWluIEFQSXMgYXJlIG9ubHkgdXNlZCBpZiB0aGUKJ3Bvd2VyLWRvbWFpbnMnIHByb3Bl cnR5IGlzIHByZXNlbnQgYW5kIG90aGVyd2lzZSB3ZSBmYWxsIGJhY2sgdG8KdXNpbmcgdGhlIGxl Z2FjeSBUZWdyYSBBUElzIGZvciBtYW5hZ2luZyB0aGUgcG93ZXItZG9tYWlucy4KClNpZ25lZC1v ZmYtYnk6IEpvbiBIdW50ZXIgPGpvbmF0aGFuaEBudmlkaWEuY29tPgpBY2tlZC1ieTogVGhpZXJy eSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KUmV2aWV3ZWQtYnk6IFVsZiBIYW5zc29uIDx1 bGYuaGFuc3NvbkBsaW5hcm8ub3JnPgpTaWduZWQtb2ZmLWJ5OiBNYXRoaWFzIE55bWFuIDxtYXRo aWFzLm55bWFuQGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL3VzYi9ob3N0L3hoY2ktdGVn cmEuYyB8IDg5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCA3NyBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktdGVncmEuYyBiL2RyaXZlcnMvdXNiL2hvc3QveGhj aS10ZWdyYS5jCmluZGV4IDkyMGE1MGEuLjZiNWRiMzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNi L2hvc3QveGhjaS10ZWdyYS5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QveGhjaS10ZWdyYS5jCkBA IC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSA8bGludXgvcGh5L3RlZ3JhL3h1c2IuaD4KICNpbmNs dWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KICNpbmNsdWRlIDxsaW51eC9wbS5oPgorI2lu Y2x1ZGUgPGxpbnV4L3BtX2RvbWFpbi5oPgogI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4K ICNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KICNpbmNsdWRlIDxsaW51eC9y ZXNldC5oPgpAQCAtMTk0LDYgKzE5NSwxMSBAQCBzdHJ1Y3QgdGVncmFfeHVzYiB7CiAJc3RydWN0 IHJlc2V0X2NvbnRyb2wgKmhvc3RfcnN0OwogCXN0cnVjdCByZXNldF9jb250cm9sICpzc19yc3Q7 CiAKKwlzdHJ1Y3QgZGV2aWNlICpnZW5wZF9kZXZfaG9zdDsKKwlzdHJ1Y3QgZGV2aWNlICpnZW5w ZF9kZXZfc3M7CisJc3RydWN0IGRldmljZV9saW5rICpnZW5wZF9kbF9ob3N0OworCXN0cnVjdCBk ZXZpY2VfbGluayAqZ2VucGRfZGxfc3M7CisKIAlzdHJ1Y3QgcGh5ICoqcGh5czsKIAl1bnNpZ25l ZCBpbnQgbnVtX3BoeXM7CiAKQEAgLTkyOCw2ICs5MzQsNTcgQEAgc3RhdGljIGludCB0ZWdyYV94 dXNiX2xvYWRfZmlybXdhcmUoc3RydWN0IHRlZ3JhX3h1c2IgKnRlZ3JhKQogCXJldHVybiAwOwog fQogCitzdGF0aWMgdm9pZCB0ZWdyYV94dXNiX3Bvd2VyZG9tYWluX3JlbW92ZShzdHJ1Y3QgZGV2 aWNlICpkZXYsCisJCQkJCSAgc3RydWN0IHRlZ3JhX3h1c2IgKnRlZ3JhKQoreworCWlmICh0ZWdy YS0+Z2VucGRfZGxfc3MpCisJCWRldmljZV9saW5rX2RlbCh0ZWdyYS0+Z2VucGRfZGxfc3MpOwor CWlmICh0ZWdyYS0+Z2VucGRfZGxfaG9zdCkKKwkJZGV2aWNlX2xpbmtfZGVsKHRlZ3JhLT5nZW5w ZF9kbF9ob3N0KTsKKwlpZiAodGVncmEtPmdlbnBkX2Rldl9zcykKKwkJZGV2X3BtX2RvbWFpbl9k ZXRhY2godGVncmEtPmdlbnBkX2Rldl9zcywgdHJ1ZSk7CisJaWYgKHRlZ3JhLT5nZW5wZF9kZXZf aG9zdCkKKwkJZGV2X3BtX2RvbWFpbl9kZXRhY2godGVncmEtPmdlbnBkX2Rldl9ob3N0LCB0cnVl KTsKK30KKworc3RhdGljIGludCB0ZWdyYV94dXNiX3Bvd2VyZG9tYWluX2luaXQoc3RydWN0IGRl dmljZSAqZGV2LAorCQkJCSAgICAgICBzdHJ1Y3QgdGVncmFfeHVzYiAqdGVncmEpCit7CisJaW50 IGVycjsKKworCXRlZ3JhLT5nZW5wZF9kZXZfaG9zdCA9IGRldl9wbV9kb21haW5fYXR0YWNoX2J5 X25hbWUoZGV2LCAieHVzYl9ob3N0Iik7CisJaWYgKElTX0VSUih0ZWdyYS0+Z2VucGRfZGV2X2hv c3QpKSB7CisJCWVyciA9IFBUUl9FUlIodGVncmEtPmdlbnBkX2Rldl9ob3N0KTsKKwkJZGV2X2Vy cihkZXYsICJmYWlsZWQgdG8gZ2V0IGhvc3QgcG0tZG9tYWluOiAlZFxuIiwgZXJyKTsKKwkJcmV0 dXJuIGVycjsKKwl9CisKKwl0ZWdyYS0+Z2VucGRfZGV2X3NzID0gZGV2X3BtX2RvbWFpbl9hdHRh Y2hfYnlfbmFtZShkZXYsICJ4dXNiX3NzIik7CisJaWYgKElTX0VSUih0ZWdyYS0+Z2VucGRfZGV2 X3NzKSkgeworCQllcnIgPSBQVFJfRVJSKHRlZ3JhLT5nZW5wZF9kZXZfc3MpOworCQlkZXZfZXJy KGRldiwgImZhaWxlZCB0byBnZXQgc3VwZXJzcGVlZCBwbS1kb21haW46ICVkXG4iLCBlcnIpOwor CQlyZXR1cm4gZXJyOworCX0KKworCXRlZ3JhLT5nZW5wZF9kbF9ob3N0ID0gZGV2aWNlX2xpbmtf YWRkKGRldiwgdGVncmEtPmdlbnBkX2Rldl9ob3N0LAorCQkJCQkgICAgICAgRExfRkxBR19QTV9S VU5USU1FIHwKKwkJCQkJICAgICAgIERMX0ZMQUdfU1RBVEVMRVNTKTsKKwlpZiAoIXRlZ3JhLT5n ZW5wZF9kbF9ob3N0KSB7CisJCWRldl9lcnIoZGV2LCAiYWRkaW5nIGhvc3QgZGV2aWNlIGxpbmsg ZmFpbGVkIVxuIik7CisJCXJldHVybiAtRU5PREVWOworCX0KKworCXRlZ3JhLT5nZW5wZF9kbF9z cyA9IGRldmljZV9saW5rX2FkZChkZXYsIHRlZ3JhLT5nZW5wZF9kZXZfc3MsCisJCQkJCSAgICAg RExfRkxBR19QTV9SVU5USU1FIHwKKwkJCQkJICAgICBETF9GTEFHX1NUQVRFTEVTUyk7CisJaWYg KCF0ZWdyYS0+Z2VucGRfZGxfc3MpIHsKKwkJZGV2X2VycihkZXYsICJhZGRpbmcgc3VwZXJzcGVl ZCBkZXZpY2UgbGluayBmYWlsZWQhXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJcmV0 dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgdGVncmFfeHVzYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQogewogCXN0cnVjdCB0ZWdyYV94dXNiX21ib3hfbXNnIG1zZzsKQEAgLTEw MzgsNyArMTA5NSw3IEBAIHN0YXRpYyBpbnQgdGVncmFfeHVzYl9wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQogCQlnb3RvIHB1dF9wYWRjdGw7CiAJfQogCi0JaWYgKCFwZGV2LT5k ZXYucG1fZG9tYWluKSB7CisJaWYgKCFvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wocGRldi0+ZGV2Lm9m X25vZGUsICJwb3dlci1kb21haW5zIikpIHsKIAkJdGVncmEtPmhvc3RfcnN0ID0gZGV2bV9yZXNl dF9jb250cm9sX2dldCgmcGRldi0+ZGV2LAogCQkJCQkJCSAieHVzYl9ob3N0Iik7CiAJCWlmIChJ U19FUlIodGVncmEtPmhvc3RfcnN0KSkgewpAQCAtMTA2OSwxNyArMTEyNiwyMiBAQCBzdGF0aWMg aW50IHRlZ3JhX3h1c2JfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJCQkJ CQl0ZWdyYS0+aG9zdF9jbGssCiAJCQkJCQkJdGVncmEtPmhvc3RfcnN0KTsKIAkJaWYgKGVycikg eworCQkJdGVncmFfcG93ZXJnYXRlX3Bvd2VyX29mZihURUdSQV9QT1dFUkdBVEVfWFVTQkEpOwog CQkJZGV2X2VycigmcGRldi0+ZGV2LAogCQkJCSJmYWlsZWQgdG8gZW5hYmxlIFhVU0JDIGRvbWFp bjogJWRcbiIsIGVycik7Ci0JCQlnb3RvIGRpc2FibGVfeHVzYmE7CisJCQlnb3RvIHB1dF9wYWRj dGw7CiAJCX0KKwl9IGVsc2UgeworCQllcnIgPSB0ZWdyYV94dXNiX3Bvd2VyZG9tYWluX2luaXQo JnBkZXYtPmRldiwgdGVncmEpOworCQlpZiAoZXJyKQorCQkJZ290byBwdXRfcG93ZXJkb21haW5z OwogCX0KIAogCXRlZ3JhLT5zdXBwbGllcyA9IGRldm1fa2NhbGxvYygmcGRldi0+ZGV2LCB0ZWdy YS0+c29jLT5udW1fc3VwcGxpZXMsCiAJCQkJICAgICAgIHNpemVvZigqdGVncmEtPnN1cHBsaWVz KSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCF0ZWdyYS0+c3VwcGxpZXMpIHsKIAkJZXJyID0gLUVOT01F TTsKLQkJZ290byBkaXNhYmxlX3h1c2JjOworCQlnb3RvIHB1dF9wb3dlcmRvbWFpbnM7CiAJfQog CiAJZm9yIChpID0gMDsgaSA8IHRlZ3JhLT5zb2MtPm51bV9zdXBwbGllczsgaSsrKQpAQCAtMTA4 OSw3ICsxMTUxLDcgQEAgc3RhdGljIGludCB0ZWdyYV94dXNiX3Byb2JlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpCiAJCQkJICAgICAgdGVncmEtPnN1cHBsaWVzKTsKIAlpZiAoZXJyKSB7 CiAJCWRldl9lcnIoJnBkZXYtPmRldiwgImZhaWxlZCB0byBnZXQgcmVndWxhdG9yczogJWRcbiIs IGVycik7Ci0JCWdvdG8gZGlzYWJsZV94dXNiYzsKKwkJZ290byBwdXRfcG93ZXJkb21haW5zOwog CX0KIAogCWZvciAoaSA9IDA7IGkgPCB0ZWdyYS0+c29jLT5udW1fdHlwZXM7IGkrKykKQEAgLTEw OTksNyArMTE2MSw3IEBAIHN0YXRpYyBpbnQgdGVncmFfeHVzYl9wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQogCQkJCSAgIHNpemVvZigqdGVncmEtPnBoeXMpLCBHRlBfS0VSTkVM KTsKIAlpZiAoIXRlZ3JhLT5waHlzKSB7CiAJCWVyciA9IC1FTk9NRU07Ci0JCWdvdG8gZGlzYWJs ZV94dXNiYzsKKwkJZ290byBwdXRfcG93ZXJkb21haW5zOwogCX0KIAogCWZvciAoaSA9IDAsIGsg PSAwOyBpIDwgdGVncmEtPnNvYy0+bnVtX3R5cGVzOyBpKyspIHsKQEAgLTExMTUsNyArMTE3Nyw3 IEBAIHN0YXRpYyBpbnQgdGVncmFfeHVzYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQogCQkJCQkiZmFpbGVkIHRvIGdldCBQSFkgJXM6ICVsZFxuIiwgcHJvcCwKIAkJCQkJUFRS X0VSUihwaHkpKTsKIAkJCQllcnIgPSBQVFJfRVJSKHBoeSk7Ci0JCQkJZ290byBkaXNhYmxlX3h1 c2JjOworCQkJCWdvdG8gcHV0X3Bvd2VyZG9tYWluczsKIAkJCX0KIAogCQkJdGVncmEtPnBoeXNb aysrXSA9IHBoeTsKQEAgLTExMjYsNyArMTE4OCw3IEBAIHN0YXRpYyBpbnQgdGVncmFfeHVzYl9w cm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQkJCSAgICBkZXZfbmFtZSgmcGRl di0+ZGV2KSk7CiAJaWYgKCF0ZWdyYS0+aGNkKSB7CiAJCWVyciA9IC1FTk9NRU07Ci0JCWdvdG8g ZGlzYWJsZV94dXNiYzsKKwkJZ290byBwdXRfcG93ZXJkb21haW5zOwogCX0KIAogCS8qCkBAIC0x MjIyLDEyICsxMjg0LDEzIEBAIHN0YXRpYyBpbnQgdGVncmFfeHVzYl9wcm9iZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQogZGlzYWJsZV9ycG06CiAJcG1fcnVudGltZV9kaXNhYmxlKCZw ZGV2LT5kZXYpOwogCXVzYl9wdXRfaGNkKHRlZ3JhLT5oY2QpOwotZGlzYWJsZV94dXNiYzoKLQlp ZiAoIXBkZXYtPmRldi5wbV9kb21haW4pCitwdXRfcG93ZXJkb21haW5zOgorCWlmICghb2ZfcHJv cGVydHlfcmVhZF9ib29sKHBkZXYtPmRldi5vZl9ub2RlLCAicG93ZXItZG9tYWlucyIpKSB7CiAJ CXRlZ3JhX3Bvd2VyZ2F0ZV9wb3dlcl9vZmYoVEVHUkFfUE9XRVJHQVRFX1hVU0JDKTsKLWRpc2Fi bGVfeHVzYmE6Ci0JaWYgKCFwZGV2LT5kZXYucG1fZG9tYWluKQogCQl0ZWdyYV9wb3dlcmdhdGVf cG93ZXJfb2ZmKFRFR1JBX1BPV0VSR0FURV9YVVNCQSk7CisJfSBlbHNlIHsKKwkJdGVncmFfeHVz Yl9wb3dlcmRvbWFpbl9yZW1vdmUoJnBkZXYtPmRldiwgdGVncmEpOworCX0KIHB1dF9wYWRjdGw6 CiAJdGVncmFfeHVzYl9wYWRjdGxfcHV0KHRlZ3JhLT5wYWRjdGwpOwogCXJldHVybiBlcnI7CkBA IC0xMjQ5LDkgKzEzMTIsMTEgQEAgc3RhdGljIGludCB0ZWdyYV94dXNiX3JlbW92ZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXBtX3J1bnRpbWVfcHV0X3N5bmMoJnBkZXYtPmRldik7 CiAJcG1fcnVudGltZV9kaXNhYmxlKCZwZGV2LT5kZXYpOwogCi0JaWYgKCFwZGV2LT5kZXYucG1f ZG9tYWluKSB7CisJaWYgKCFvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wocGRldi0+ZGV2Lm9mX25vZGUs ICJwb3dlci1kb21haW5zIikpIHsKIAkJdGVncmFfcG93ZXJnYXRlX3Bvd2VyX29mZihURUdSQV9Q T1dFUkdBVEVfWFVTQkMpOwogCQl0ZWdyYV9wb3dlcmdhdGVfcG93ZXJfb2ZmKFRFR1JBX1BPV0VS R0FURV9YVVNCQSk7CisJfSBlbHNlIHsKKwkJdGVncmFfeHVzYl9wb3dlcmRvbWFpbl9yZW1vdmUo JnBkZXYtPmRldiwgdGVncmEpOwogCX0KIAogCXRlZ3JhX3h1c2JfcGFkY3RsX3B1dCh0ZWdyYS0+ cGFkY3RsKTsK