From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lee Jones Subject: Re: [PATCH v7 3/6] mfd: cros-ec: Increase maximum mkbp event size Date: Mon, 18 Jun 2018 08:44:43 +0100 Message-ID: <20180618074443.GK31141@dell> References: <1527841154-24832-1-git-send-email-narmstrong@baylibre.com> <1527841154-24832-4-git-send-email-narmstrong@baylibre.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1527841154-24832-4-git-send-email-narmstrong@baylibre.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Neil Armstrong Cc: seanpaul@google.com, fparent@baylibre.com, airlied@linux.ie, sadolfsson@google.com, intel-gfx@lists.freedesktop.org, eballetbo@gmail.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Stefan Adolfsson , felixe@google.com, hans.verkuil@cisco.com, olof@lixom.net, bleung@google.com, darekm@google.com, linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCAwMSBKdW4gMjAxOCwgTmVpbCBBcm1zdHJvbmcgd3JvdGU6Cgo+IEhhdmluZyBhIDE2 IGJ5dGUgbWticCBldmVudCBzaXplIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHNlbmQgQ0VDCj4gbWVz c2FnZXMgZnJvbSB0aGUgRUMgdG8gdGhlIEFQIGRpcmVjdGx5IGluc2lkZSB0aGUgbWticCBldmVu dAo+IGluc3RlYWQgb2YgZmlyc3QgZG9pbmcgYSBub3RpZmljYXRpb24gYW5kIHRoZW4gYSByZWFk Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBBZG9sZnNzb24gPHNhZG9sZnNzb25AY2hyb21p dW0ub3JnPgo+IFNpZ25lZC1vZmYtYnk6IE5laWwgQXJtc3Ryb25nIDxuYXJtc3Ryb25nQGJheWxp YnJlLmNvbT4KPiBUZXN0ZWQtYnk6IEVucmljIEJhbGxldGJvIGkgU2VycmEgPGVucmljLmJhbGxl dGJvQGNvbGxhYm9yYS5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvcGxhdGZvcm0vY2hyb21lL2Nyb3Nf ZWNfcHJvdG8uYyB8IDQwICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQo+ICBpbmNs dWRlL2xpbnV4L21mZC9jcm9zX2VjLmggICAgICAgICAgICAgfCAgMiArLQo+ICBpbmNsdWRlL2xp bnV4L21mZC9jcm9zX2VjX2NvbW1hbmRzLmggICAgfCAxOSArKysrKysrKysrKysrKysrCj4gIDMg ZmlsZXMgY2hhbmdlZCwgNTEgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCj4gCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvcGxhdGZvcm0vY2hyb21lL2Nyb3NfZWNfcHJvdG8uYyBiL2RyaXZl cnMvcGxhdGZvcm0vY2hyb21lL2Nyb3NfZWNfcHJvdG8uYwo+IGluZGV4IGU3YmJkZjkuLmM0ZjZj NDQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9wbGF0Zm9ybS9jaHJvbWUvY3Jvc19lY19wcm90by5j Cj4gKysrIGIvZHJpdmVycy9wbGF0Zm9ybS9jaHJvbWUvY3Jvc19lY19wcm90by5jCj4gQEAgLTUw NCwxMCArNTA0LDMxIEBAIGludCBjcm9zX2VjX2NtZF94ZmVyX3N0YXR1cyhzdHJ1Y3QgY3Jvc19l Y19kZXZpY2UgKmVjX2RldiwKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGNyb3NfZWNfY21kX3hmZXJf c3RhdHVzKTsKPiAgCj4gK3N0YXRpYyBpbnQgZ2V0X25leHRfZXZlbnRfeGZlcihzdHJ1Y3QgY3Jv c19lY19kZXZpY2UgKmVjX2RldiwKPiArCQkJICAgICAgIHN0cnVjdCBjcm9zX2VjX2NvbW1hbmQg Km1zZywKPiArCQkJICAgICAgIGludCB2ZXJzaW9uLCB1aW50MzJfdCBzaXplKQo+ICt7Cj4gKwlp bnQgcmV0Owo+ICsKPiArCW1zZy0+dmVyc2lvbiA9IHZlcnNpb247Cj4gKwltc2ctPmNvbW1hbmQg PSBFQ19DTURfR0VUX05FWFRfRVZFTlQ7Cj4gKwltc2ctPmluc2l6ZSA9IHNpemU7Cj4gKwltc2ct Pm91dHNpemUgPSAwOwo+ICsKPiArCXJldCA9IGNyb3NfZWNfY21kX3hmZXIoZWNfZGV2LCBtc2cp Owo+ICsJaWYgKHJldCA+IDApIHsKPiArCQllY19kZXYtPmV2ZW50X3NpemUgPSByZXQgLSAxOwo+ ICsJCW1lbWNweSgmZWNfZGV2LT5ldmVudF9kYXRhLCBtc2ctPmRhdGEsIGVjX2Rldi0+ZXZlbnRf c2l6ZSk7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiAgc3RhdGljIGludCBn ZXRfbmV4dF9ldmVudChzdHJ1Y3QgY3Jvc19lY19kZXZpY2UgKmVjX2RldikKPiAgewo+ICAJdTgg YnVmZmVyW3NpemVvZihzdHJ1Y3QgY3Jvc19lY19jb21tYW5kKSArIHNpemVvZihlY19kZXYtPmV2 ZW50X2RhdGEpXTsKPiAgCXN0cnVjdCBjcm9zX2VjX2NvbW1hbmQgKm1zZyA9IChzdHJ1Y3QgY3Jv c19lY19jb21tYW5kICopJmJ1ZmZlcjsKPiArCXN0YXRpYyBpbnQgY21kX3ZlcnNpb24gPSAxOwo+ ICAJaW50IHJldDsKPiAgCj4gIAlpZiAoZWNfZGV2LT5zdXNwZW5kZWQpIHsKPiBAQCAtNTE1LDE4 ICs1MzYsMTkgQEAgc3RhdGljIGludCBnZXRfbmV4dF9ldmVudChzdHJ1Y3QgY3Jvc19lY19kZXZp Y2UgKmVjX2RldikKPiAgCQlyZXR1cm4gLUVIT1NURE9XTjsKPiAgCX0KPiAgCj4gLQltc2ctPnZl cnNpb24gPSAwOwo+IC0JbXNnLT5jb21tYW5kID0gRUNfQ01EX0dFVF9ORVhUX0VWRU5UOwo+IC0J bXNnLT5pbnNpemUgPSBzaXplb2YoZWNfZGV2LT5ldmVudF9kYXRhKTsKPiAtCW1zZy0+b3V0c2l6 ZSA9IDA7Cj4gKwlpZiAoY21kX3ZlcnNpb24gPT0gMSkgewo+ICsJCXJldCA9IGdldF9uZXh0X2V2 ZW50X3hmZXIoZWNfZGV2LCBtc2csIGNtZF92ZXJzaW9uLAo+ICsJCQkJc2l6ZW9mKHN0cnVjdCBl Y19yZXNwb25zZV9nZXRfbmV4dF9ldmVudF92MSkpOwo+ICsJCWlmIChyZXQgPCAwIHx8IG1zZy0+ cmVzdWx0ICE9IEVDX1JFU19JTlZBTElEX1ZFUlNJT04pCj4gKwkJCXJldHVybiByZXQ7Cj4gIAo+ IC0JcmV0ID0gY3Jvc19lY19jbWRfeGZlcihlY19kZXYsIG1zZyk7Cj4gLQlpZiAocmV0ID4gMCkg ewo+IC0JCWVjX2Rldi0+ZXZlbnRfc2l6ZSA9IHJldCAtIDE7Cj4gLQkJbWVtY3B5KCZlY19kZXYt PmV2ZW50X2RhdGEsIG1zZy0+ZGF0YSwKPiAtCQkgICAgICAgc2l6ZW9mKGVjX2Rldi0+ZXZlbnRf ZGF0YSkpOwo+ICsJCS8qIEZhbGxiYWNrIHRvIHZlcnNpb24gMCBmb3IgZnV0dXJlIHNlbmQgYXR0 ZW1wdHMgKi8KPiArCQljbWRfdmVyc2lvbiA9IDA7Cj4gIAl9Cj4gIAo+ICsJcmV0ID0gZ2V0X25l eHRfZXZlbnRfeGZlcihlY19kZXYsIG1zZywgY21kX3ZlcnNpb24sCj4gKwkJCQkgIHNpemVvZihz dHJ1Y3QgZWNfcmVzcG9uc2VfZ2V0X25leHRfZXZlbnQpKTsKPiArCj4gIAlyZXR1cm4gcmV0Owo+ ICB9Cj4gIAo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21mZC9jcm9zX2VjLmggYi9pbmNs dWRlL2xpbnV4L21mZC9jcm9zX2VjLmgKPiBpbmRleCBmMzYxMjVlLi4zMmNhZWYzIDEwMDY0NAo+ IC0tLSBhL2luY2x1ZGUvbGludXgvbWZkL2Nyb3NfZWMuaAo+ICsrKyBiL2luY2x1ZGUvbGludXgv bWZkL2Nyb3NfZWMuaAo+IEBAIC0xNDcsNyArMTQ3LDcgQEAgc3RydWN0IGNyb3NfZWNfZGV2aWNl IHsKPiAgCWJvb2wgbWticF9ldmVudF9zdXBwb3J0ZWQ7Cj4gIAlzdHJ1Y3QgYmxvY2tpbmdfbm90 aWZpZXJfaGVhZCBldmVudF9ub3RpZmllcjsKPiAgCj4gLQlzdHJ1Y3QgZWNfcmVzcG9uc2VfZ2V0 X25leHRfZXZlbnQgZXZlbnRfZGF0YTsKPiArCXN0cnVjdCBlY19yZXNwb25zZV9nZXRfbmV4dF9l dmVudF92MSBldmVudF9kYXRhOwo+ICAJaW50IGV2ZW50X3NpemU7Cj4gIAl1MzIgaG9zdF9ldmVu dF93YWtlX21hc2s7Cj4gIH07Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWZkL2Nyb3Nf ZWNfY29tbWFuZHMuaCBiL2luY2x1ZGUvbGludXgvbWZkL2Nyb3NfZWNfY29tbWFuZHMuaAo+IGlu ZGV4IGYyZWRkOTkuLmNjMDc2OGUgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9tZmQvY3Jv c19lY19jb21tYW5kcy5oCj4gKysrIGIvaW5jbHVkZS9saW51eC9tZmQvY3Jvc19lY19jb21tYW5k cy5oCj4gQEAgLTIwOTMsMTIgKzIwOTMsMzEgQEAgdW5pb24gZWNfcmVzcG9uc2VfZ2V0X25leHRf ZGF0YSB7Cj4gIAl1aW50MzJfdCAgIHN5c3JxOwo+ICB9IF9fcGFja2VkOwo+ICAKPiArdW5pb24g ZWNfcmVzcG9uc2VfZ2V0X25leHRfZGF0YV92MSB7Cj4gKwl1aW50OF90ICAga2V5X21hdHJpeFsx Nl07Cj4gKwo+ICsJLyogVW5hbGlnbmVkICovCgpUaGF0J3MgZnVubnkhCgo+ICsJdWludDMyX3Qg IGhvc3RfZXZlbnQ7Cj4gKwo+ICsJdWludDMyX3QgICBidXR0b25zOwo+ICsJdWludDMyX3QgICBz d2l0Y2hlczsKPiArCXVpbnQzMl90ICAgc3lzcnE7Cj4gKwl1aW50MzJfdCAgIGNlY19ldmVudHM7 Cj4gKwl1aW50OF90ICAgIGNlY19tZXNzYWdlWzE2XTsKClNpbmNlIHRoZXJlIGFyZSBzb21lIHdo aXRlc3BhY2UgYWxpZ25tZW50IGlzc3VlcyBpbiBoZXJlLgoKPiArfSBfX3BhY2tlZDsKCkhvdyBj b21lIHRoZXNlIGd1eXMgaGF2ZSBrZXJuZWxkb2MgaGVhZGVycz8KCj4gIHN0cnVjdCBlY19yZXNw b25zZV9nZXRfbmV4dF9ldmVudCB7Cj4gIAl1aW50OF90IGV2ZW50X3R5cGU7Cj4gIAkvKiBGb2xs b3dlZCBieSBldmVudCBkYXRhIGlmIGFueSAqLwo+ICAJdW5pb24gZWNfcmVzcG9uc2VfZ2V0X25l eHRfZGF0YSBkYXRhOwo+ICB9IF9fcGFja2VkOwo+ICAKPiArc3RydWN0IGVjX3Jlc3BvbnNlX2dl dF9uZXh0X2V2ZW50X3YxIHsKPiArCXVpbnQ4X3QgZXZlbnRfdHlwZTsKPiArCS8qIEZvbGxvd2Vk IGJ5IGV2ZW50IGRhdGEgaWYgYW55ICovCj4gKwl1bmlvbiBlY19yZXNwb25zZV9nZXRfbmV4dF9k YXRhX3YxIGRhdGE7Cj4gK30gX19wYWNrZWQ7Cj4gKwo+ICAvKiBCaXQgaW5kaWNlcyBmb3IgYnV0 dG9ucyBhbmQgc3dpdGNoZXMuKi8KPiAgLyogQnV0dG9ucyAqLwo+ICAjZGVmaW5lIEVDX01LQlBf UE9XRVJfQlVUVE9OCTAKCi0tIApMZWUgSm9uZXMgW+adjueQvOaWr10KTGluYXJvIFNlcnZpY2Vz IFRlY2huaWNhbCBMZWFkCkxpbmFyby5vcmcg4pSCIE9wZW4gc291cmNlIHNvZnR3YXJlIGZvciBB Uk0gU29DcwpGb2xsb3cgTGluYXJvOiBGYWNlYm9vayB8IFR3aXR0ZXIgfCBCbG9nCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-wm0-f68.google.com ([74.125.82.68]:40604 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754655AbeFRHor (ORCPT ); Mon, 18 Jun 2018 03:44:47 -0400 Received: by mail-wm0-f68.google.com with SMTP id n5-v6so13551540wmc.5 for ; Mon, 18 Jun 2018 00:44:47 -0700 (PDT) Date: Mon, 18 Jun 2018 08:44:43 +0100 From: Lee Jones To: Neil Armstrong Cc: airlied@linux.ie, hans.verkuil@cisco.com, olof@lixom.net, seanpaul@google.com, sadolfsson@google.com, felixe@google.com, bleung@google.com, darekm@google.com, marcheu@chromium.org, fparent@baylibre.com, dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org, intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, eballetbo@gmail.com, Stefan Adolfsson Subject: Re: [PATCH v7 3/6] mfd: cros-ec: Increase maximum mkbp event size Message-ID: <20180618074443.GK31141@dell> References: <1527841154-24832-1-git-send-email-narmstrong@baylibre.com> <1527841154-24832-4-git-send-email-narmstrong@baylibre.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1527841154-24832-4-git-send-email-narmstrong@baylibre.com> Sender: linux-media-owner@vger.kernel.org List-ID: On Fri, 01 Jun 2018, Neil Armstrong wrote: > Having a 16 byte mkbp event size makes it possible to send CEC > messages from the EC to the AP directly inside the mkbp event > instead of first doing a notification and then a read. > > Signed-off-by: Stefan Adolfsson > Signed-off-by: Neil Armstrong > Tested-by: Enric Balletbo i Serra > --- > drivers/platform/chrome/cros_ec_proto.c | 40 +++++++++++++++++++++++++-------- > include/linux/mfd/cros_ec.h | 2 +- > include/linux/mfd/cros_ec_commands.h | 19 ++++++++++++++++ > 3 files changed, 51 insertions(+), 10 deletions(-) > > diff --git a/drivers/platform/chrome/cros_ec_proto.c b/drivers/platform/chrome/cros_ec_proto.c > index e7bbdf9..c4f6c44 100644 > --- a/drivers/platform/chrome/cros_ec_proto.c > +++ b/drivers/platform/chrome/cros_ec_proto.c > @@ -504,10 +504,31 @@ int cros_ec_cmd_xfer_status(struct cros_ec_device *ec_dev, > } > EXPORT_SYMBOL(cros_ec_cmd_xfer_status); > > +static int get_next_event_xfer(struct cros_ec_device *ec_dev, > + struct cros_ec_command *msg, > + int version, uint32_t size) > +{ > + int ret; > + > + msg->version = version; > + msg->command = EC_CMD_GET_NEXT_EVENT; > + msg->insize = size; > + msg->outsize = 0; > + > + ret = cros_ec_cmd_xfer(ec_dev, msg); > + if (ret > 0) { > + ec_dev->event_size = ret - 1; > + memcpy(&ec_dev->event_data, msg->data, ec_dev->event_size); > + } > + > + return ret; > +} > + > static int get_next_event(struct cros_ec_device *ec_dev) > { > u8 buffer[sizeof(struct cros_ec_command) + sizeof(ec_dev->event_data)]; > struct cros_ec_command *msg = (struct cros_ec_command *)&buffer; > + static int cmd_version = 1; > int ret; > > if (ec_dev->suspended) { > @@ -515,18 +536,19 @@ static int get_next_event(struct cros_ec_device *ec_dev) > return -EHOSTDOWN; > } > > - msg->version = 0; > - msg->command = EC_CMD_GET_NEXT_EVENT; > - msg->insize = sizeof(ec_dev->event_data); > - msg->outsize = 0; > + if (cmd_version == 1) { > + ret = get_next_event_xfer(ec_dev, msg, cmd_version, > + sizeof(struct ec_response_get_next_event_v1)); > + if (ret < 0 || msg->result != EC_RES_INVALID_VERSION) > + return ret; > > - ret = cros_ec_cmd_xfer(ec_dev, msg); > - if (ret > 0) { > - ec_dev->event_size = ret - 1; > - memcpy(&ec_dev->event_data, msg->data, > - sizeof(ec_dev->event_data)); > + /* Fallback to version 0 for future send attempts */ > + cmd_version = 0; > } > > + ret = get_next_event_xfer(ec_dev, msg, cmd_version, > + sizeof(struct ec_response_get_next_event)); > + > return ret; > } > > diff --git a/include/linux/mfd/cros_ec.h b/include/linux/mfd/cros_ec.h > index f36125e..32caef3 100644 > --- a/include/linux/mfd/cros_ec.h > +++ b/include/linux/mfd/cros_ec.h > @@ -147,7 +147,7 @@ struct cros_ec_device { > bool mkbp_event_supported; > struct blocking_notifier_head event_notifier; > > - struct ec_response_get_next_event event_data; > + struct ec_response_get_next_event_v1 event_data; > int event_size; > u32 host_event_wake_mask; > }; > diff --git a/include/linux/mfd/cros_ec_commands.h b/include/linux/mfd/cros_ec_commands.h > index f2edd99..cc0768e 100644 > --- a/include/linux/mfd/cros_ec_commands.h > +++ b/include/linux/mfd/cros_ec_commands.h > @@ -2093,12 +2093,31 @@ union ec_response_get_next_data { > uint32_t sysrq; > } __packed; > > +union ec_response_get_next_data_v1 { > + uint8_t key_matrix[16]; > + > + /* Unaligned */ That's funny! > + uint32_t host_event; > + > + uint32_t buttons; > + uint32_t switches; > + uint32_t sysrq; > + uint32_t cec_events; > + uint8_t cec_message[16]; Since there are some whitespace alignment issues in here. > +} __packed; How come these guys have kerneldoc headers? > struct ec_response_get_next_event { > uint8_t event_type; > /* Followed by event data if any */ > union ec_response_get_next_data data; > } __packed; > > +struct ec_response_get_next_event_v1 { > + uint8_t event_type; > + /* Followed by event data if any */ > + union ec_response_get_next_data_v1 data; > +} __packed; > + > /* Bit indices for buttons and switches.*/ > /* Buttons */ > #define EC_MKBP_POWER_BUTTON 0 -- Lee Jones [李琼斯] Linaro Services Technical Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog