I've uploaded v4. PTAL. On Mon, Apr 8, 2024 at 1:13 AM Tzung-Bi Shih <tzungbi@xxxxxxxxxx> wrote: > > How this driver get probed? From drivers/mfd/cros_ec_dev.c? If so, there is > no "cros-ec-ucsi" in the MFD driver yet. Yes, this should get probed from drivers/mfd/cros_ec_dev.c. However, the corresponding change in the EC is still under review. I was planning to send it out once the EC change lands. Please let me know if you think that this review should wait until then. > > > diff --git a/drivers/usb/typec/ucsi/cros_ec_ucsi.c b/drivers/usb/typec/ucsi/cros_ec_ucsi.c > > [...] > > +static int cros_ucsi_async_write(struct ucsi *ucsi, unsigned int offset, > > + const void *val, size_t val_len) > > +{ > > + struct cros_ucsi_data *udata = ucsi_get_drvdata(ucsi); > > + uint8_t ec_buffer[MAX_EC_DATA_SIZE + sizeof(struct ec_params_ucsi_ppm_set)]; > > + struct ec_params_ucsi_ppm_set *req = (struct ec_params_ucsi_ppm_set *)ec_buffer; > > + int ret = 0; > > The initialization is redundant. `ret` will be overridden soon. Removed. > > > + if (val_len > MAX_EC_DATA_SIZE) { > > + dev_err(udata->dev, "Can't write %zu bytes. Too big.", val_len); > > + return -EINVAL; > > + } > > + > > + memset(req, 0, sizeof(ec_buffer)); > > The `memset` is redundant. Removed. > > > + req->offset = offset; > > + memcpy(req->data, val, val_len); > > + ret = cros_ec_cmd(udata->ec, 0, EC_CMD_UCSI_PPM_SET, > > + req, sizeof(struct ec_params_ucsi_ppm_set) + val_len, NULL, 0); > > `sizeof(*req)`. Done. > > > +static int cros_ucsi_probe(struct platform_device *pdev) > > +{ > > + struct device *dev = &pdev->dev; > > [...] > > + udata->ucsi = ucsi_create(udata->dev, &cros_ucsi_ops); > > `dev`. > > > [...] > > +static const struct platform_device_id cros_ec_ucsi_id[] = { > > To be consistent with other symbols, consider either: > - s/cros_ec_/cros_/ for the symbol. > or > - s/cros_ucsi_/cros_ec_ucsi_/g for echoing the file name. Replaced cros_ec_ucsi_id with cros_ucsi_id. > > + { "cros-ec-ucsi"}, > > The driver has declared DRV_NAME, use it. `{ DRV_NAME, 0 },`. > Used DRV_NAME. > > + {} > > +}; > > +MODULE_DEVICE_TABLE(platform, cros_ec_ucsi_id); > > Ditto. Replaced cros_ec_ucsi_id with cros_ucsi_id. > > +static struct platform_driver cros_ucsi_driver = { > > + .driver = { > > + .name = DRV_NAME, > > + .pm = &cros_ucsi_pm_ops, > > + }, > > + .id_table = cros_ec_ucsi_id, > > Ditto. Replaced cros_ec_ucsi_id with cros_ucsi_id. Thanks, Pavan