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: typec: add typec switch via GPIO control From: Jun Li Message-Id: <1551078369-1654-2-git-send-email-jun.li@nxp.com> Date: Mon, 25 Feb 2019 07:27:08 +0000 To: "robh+dt@kernel.org" , "heikki.krogerus@linux.intel.com" Cc: "gregkh@linuxfoundation.org" , "hdegoede@redhat.com" , "andy.shevchenko@gmail.com" , "linux-usb@vger.kernel.org" , "devicetree@vger.kernel.org" , dl-linux-imx List-ID: VGhpcyBwYXRjaCBhZGRzIGEgc2ltcGxlIHR5cGVjIHN3aXRjaCBkcml2ZXIgd2hpY2ggb25seSBu ZWVkcwphIEdQSU8gdG8gc3dpdGNoIHRoZSBzdXBlciBzcGVlZCBhY3RpdmUgY2hhbm5lbCBhY2Nv cmRpbmcgdG8KdHlwZWMgb3JpZW50YXRpb24uCgpTaWduZWQtb2ZmLWJ5OiBMaSBKdW4gPGp1bi5s aUBueHAuY29tPgotLS0KIGRyaXZlcnMvdXNiL3R5cGVjL211eC9LY29uZmlnICAgICAgIHwgICA2 ICsrKwogZHJpdmVycy91c2IvdHlwZWMvbXV4L01ha2VmaWxlICAgICAgfCAgIDEgKwogZHJpdmVy cy91c2IvdHlwZWMvbXV4L2dwaW8tc3dpdGNoLmMgfCAxMDUgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDExMiBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy91c2IvdHlwZWMvbXV4L2dwaW8tc3dpdGNoLmMKCmRpZmYg LS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy9tdXgvS2NvbmZpZyBiL2RyaXZlcnMvdXNiL3R5cGVj L211eC9LY29uZmlnCmluZGV4IDAxZWQwZDUuLmJjN2QzYzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv dXNiL3R5cGVjL211eC9LY29uZmlnCisrKyBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9LY29uZmln CkBAIC05LDQgKzksMTAgQEAgY29uZmlnIFRZUEVDX01VWF9QSTNVU0IzMDUzMgogCSAgU2F5IFkg b3IgTSBpZiB5b3VyIHN5c3RlbSBoYXMgYSBQZXJpY29tIFBJM1VTQjMwNTMyIFR5cGUtQyBjcm9z cwogCSAgc3dpdGNoIC8gbXV4IGNoaXAgZm91bmQgb24gc29tZSBkZXZpY2VzIHdpdGggYSBUeXBl LUMgcG9ydC4KIAorY29uZmlnIFRZUEVDX1NXSVRDSF9HUElPCisJdHJpc3RhdGUgIlNpbXBsZSBT dXBlciBTcGVlZCBBY3RpdmUgU3dpdGNoIHZpYSBHUElPIgorCWhlbHAKKwkgIFNheSBZIG9yIE0g aWYgeW91ciBzeXN0ZW0gaGFzIGEgdHlwZWMgc3VwZXIgc3BlZWQgY2hhbm5lbAorCSAgc3dpdGNo IHZpYSBhIHNpbXBsZSBHUElPIGNvbnRyb2wuCisKIGVuZG1lbnUKZGlmZiAtLWdpdCBhL2RyaXZl cnMvdXNiL3R5cGVjL211eC9NYWtlZmlsZSBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9NYWtlZmls ZQppbmRleCAxMzMyZTQ2Li5lMjkzNzdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi90eXBlYy9t dXgvTWFrZWZpbGUKKysrIGIvZHJpdmVycy91c2IvdHlwZWMvbXV4L01ha2VmaWxlCkBAIC0xLDMg KzEsNCBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAogCiBvYmotJChDT05G SUdfVFlQRUNfTVVYX1BJM1VTQjMwNTMyKQkrPSBwaTN1c2IzMDUzMi5vCitvYmotJChDT05GSUdf VFlQRUNfU1dJVENIX0dQSU8pCQkrPSBncGlvLXN3aXRjaC5vCmRpZmYgLS1naXQgYS9kcml2ZXJz L3VzYi90eXBlYy9tdXgvZ3Bpby1zd2l0Y2guYyBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9ncGlv LXN3aXRjaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1MWRhNjgKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3VzYi90eXBlYy9tdXgvZ3Bpby1zd2l0Y2guYwpAQCAt MCwwICsxLDEwNSBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qKgor ICogZ3Bpby1zd2l0Y2guYyAtIHR5cGVjIHN3aXRjaCB2aWEgYSBzaW1wbGUgR1BJTyBjb250cm9s LgorICoKKyAqIENvcHlyaWdodCAyMDE5IE5YUAorICogQXV0aG9yOiBKdW4gTGkgPGp1bi5saUBu eHAuY29tPgorICoKKyAqLworCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8 bGludXgvbXV0ZXguaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51 eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9vZi5oPgorI2luY2x1ZGUgPGxp bnV4L29mX2dwaW8uaD4KKyNpbmNsdWRlIDxsaW51eC91c2IvdHlwZWNfbXV4Lmg+CisKK3N0cnVj dCBncGlvX3R5cGVjX3N3aXRjaCB7CisJc3RydWN0IHR5cGVjX3N3aXRjaCBzdzsKKwlzdHJ1Y3Qg bXV0ZXggbG9jazsKKwlzdHJ1Y3QgZ3Bpb19kZXNjICpzc19zZWw7Cit9OworCitzdGF0aWMgaW50 IHN3aXRjaF9ncGlvX3NldChzdHJ1Y3QgdHlwZWNfc3dpdGNoICpzdywKKwkJCSAgIGVudW0gdHlw ZWNfb3JpZW50YXRpb24gb3JpZW50YXRpb24pCit7CisJc3RydWN0IGdwaW9fdHlwZWNfc3dpdGNo ICpncGlvX3N3ID0gY29udGFpbmVyX29mKHN3LAorCQkJCXN0cnVjdCBncGlvX3R5cGVjX3N3aXRj aCwgc3cpOworCisJbXV0ZXhfbG9jaygmZ3Bpb19zdy0+bG9jayk7CisKKwlzd2l0Y2ggKG9yaWVu dGF0aW9uKSB7CisJY2FzZSBUWVBFQ19PUklFTlRBVElPTl9OT1JNQUw6CisJCWdwaW9kX3NldF92 YWx1ZV9jYW5zbGVlcChncGlvX3N3LT5zc19zZWwsIDEpOworCQlicmVhazsKKwljYXNlIFRZUEVD X09SSUVOVEFUSU9OX1JFVkVSU0U6CisJCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChncGlvX3N3 LT5zc19zZWwsIDApOworCQlicmVhazsKKwljYXNlIFRZUEVDX09SSUVOVEFUSU9OX05PTkU6CisJ CWJyZWFrOworCX0KKworCW11dGV4X3VubG9jaygmZ3Bpb19zdy0+bG9jayk7CisKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGludCB0eXBlY19zd2l0Y2hfZ3Bpb19wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBncGlvX3R5cGVjX3N3aXRjaAkqZ3Bpb19zdzsK KwlzdHJ1Y3QgZGV2aWNlCQkJKmRldiA9ICZwZGV2LT5kZXY7CisJaW50CQkJCXJldDsKKworCWdw aW9fc3cgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmdwaW9fc3cpLCBHRlBfS0VSTkVMKTsK KwlpZiAoIWdwaW9fc3cpCisJCXJldHVybiAtRU5PTUVNOworCisJcGxhdGZvcm1fc2V0X2RydmRh dGEocGRldiwgZ3Bpb19zdyk7CisKKwlncGlvX3N3LT5zdy5kZXYgPSBkZXY7CisJZ3Bpb19zdy0+ c3cuc2V0ID0gc3dpdGNoX2dwaW9fc2V0OworCW11dGV4X2luaXQoJmdwaW9fc3ctPmxvY2spOwor CisJLyogR2V0IHRoZSBzdXBlciBzcGVlZCBhY3RpdmUgY2hhbm5lbCBzZWxlY3Rpb24gR1BJTyAq LworCWdwaW9fc3ctPnNzX3NlbCA9IGRldm1fZ3Bpb2RfZ2V0KGRldiwgTlVMTCwgR1BJT0RfT1VU X0xPVyk7CisJaWYgKElTX0VSUihncGlvX3N3LT5zc19zZWwpKQorCQlyZXR1cm4gUFRSX0VSUihn cGlvX3N3LT5zc19zZWwpOworCisJcmV0ID0gdHlwZWNfc3dpdGNoX3JlZ2lzdGVyKCZncGlvX3N3 LT5zdyk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRldiwgIkVycm9yIHJlZ2lzdGVyaW5nIHR5 cGVjIHN3aXRjaDogJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgdHlwZWNfc3dpdGNoX2dwaW9fcmVtb3ZlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGdwaW9fdHlwZWNfc3dpdGNoICpncGlvX3N3ID0g cGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CisKKwl0eXBlY19zd2l0Y2hfdW5yZWdpc3Rlcigm Z3Bpb19zdy0+c3cpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2Zf ZGV2aWNlX2lkIG9mX3R5cGVjX3N3aXRjaF9ncGlvX21hdGNoW10gPSB7CisJeyAuY29tcGF0aWJs ZSA9ICJueHAscHRuMzYwNDMiIH0sCisJeyAvKiBTZW50aW5lbCAqLyB9Cit9OworTU9EVUxFX0RF VklDRV9UQUJMRShvZiwgb2ZfdHlwZWNfc3dpdGNoX2dwaW9fbWF0Y2gpOworCitzdGF0aWMgc3Ry dWN0IHBsYXRmb3JtX2RyaXZlciB0eXBlY19zd2l0Y2hfZ3Bpb19kcml2ZXIgPSB7CisJLnByb2Jl CQk9IHR5cGVjX3N3aXRjaF9ncGlvX3Byb2JlLAorCS5yZW1vdmUJCT0gdHlwZWNfc3dpdGNoX2dw aW9fcmVtb3ZlLAorCS5kcml2ZXIJCT0geworCQkubmFtZQk9ICJ0eXBlYy1zd2l0Y2gtZ3BpbyIs CisJCS5vZl9tYXRjaF90YWJsZSA9IG9mX3R5cGVjX3N3aXRjaF9ncGlvX21hdGNoLAorCX0sCit9 OworCittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHR5cGVjX3N3aXRjaF9ncGlvX2RyaXZlcik7CitN T0RVTEVfTElDRU5TRSgiR1BMIHYyIik7CitNT0RVTEVfREVTQ1JJUFRJT04oIlR5cGVDIFN1cGVy IFNwZWVkIFN3aXRjaCBHUElPIGRyaXZlciIpOworTU9EVUxFX0FVVEhPUigiSnVuIExpIDxqdW4u bGlAbnhwLmNvbT4iKTsK