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: Heikki Krogerus Message-Id: <20190206092734.GG27830@kuha.fi.intel.com> Date: Wed, 6 Feb 2019 11:27:34 +0200 To: Ajay Gupta Cc: linux-usb@vger.kernel.org, Ajay Gupta List-ID: SGkgQWpheSwKClNvcnJ5IGZvciB0aGUgbGF0ZSByZXNwb25zZSwgYnV0IEkgaGl0IGEgY29tcGls ZXIgd2FybmluZyBhZnRlciBkb2luZwpiaXNlY3QgdGVzdC4KCk9uIEZyaSwgRmViIDAxLCAyMDE5 IGF0IDA1OjA1OjA2UE0gLTA4MDAsIEFqYXkgR3VwdGEgd3JvdGU6Cj4gKy8qIENDR3ggcmVzcG9u c2UgY29kZXMgKi8KPiArZW51bSBjY2dfcmVzcF9jb2RlIHsKPiArCUNNRF9OT19SRVNQICAgICAg ICAgICAgID0gMHgwMCwKPiArCUNNRF9TVUNDRVNTICAgICAgICAgICAgID0gMHgwMiwKPiArCUZM QVNIX0RBVEFfQVZBSUxBQkxFICAgID0gMHgwMywKPiArCUNNRF9JTlZBTElEICAgICAgICAgICAg ID0gMHgwNSwKPiArCUZMQVNIX1VQREFURV9GQUlMICAgICAgID0gMHgwNywKPiArCUlOVkFMSURf RlcgICAgICAgICAgICAgID0gMHgwOCwKPiArCUlOVkFMSURfQVJHICAgICAgICAgICAgID0gMHgw OSwKPiArCUNNRF9OT1RfU1VQUE9SVCAgICAgICAgID0gMHgwQSwKPiArCVRSQU5TQUNUSU9OX0ZB SUwgICAgICAgID0gMHgwQywKPiArCVBEX0NNRF9GQUlMICAgICAgICAgICAgID0gMHgwRCwKPiAr CVVOREVGX0VSUk9SICAgICAgICAgICAgID0gMHgwRiwKPiArCUlOVkFMSURfUkVTUAkJPSAweDEw LAo+ICt9OwoKU2lkZSBub3RlLiBUaGVyZSBhcmUgbm8gdXNlcnMgZm9yIHRoZXNlLCBzbyBJJ20g bm90IHN1cmUgeW91IG5lZWQgdG8KYWRkIHRoZW0gaW4gdGhpcyBwYXRjaC4KCj4gKyNkZWZpbmUg Q0NHX0VWRU5UX01BWAkoRVZFTlRfSU5ERVggKyA0MykKPiArCj4gK3N0cnVjdCBjY2dfY21kIHsK PiArCXUxNiByZWc7Cj4gKwl1MzIgZGF0YTsKPiArCWludCBsZW47Cj4gKwlpbnQgZGVsYXk7IC8q IG1zIGRlbGF5IGZvciBjbWQgdGltZW91dCAgKi8KPiArfTsKPiArCj4gK3N0cnVjdCBjY2dfcmVz cCB7Cj4gKwl1OCBjb2RlOwo+ICsJdTggbGVuZ3RoOwo+ICt9Owo+ICsKPiAgc3RydWN0IHVjc2lf Y2NnIHsKPiAgCXN0cnVjdCBkZXZpY2UgKmRldjsKPiAgCXN0cnVjdCB1Y3NpICp1Y3NpOwo+IEBA IC01OCwxNyArMTExLDE0IEBAIHN0cnVjdCB1Y3NpX2NjZyB7Cj4gIAlzdHJ1Y3QgY2NnX2Rldl9p bmZvIGluZm87Cj4gIAkvKiB2ZXJzaW9uIGluZm8gZm9yIGJvb3QsIHByaW1hcnkgYW5kIHNlY29u ZGFyeSAqLwo+ICAJc3RydWN0IHZlcnNpb25faW5mbyB2ZXJzaW9uW0ZXMiArIDFdOwo+ICsJLyog Q0NHIEhQSSBjb21tdW5pY2F0aW9uIGZsYWdzICovCj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ ICsjZGVmaW5lIFJFU0VUX1BFTkRJTkcJMAo+ICsjZGVmaW5lIERFVl9DTURfUEVORElORwkxCj4g KwlzdHJ1Y3QgY2NnX3Jlc3AgZGV2X3Jlc3A7Cj4gKwl1OCBjbWRfcmVzcDsKPiAgfTsKPiAgCj4g LSNkZWZpbmUgQ0NHWF9SQUJfREVWSUNFX01PREUJCQkweDAwMDAKPiAtI2RlZmluZSBDQ0dYX1JB Ql9JTlRSX1JFRwkJCTB4MDAwNgo+IC0jZGVmaW5lIENDR1hfUkFCX1JFQURfQUxMX1ZFUgkJCTB4 MDAxMAo+IC0jZGVmaW5lIENDR1hfUkFCX1JFQURfRlcyX1ZFUgkJCTB4MDAyMAo+IC0jZGVmaW5l IENDR1hfUkFCX1VDU0lfQ09OVFJPTAkJCTB4MDAzOQo+IC0jZGVmaW5lIENDR1hfUkFCX1VDU0lf Q09OVFJPTF9TVEFSVAkJQklUKDApCj4gLSNkZWZpbmUgQ0NHWF9SQUJfVUNTSV9DT05UUk9MX1NU T1AJCUJJVCgxKQo+IC0jZGVmaW5lIENDR1hfUkFCX1VDU0lfREFUQV9CTE9DSyhvZmZzZXQpCSgw eGYwMDAgfCAoKG9mZnNldCkgJiAweGZmKSkKPiAtCj4gIHN0YXRpYyBpbnQgY2NnX3JlYWQoc3Ry dWN0IHVjc2lfY2NnICp1YywgdTE2IHJhYiwgdTggKmRhdGEsIHUzMiBsZW4pCj4gIHsKPiAgCXN0 cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSB1Yy0+Y2xpZW50Owo+IEBAIC0yNzYsNiArMzI2LDEx MCBAQCBzdGF0aWMgaW50IGdldF9md19pbmZvKHN0cnVjdCB1Y3NpX2NjZyAqdWMpCj4gIAlyZXR1 cm4gMDsKPiAgfQo+ICAKPiArc3RhdGljIGlubGluZSBib29sIGludmFsaWRfYXN5bmNfZXZ0KGlu dCBjb2RlKQo+ICt7Cj4gKwlyZXR1cm4gKGNvZGUgPj0gQ0NHX0VWRU5UX01BWCkgfHwgKGNvZGUg PCBFVkVOVF9JTkRFWCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGNjZ19wcm9jZXNzX3Jlc3Bv bnNlKHN0cnVjdCB1Y3NpX2NjZyAqdWMpCj4gK3sKPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IHVj LT5kZXY7Cj4gKwo+ICsJaWYgKHVjLT5kZXZfcmVzcC5jb2RlICYgQVNZTkNfRVZFTlQpIHsKPiAr CQlpZiAodWMtPmRldl9yZXNwLmNvZGUgPT0gUkVTRVRfQ09NUExFVEUpIHsKPiArCQkJaWYgKHRl c3RfYml0KFJFU0VUX1BFTkRJTkcsICZ1Yy0+ZmxhZ3MpKQo+ICsJCQkJdWMtPmNtZF9yZXNwID0g dWMtPmRldl9yZXNwLmNvZGU7Cj4gKwkJCWdldF9md19pbmZvKHVjKTsKPiArCQl9Cj4gKwkJaWYg KGludmFsaWRfYXN5bmNfZXZ0KHVjLT5kZXZfcmVzcC5jb2RlKSkKPiArCQkJZGV2X2VycihkZXYs ICJpbnZhbGlkIGFzeW5jIGV2dCAlZFxuIiwKPiArCQkJCXVjLT5kZXZfcmVzcC5jb2RlKTsKPiAr CX0gZWxzZSB7Cj4gKwkJaWYgKHRlc3RfYml0KERFVl9DTURfUEVORElORywgJnVjLT5mbGFncykp IHsKPiArCQkJdWMtPmNtZF9yZXNwID0gdWMtPmRldl9yZXNwLmNvZGU7Cj4gKwkJCWNsZWFyX2Jp dChERVZfQ01EX1BFTkRJTkcsICZ1Yy0+ZmxhZ3MpOwo+ICsJCX0gZWxzZSB7Cj4gKwkJCWRldl9l cnIoZGV2LCAiZGV2IHJlc3AgMHglMDR4IGJ1dCBubyBjbWQgcGVuZGluZ1xuIiwKPiArCQkJCXVj LT5kZXZfcmVzcC5jb2RlKTsKPiArCQl9Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgY2Nn X3JlYWRfcmVzcG9uc2Uoc3RydWN0IHVjc2lfY2NnICp1YykKPiArewo+ICsJdW5zaWduZWQgbG9u ZyB0YXJnZXQgPSBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcygxMDAwKTsKPiArCXN0cnVjdCBk ZXZpY2UgKmRldiA9IHVjLT5kZXY7Cj4gKwl1OCBpbnR2YWw7Cj4gKwlpbnQgc3RhdHVzOwo+ICsK PiArCS8qIHdhaXQgZm9yIGludGVycnVwdCBzdGF0dXMgdG8gZ2V0IHVwZGF0ZWQgKi8KPiArCWRv IHsKPiArCQlzdGF0dXMgPSBjY2dfcmVhZCh1YywgQ0NHWF9SQUJfSU5UUl9SRUcsICZpbnR2YWws Cj4gKwkJCQkgIHNpemVvZihpbnR2YWwpKTsKPiArCQlpZiAoc3RhdHVzIDwgMCkKPiArCQkJcmV0 dXJuIHN0YXR1czsKPiArCj4gKwkJaWYgKGludHZhbCAmIERFVl9JTlQpCj4gKwkJCWJyZWFrOwo+ ICsJCXVzbGVlcF9yYW5nZSg1MDAsIDYwMCk7Cj4gKwl9IHdoaWxlICh0aW1lX2lzX2FmdGVyX2pp ZmZpZXModGFyZ2V0KSk7Cj4gKwo+ICsJaWYgKHRpbWVfaXNfYmVmb3JlX2ppZmZpZXModGFyZ2V0 KSkgewo+ICsJCWRldl9lcnIoZGV2LCAicmVzcG9uc2UgdGltZW91dCBlcnJvclxuIik7Cj4gKwkJ cmV0dXJuIC1FVElNRTsKPiArCX0KPiArCj4gKwlzdGF0dXMgPSBjY2dfcmVhZCh1YywgQ0NHWF9S QUJfUkVTUE9OU0UsICh1OCAqKSZ1Yy0+ZGV2X3Jlc3AsCj4gKwkJCSAgc2l6ZW9mKHVjLT5kZXZf cmVzcCkpOwo+ICsJaWYgKHN0YXR1cyA8IDApCj4gKwkJcmV0dXJuIHN0YXR1czsKPiArCj4gKwlz dGF0dXMgPSBjY2dfd3JpdGUodWMsIENDR1hfUkFCX0lOVFJfUkVHLCAmaW50dmFsLCBzaXplb2Yo aW50dmFsKSk7Cj4gKwlpZiAoc3RhdHVzIDwgMCkKPiArCQlyZXR1cm4gc3RhdHVzOwo+ICsKPiAr CXJldHVybiAwOwo+ICt9Cj4gKwo+ICsvKiBDYWxsZXIgbXVzdCBob2xkIHVjLT5sb2NrICovCj4g K3N0YXRpYyBpbnQgY2NnX3NlbmRfY29tbWFuZChzdHJ1Y3QgdWNzaV9jY2cgKnVjLCBzdHJ1Y3Qg Y2NnX2NtZCAqY21kKQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSB1Yy0+ZGV2Owo+ICsJ aW50IHJldDsKPiArCj4gKwlzd2l0Y2ggKGNtZC0+cmVnICYgMHhGMDAwKSB7Cj4gKwljYXNlIERF Vl9SRUdfSURYOgo+ICsJCXNldF9iaXQoREVWX0NNRF9QRU5ESU5HLCAmdWMtPmZsYWdzKTsKPiAr CQlicmVhazsKPiArCWRlZmF1bHQ6Cj4gKwkJZGV2X2VycihkZXYsICJpbnZhbGlkIGNtZCByZWdp c3RlclxuIik7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gY2NnX3dyaXRlKHVjLCBj bWQtPnJlZywgKHU4ICopJmNtZC0+ZGF0YSwgY21kLT5sZW4pOwo+ICsJaWYgKHJldCA8IDApCj4g KwkJcmV0dXJuIHJldDsKPiArCj4gKwltc2xlZXAoY21kLT5kZWxheSk7Cj4gKwo+ICsJcmV0ID0g Y2NnX3JlYWRfcmVzcG9uc2UodWMpOwo+ICsJaWYgKHJldCA8IDApIHsKPiArCQlkZXZfZXJyKGRl diwgInJlc3BvbnNlIHJlYWQgZXJyb3JcbiIpOwo+ICsJCXN3aXRjaCAoY21kLT5yZWcgJiAweEYw MDApIHsKPiArCQljYXNlIERFVl9SRUdfSURYOgo+ICsJCQljbGVhcl9iaXQoREVWX0NNRF9QRU5E SU5HLCAmdWMtPmZsYWdzKTsKPiArCQkJYnJlYWs7Cj4gKwkJZGVmYXVsdDoKPiArCQkJZGV2X2Vy cihkZXYsICJpbnZhbGlkIGNtZCByZWdpc3RlclxuIik7Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiAr CQlyZXR1cm4gLUVJTzsKPiArCX0KPiArCWNjZ19wcm9jZXNzX3Jlc3BvbnNlKHVjKTsKPiArCj4g KwlyZXR1cm4gdWMtPmNtZF9yZXNwOwo+ICt9CgpJIGRpZCBteSBsaXR0bGUgYmlzZWN0IHRlc3Qs IGFuZCBub3RpY2VkIHRoYXQgdGhpcyBpcyBnaXZpbmcgYQpjb21waWxlciB3YXJuaW5nLiBOb3Ro aW5nIGlzIGNhbGxpbmcgdGhlIGZ1bmN0aW9uIHlldC4KCgp0aGFua3MsCg==