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,2/6] usb: typec: ucsi: add ccg command framework From: Ajay Gupta Message-Id: <20190202010510.25016-3-ajayg@nvidia.com> Date: Fri, 1 Feb 2019 17:05:06 -0800 To: heikki.krogerus@linux.intel.com Cc: linux-usb@vger.kernel.org, Ajay Gupta List-ID: RnJvbTogQWpheSBHdXB0YSA8YWpheWdAbnZpZGlhLmNvbT4KClVzZWQgdG8gc2VuZCB2YXJpb3Vz IGNvbW1hbmRzIHRvIGNjZyBjb250cm9sbGVyLiBUaGV5IGFyZQptYWlubHkgdXNlZCBkdXJpbmcg ZmlybXdhcmUgdXBkYXRlIHByb2Nlc3MuCgpXZSB3YWl0IGZvciByZXNwb25zZSBhZnRlciBzZW5k aW5nIHRoZSBjb21tYW5kIGFuZCB0aGVuCnJlYWQgdGhlIHJlc3BvbnNlIGZyb20gUkFCX1JFU1BP TlNFIHJlZ2lzdGVyLgoKU2lnbmVkLW9mZi1ieTogQWpheSBHdXB0YSA8YWpheWdAbnZpZGlhLmNv bT4KLS0tCkNoYW5nZXMgZnJvbSB2MiB0byB2MwoJLSBSZW1vdmVkIHVudXNlZCBzdHJ1Y3R1cmVz CQoJLSBVc2VkIENDR19FVkVOVF9NQVggaW5zdGVhZCBvZiBsb25nIHN0cnVjdHVyZSBhbmQgc2l6 ZW9mKCkgCgogZHJpdmVycy91c2IvdHlwZWMvdWNzaS91Y3NpX2NjZy5jIHwgMTcyICsrKysrKysr KysrKysrKysrKysrKysrKysrKystLQogMSBmaWxlIGNoYW5nZWQsIDE2MyBpbnNlcnRpb25zKCsp LCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3R5cGVjL3Vjc2kvdWNz aV9jY2cuYyBiL2RyaXZlcnMvdXNiL3R5cGVjL3Vjc2kvdWNzaV9jY2cuYwppbmRleCAzODg0ZmI0 MWM3MmUuLjU4YjY5N2QxZWY4YiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvdHlwZWMvdWNzaS91 Y3NpX2NjZy5jCisrKyBiL2RyaXZlcnMvdXNiL3R5cGVjL3Vjc2kvdWNzaV9jY2cuYwpAQCAtMjQs NiArMjQsMjkgQEAgZW51bSBlbnVtX2Z3X21vZGUgewogCUZXX0lOVkFMSUQsCiB9OwogCisjZGVm aW5lIENDR1hfUkFCX0RFVklDRV9NT0RFCQkJMHgwMDAwCisjZGVmaW5lIENDR1hfUkFCX0lOVFJf UkVHCQkJMHgwMDA2CisjZGVmaW5lICBERVZfSU5UCQkJCUJJVCgwKQorI2RlZmluZSAgUE9SVDBf SU5UCQkJCUJJVCgxKQorI2RlZmluZSAgUE9SVDFfSU5UCQkJCUJJVCgyKQorI2RlZmluZSAgVUNT SV9SRUFEX0lOVAkJCQlCSVQoNykKKyNkZWZpbmUgQ0NHWF9SQUJfUkVBRF9BTExfVkVSCQkJMHgw MDEwCisjZGVmaW5lIENDR1hfUkFCX1JFQURfRlcyX1ZFUgkJCTB4MDAyMAorI2RlZmluZSBDQ0dY X1JBQl9VQ1NJX0NPTlRST0wJCQkweDAwMzkKKyNkZWZpbmUgQ0NHWF9SQUJfVUNTSV9DT05UUk9M X1NUQVJUCQlCSVQoMCkKKyNkZWZpbmUgQ0NHWF9SQUJfVUNTSV9DT05UUk9MX1NUT1AJCUJJVCgx KQorI2RlZmluZSBDQ0dYX1JBQl9VQ1NJX0RBVEFfQkxPQ0sob2Zmc2V0KQkoMHhmMDAwIHwgKChv ZmZzZXQpICYgMHhmZikpCisjZGVmaW5lIERFVl9SRUdfSURYCQkJCUNDR1hfUkFCX0RFVklDRV9N T0RFCisjZGVmaW5lIENDR1hfUkFCX1JFU1BPTlNFCQkJMHgwMDdFCisjZGVmaW5lICBBU1lOQ19F VkVOVAkJCQlCSVQoNykKKworLyogQ0NHeCBldmVudHMgJiBhc3luYyBtc2cgY29kZXMgKi8KKyNk ZWZpbmUgUkVTRVRfQ09NUExFVEUJCTB4ODAKKyNkZWZpbmUgRVZFTlRfSU5ERVgJCVJFU0VUX0NP TVBMRVRFCisjZGVmaW5lIFBPUlRfQ09OTkVDVF9ERVQJMHg4NAorI2RlZmluZSBQT1JUX0RJU0NP Tk5FQ1RfREVUCTB4ODUKKyNkZWZpbmUgUk9MRV9TV0FQX0NPTVBFTEVURQkweDg3CisKIHN0cnVj dCBjY2dfZGV2X2luZm8gewogI2RlZmluZSBDQ0dfREVWSU5GT19GV01PREVfU0hJRlQgKDApCiAj ZGVmaW5lIENDR19ERVZJTkZPX0ZXTU9ERV9NQVNLICgweDMgPDwgQ0NHX0RFVklORk9fRldNT0RF X1NISUZUKQpAQCAtNTAsNiArNzMsMzYgQEAgc3RydWN0IHZlcnNpb25faW5mbyB7CiAJc3RydWN0 IHZlcnNpb25fZm9ybWF0IGFwcDsKIH07CiAKKy8qIENDR3ggcmVzcG9uc2UgY29kZXMgKi8KK2Vu dW0gY2NnX3Jlc3BfY29kZSB7CisJQ01EX05PX1JFU1AgICAgICAgICAgICAgPSAweDAwLAorCUNN RF9TVUNDRVNTICAgICAgICAgICAgID0gMHgwMiwKKwlGTEFTSF9EQVRBX0FWQUlMQUJMRSAgICA9 IDB4MDMsCisJQ01EX0lOVkFMSUQgICAgICAgICAgICAgPSAweDA1LAorCUZMQVNIX1VQREFURV9G QUlMICAgICAgID0gMHgwNywKKwlJTlZBTElEX0ZXICAgICAgICAgICAgICA9IDB4MDgsCisJSU5W QUxJRF9BUkcgICAgICAgICAgICAgPSAweDA5LAorCUNNRF9OT1RfU1VQUE9SVCAgICAgICAgID0g MHgwQSwKKwlUUkFOU0FDVElPTl9GQUlMICAgICAgICA9IDB4MEMsCisJUERfQ01EX0ZBSUwgICAg ICAgICAgICAgPSAweDBELAorCVVOREVGX0VSUk9SICAgICAgICAgICAgID0gMHgwRiwKKwlJTlZB TElEX1JFU1AJCT0gMHgxMCwKK307CisKKyNkZWZpbmUgQ0NHX0VWRU5UX01BWAkoRVZFTlRfSU5E RVggKyA0MykKKworc3RydWN0IGNjZ19jbWQgeworCXUxNiByZWc7CisJdTMyIGRhdGE7CisJaW50 IGxlbjsKKwlpbnQgZGVsYXk7IC8qIG1zIGRlbGF5IGZvciBjbWQgdGltZW91dCAgKi8KK307CisK K3N0cnVjdCBjY2dfcmVzcCB7CisJdTggY29kZTsKKwl1OCBsZW5ndGg7Cit9OworCiBzdHJ1Y3Qg dWNzaV9jY2cgewogCXN0cnVjdCBkZXZpY2UgKmRldjsKIAlzdHJ1Y3QgdWNzaSAqdWNzaTsKQEAg LTU4LDE3ICsxMTEsMTQgQEAgc3RydWN0IHVjc2lfY2NnIHsKIAlzdHJ1Y3QgY2NnX2Rldl9pbmZv IGluZm87CiAJLyogdmVyc2lvbiBpbmZvIGZvciBib290LCBwcmltYXJ5IGFuZCBzZWNvbmRhcnkg Ki8KIAlzdHJ1Y3QgdmVyc2lvbl9pbmZvIHZlcnNpb25bRlcyICsgMV07CisJLyogQ0NHIEhQSSBj b21tdW5pY2F0aW9uIGZsYWdzICovCisJdW5zaWduZWQgbG9uZyBmbGFnczsKKyNkZWZpbmUgUkVT RVRfUEVORElORwkwCisjZGVmaW5lIERFVl9DTURfUEVORElORwkxCisJc3RydWN0IGNjZ19yZXNw IGRldl9yZXNwOworCXU4IGNtZF9yZXNwOwogfTsKIAotI2RlZmluZSBDQ0dYX1JBQl9ERVZJQ0Vf TU9ERQkJCTB4MDAwMAotI2RlZmluZSBDQ0dYX1JBQl9JTlRSX1JFRwkJCTB4MDAwNgotI2RlZmlu ZSBDQ0dYX1JBQl9SRUFEX0FMTF9WRVIJCQkweDAwMTAKLSNkZWZpbmUgQ0NHWF9SQUJfUkVBRF9G VzJfVkVSCQkJMHgwMDIwCi0jZGVmaW5lIENDR1hfUkFCX1VDU0lfQ09OVFJPTAkJCTB4MDAzOQot I2RlZmluZSBDQ0dYX1JBQl9VQ1NJX0NPTlRST0xfU1RBUlQJCUJJVCgwKQotI2RlZmluZSBDQ0dY X1JBQl9VQ1NJX0NPTlRST0xfU1RPUAkJQklUKDEpCi0jZGVmaW5lIENDR1hfUkFCX1VDU0lfREFU QV9CTE9DSyhvZmZzZXQpCSgweGYwMDAgfCAoKG9mZnNldCkgJiAweGZmKSkKLQogc3RhdGljIGlu dCBjY2dfcmVhZChzdHJ1Y3QgdWNzaV9jY2cgKnVjLCB1MTYgcmFiLCB1OCAqZGF0YSwgdTMyIGxl bikKIHsKIAlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50ID0gdWMtPmNsaWVudDsKQEAgLTI3Niw2 ICszMjYsMTEwIEBAIHN0YXRpYyBpbnQgZ2V0X2Z3X2luZm8oc3RydWN0IHVjc2lfY2NnICp1YykK IAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGludmFsaWRfYXN5bmNfZXZ0KGlu dCBjb2RlKQoreworCXJldHVybiAoY29kZSA+PSBDQ0dfRVZFTlRfTUFYKSB8fCAoY29kZSA8IEVW RU5UX0lOREVYKTsKK30KKworc3RhdGljIHZvaWQgY2NnX3Byb2Nlc3NfcmVzcG9uc2Uoc3RydWN0 IHVjc2lfY2NnICp1YykKK3sKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSB1Yy0+ZGV2OworCisJaWYg KHVjLT5kZXZfcmVzcC5jb2RlICYgQVNZTkNfRVZFTlQpIHsKKwkJaWYgKHVjLT5kZXZfcmVzcC5j b2RlID09IFJFU0VUX0NPTVBMRVRFKSB7CisJCQlpZiAodGVzdF9iaXQoUkVTRVRfUEVORElORywg JnVjLT5mbGFncykpCisJCQkJdWMtPmNtZF9yZXNwID0gdWMtPmRldl9yZXNwLmNvZGU7CisJCQln ZXRfZndfaW5mbyh1Yyk7CisJCX0KKwkJaWYgKGludmFsaWRfYXN5bmNfZXZ0KHVjLT5kZXZfcmVz cC5jb2RlKSkKKwkJCWRldl9lcnIoZGV2LCAiaW52YWxpZCBhc3luYyBldnQgJWRcbiIsCisJCQkJ dWMtPmRldl9yZXNwLmNvZGUpOworCX0gZWxzZSB7CisJCWlmICh0ZXN0X2JpdChERVZfQ01EX1BF TkRJTkcsICZ1Yy0+ZmxhZ3MpKSB7CisJCQl1Yy0+Y21kX3Jlc3AgPSB1Yy0+ZGV2X3Jlc3AuY29k ZTsKKwkJCWNsZWFyX2JpdChERVZfQ01EX1BFTkRJTkcsICZ1Yy0+ZmxhZ3MpOworCQl9IGVsc2Ug eworCQkJZGV2X2VycihkZXYsICJkZXYgcmVzcCAweCUwNHggYnV0IG5vIGNtZCBwZW5kaW5nXG4i LAorCQkJCXVjLT5kZXZfcmVzcC5jb2RlKTsKKwkJfQorCX0KK30KKworc3RhdGljIGludCBjY2df cmVhZF9yZXNwb25zZShzdHJ1Y3QgdWNzaV9jY2cgKnVjKQoreworCXVuc2lnbmVkIGxvbmcgdGFy Z2V0ID0gamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoMTAwMCk7CisJc3RydWN0IGRldmljZSAq ZGV2ID0gdWMtPmRldjsKKwl1OCBpbnR2YWw7CisJaW50IHN0YXR1czsKKworCS8qIHdhaXQgZm9y IGludGVycnVwdCBzdGF0dXMgdG8gZ2V0IHVwZGF0ZWQgKi8KKwlkbyB7CisJCXN0YXR1cyA9IGNj Z19yZWFkKHVjLCBDQ0dYX1JBQl9JTlRSX1JFRywgJmludHZhbCwKKwkJCQkgIHNpemVvZihpbnR2 YWwpKTsKKwkJaWYgKHN0YXR1cyA8IDApCisJCQlyZXR1cm4gc3RhdHVzOworCisJCWlmIChpbnR2 YWwgJiBERVZfSU5UKQorCQkJYnJlYWs7CisJCXVzbGVlcF9yYW5nZSg1MDAsIDYwMCk7CisJfSB3 aGlsZSAodGltZV9pc19hZnRlcl9qaWZmaWVzKHRhcmdldCkpOworCisJaWYgKHRpbWVfaXNfYmVm b3JlX2ppZmZpZXModGFyZ2V0KSkgeworCQlkZXZfZXJyKGRldiwgInJlc3BvbnNlIHRpbWVvdXQg ZXJyb3JcbiIpOworCQlyZXR1cm4gLUVUSU1FOworCX0KKworCXN0YXR1cyA9IGNjZ19yZWFkKHVj LCBDQ0dYX1JBQl9SRVNQT05TRSwgKHU4ICopJnVjLT5kZXZfcmVzcCwKKwkJCSAgc2l6ZW9mKHVj LT5kZXZfcmVzcCkpOworCWlmIChzdGF0dXMgPCAwKQorCQlyZXR1cm4gc3RhdHVzOworCisJc3Rh dHVzID0gY2NnX3dyaXRlKHVjLCBDQ0dYX1JBQl9JTlRSX1JFRywgJmludHZhbCwgc2l6ZW9mKGlu dHZhbCkpOworCWlmIChzdGF0dXMgPCAwKQorCQlyZXR1cm4gc3RhdHVzOworCisJcmV0dXJuIDA7 Cit9CisKKy8qIENhbGxlciBtdXN0IGhvbGQgdWMtPmxvY2sgKi8KK3N0YXRpYyBpbnQgY2NnX3Nl bmRfY29tbWFuZChzdHJ1Y3QgdWNzaV9jY2cgKnVjLCBzdHJ1Y3QgY2NnX2NtZCAqY21kKQorewor CXN0cnVjdCBkZXZpY2UgKmRldiA9IHVjLT5kZXY7CisJaW50IHJldDsKKworCXN3aXRjaCAoY21k LT5yZWcgJiAweEYwMDApIHsKKwljYXNlIERFVl9SRUdfSURYOgorCQlzZXRfYml0KERFVl9DTURf UEVORElORywgJnVjLT5mbGFncyk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWRldl9lcnIoZGV2 LCAiaW52YWxpZCBjbWQgcmVnaXN0ZXJcbiIpOworCQlicmVhazsKKwl9CisKKwlyZXQgPSBjY2df d3JpdGUodWMsIGNtZC0+cmVnLCAodTggKikmY21kLT5kYXRhLCBjbWQtPmxlbik7CisJaWYgKHJl dCA8IDApCisJCXJldHVybiByZXQ7CisKKwltc2xlZXAoY21kLT5kZWxheSk7CisKKwlyZXQgPSBj Y2dfcmVhZF9yZXNwb25zZSh1Yyk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2VycihkZXYsICJy ZXNwb25zZSByZWFkIGVycm9yXG4iKTsKKwkJc3dpdGNoIChjbWQtPnJlZyAmIDB4RjAwMCkgewor CQljYXNlIERFVl9SRUdfSURYOgorCQkJY2xlYXJfYml0KERFVl9DTURfUEVORElORywgJnVjLT5m bGFncyk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWRldl9lcnIoZGV2LCAiaW52YWxpZCBj bWQgcmVnaXN0ZXJcbiIpOworCQkJYnJlYWs7CisJCX0KKwkJcmV0dXJuIC1FSU87CisJfQorCWNj Z19wcm9jZXNzX3Jlc3BvbnNlKHVjKTsKKworCXJldHVybiB1Yy0+Y21kX3Jlc3A7Cit9CisKIHN0 YXRpYyBpbnQgdWNzaV9jY2dfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKIAkJCSAg Y29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQogewo=