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: [v2,2/2] usb: typec: add typec switch via GPIO control From: Jun Li Message-Id: <1551402256-7815-2-git-send-email-jun.li@nxp.com> Date: Fri, 1 Mar 2019 01:25:13 +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 aUBueHAuY29tPgotLS0KCkNoYW5nZXMgZm9yIHYyOgotIFVzZSB0aGUgY29ycmVjdCBoZWFkIGZp bGVzIGZvciBncGlvIGFwaSBhbmQgb2ZfZGV2aWNlX2lkOgogICNpbmNsdWRlIDxsaW51eC9ncGlv L2NvbnN1bWVyLmg+CiAgI2luY2x1ZGUgPGxpbnV4L21vZF9kZXZpY2V0YWJsZS5oPgotIEFkZCBk cml2ZXIgZGVwZW5kZW5jeSBvbiBHUElPTElCCgogZHJpdmVycy91c2IvdHlwZWMvbXV4L0tjb25m aWcgICAgICAgfCAgIDcgKysrCiBkcml2ZXJzL3VzYi90eXBlYy9tdXgvTWFrZWZpbGUgICAgICB8 ICAgMSArCiBkcml2ZXJzL3VzYi90eXBlYy9tdXgvZ3Bpby1zd2l0Y2guYyB8IDEwNSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTEzIGluc2Vy dGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy9tdXgvS2NvbmZpZyBiL2Ry aXZlcnMvdXNiL3R5cGVjL211eC9LY29uZmlnCmluZGV4IDAxZWQwZDUuLjI3MTIwZTYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL211eC9LY29uZmlnCisrKyBiL2RyaXZlcnMvdXNiL3R5 cGVjL211eC9LY29uZmlnCkBAIC05LDQgKzksMTEgQEAgY29uZmlnIFRZUEVDX01VWF9QSTNVU0Iz MDUzMgogCSAgU2F5IFkgb3IgTSBpZiB5b3VyIHN5c3RlbSBoYXMgYSBQZXJpY29tIFBJM1VTQjMw NTMyIFR5cGUtQyBjcm9zcwogCSAgc3dpdGNoIC8gbXV4IGNoaXAgZm91bmQgb24gc29tZSBkZXZp Y2VzIHdpdGggYSBUeXBlLUMgcG9ydC4KIAorY29uZmlnIFRZUEVDX1NXSVRDSF9HUElPCisJdHJp c3RhdGUgIlNpbXBsZSBTdXBlciBTcGVlZCBBY3RpdmUgU3dpdGNoIHZpYSBHUElPIgorCWRlcGVu ZHMgb24gR1BJT0xJQgorCWhlbHAKKwkgIFNheSBZIG9yIE0gaWYgeW91ciBzeXN0ZW0gaGFzIGEg dHlwZWMgc3VwZXIgc3BlZWQgY2hhbm5lbAorCSAgc3dpdGNoIHZpYSBhIHNpbXBsZSBHUElPIGNv bnRyb2wuCisKIGVuZG1lbnUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL211eC9NYWtl ZmlsZSBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9NYWtlZmlsZQppbmRleCAxMzMyZTQ2Li5lMjkz NzdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi90eXBlYy9tdXgvTWFrZWZpbGUKKysrIGIvZHJp dmVycy91c2IvdHlwZWMvbXV4L01ha2VmaWxlCkBAIC0xLDMgKzEsNCBAQAogIyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMAogCiBvYmotJChDT05GSUdfVFlQRUNfTVVYX1BJM1VTQjMw NTMyKQkrPSBwaTN1c2IzMDUzMi5vCitvYmotJChDT05GSUdfVFlQRUNfU1dJVENIX0dQSU8pCQkr PSBncGlvLXN3aXRjaC5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy9tdXgvZ3Bpby1z d2l0Y2guYyBiL2RyaXZlcnMvdXNiL3R5cGVjL211eC9ncGlvLXN3aXRjaC5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwMTg0NGMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2 ZXJzL3VzYi90eXBlYy9tdXgvZ3Bpby1zd2l0Y2guYwpAQCAtMCwwICsxLDEwNSBAQAorLy8gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qKgorICogZ3Bpby1zd2l0Y2guYyAtIHR5 cGVjIHN3aXRjaCB2aWEgYSBzaW1wbGUgR1BJTyBjb250cm9sLgorICoKKyAqIENvcHlyaWdodCAy MDE5IE5YUAorICogQXV0aG9yOiBKdW4gTGkgPGp1bi5saUBueHAuY29tPgorICoKKyAqLworCisj aW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KKyNpbmNs dWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4K KyNpbmNsdWRlIDxsaW51eC9ncGlvL2NvbnN1bWVyLmg+CisjaW5jbHVkZSA8bGludXgvbW9kX2Rl dmljZXRhYmxlLmg+CisjaW5jbHVkZSA8bGludXgvdXNiL3R5cGVjX211eC5oPgorCitzdHJ1Y3Qg Z3Bpb190eXBlY19zd2l0Y2ggeworCXN0cnVjdCB0eXBlY19zd2l0Y2ggc3c7CisJc3RydWN0IG11 dGV4IGxvY2s7CisJc3RydWN0IGdwaW9fZGVzYyAqc3Nfc2VsOworfTsKKworc3RhdGljIGludCBz d2l0Y2hfZ3Bpb19zZXQoc3RydWN0IHR5cGVjX3N3aXRjaCAqc3csCisJCQkgICBlbnVtIHR5cGVj X29yaWVudGF0aW9uIG9yaWVudGF0aW9uKQoreworCXN0cnVjdCBncGlvX3R5cGVjX3N3aXRjaCAq Z3Bpb19zdyA9IGNvbnRhaW5lcl9vZihzdywKKwkJCQlzdHJ1Y3QgZ3Bpb190eXBlY19zd2l0Y2gs IHN3KTsKKworCW11dGV4X2xvY2soJmdwaW9fc3ctPmxvY2spOworCisJc3dpdGNoIChvcmllbnRh dGlvbikgeworCWNhc2UgVFlQRUNfT1JJRU5UQVRJT05fTk9STUFMOgorCQlncGlvZF9zZXRfdmFs dWVfY2Fuc2xlZXAoZ3Bpb19zdy0+c3Nfc2VsLCAxKTsKKwkJYnJlYWs7CisJY2FzZSBUWVBFQ19P UklFTlRBVElPTl9SRVZFUlNFOgorCQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoZ3Bpb19zdy0+ c3Nfc2VsLCAwKTsKKwkJYnJlYWs7CisJY2FzZSBUWVBFQ19PUklFTlRBVElPTl9OT05FOgorCQli cmVhazsKKwl9CisKKwltdXRleF91bmxvY2soJmdwaW9fc3ctPmxvY2spOworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgdHlwZWNfc3dpdGNoX2dwaW9fcHJvYmUoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgZ3Bpb190eXBlY19zd2l0Y2gJKmdwaW9fc3c7CisJ c3RydWN0IGRldmljZQkJCSpkZXYgPSAmcGRldi0+ZGV2OworCWludAkJCQlyZXQ7CisKKwlncGlv X3N3ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpncGlvX3N3KSwgR0ZQX0tFUk5FTCk7CisJ aWYgKCFncGlvX3N3KQorCQlyZXR1cm4gLUVOT01FTTsKKworCXBsYXRmb3JtX3NldF9kcnZkYXRh KHBkZXYsIGdwaW9fc3cpOworCisJZ3Bpb19zdy0+c3cuZGV2ID0gZGV2OworCWdwaW9fc3ctPnN3 LnNldCA9IHN3aXRjaF9ncGlvX3NldDsKKwltdXRleF9pbml0KCZncGlvX3N3LT5sb2NrKTsKKwor CS8qIEdldCB0aGUgc3VwZXIgc3BlZWQgYWN0aXZlIGNoYW5uZWwgc2VsZWN0aW9uIEdQSU8gKi8K KwlncGlvX3N3LT5zc19zZWwgPSBkZXZtX2dwaW9kX2dldChkZXYsIE5VTEwsIEdQSU9EX09VVF9M T1cpOworCWlmIChJU19FUlIoZ3Bpb19zdy0+c3Nfc2VsKSkKKwkJcmV0dXJuIFBUUl9FUlIoZ3Bp b19zdy0+c3Nfc2VsKTsKKworCXJldCA9IHR5cGVjX3N3aXRjaF9yZWdpc3RlcigmZ3Bpb19zdy0+ c3cpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkZXYsICJFcnJvciByZWdpc3RlcmluZyB0eXBl YyBzd2l0Y2g6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCXJldHVybiAwOwor fQorCitzdGF0aWMgaW50IHR5cGVjX3N3aXRjaF9ncGlvX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBncGlvX3R5cGVjX3N3aXRjaCAqZ3Bpb19zdyA9IHBs YXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOworCisJdHlwZWNfc3dpdGNoX3VucmVnaXN0ZXIoJmdw aW9fc3ctPnN3KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rl dmljZV9pZCBvZl90eXBlY19zd2l0Y2hfZ3Bpb19tYXRjaFtdID0geworCXsgLmNvbXBhdGlibGUg PSAibnhwLHB0bjM2MDQzIiB9LAorCXsgLyogU2VudGluZWwgKi8gfQorfTsKK01PRFVMRV9ERVZJ Q0VfVEFCTEUob2YsIG9mX3R5cGVjX3N3aXRjaF9ncGlvX21hdGNoKTsKKworc3RhdGljIHN0cnVj dCBwbGF0Zm9ybV9kcml2ZXIgdHlwZWNfc3dpdGNoX2dwaW9fZHJpdmVyID0geworCS5wcm9iZQkJ PSB0eXBlY19zd2l0Y2hfZ3Bpb19wcm9iZSwKKwkucmVtb3ZlCQk9IHR5cGVjX3N3aXRjaF9ncGlv X3JlbW92ZSwKKwkuZHJpdmVyCQk9IHsKKwkJLm5hbWUJPSAidHlwZWMtc3dpdGNoLWdwaW8iLAor CQkub2ZfbWF0Y2hfdGFibGUgPSBvZl90eXBlY19zd2l0Y2hfZ3Bpb19tYXRjaCwKKwl9LAorfTsK KworbW9kdWxlX3BsYXRmb3JtX2RyaXZlcih0eXBlY19zd2l0Y2hfZ3Bpb19kcml2ZXIpOworTU9E VUxFX0xJQ0VOU0UoIkdQTCB2MiIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJUeXBlQyBTdXBlciBT cGVlZCBTd2l0Y2ggR1BJTyBkcml2ZXIiKTsKK01PRFVMRV9BVVRIT1IoIkp1biBMaSA8anVuLmxp QG54cC5jb20+Iik7Cg==