Re: [PATCH v4 1/5] mfd: Add support for Intel LJCA device
From: Greg Kroah-Hartman
Date: Thu Mar 09 2023 - 10:59:07 EST
On Thu, Mar 09, 2023 at 11:45:51PM +0800, Ye, Xiang wrote:
> On Thu, Mar 09, 2023 at 11:06:25AM +0100, Andi Shyti wrote:
> > On Thu, Mar 09, 2023 at 10:41:05AM +0100, Greg Kroah-Hartman wrote:
> > > On Thu, Mar 09, 2023 at 05:31:44PM +0800, Ye, Xiang wrote:
> > > > On Thu, Mar 09, 2023 at 08:52:24AM +0100, Greg Kroah-Hartman wrote:
> > > > > On Thu, Mar 09, 2023 at 03:10:56PM +0800, Ye Xiang wrote:
> > > > > > +static int ljca_mng_get_version(struct ljca_stub *stub, char *buf)
> > > > > > +{
> > > > > > + struct fw_version version = {};
> > > > > > + unsigned int len = sizeof(version);
> > > > > > + int ret;
> > > > > > +
> > > > > > + ret = ljca_stub_write(stub, LJCA_MNG_GET_VERSION, NULL, 0, &version, &len, true,
> > > > > > + LJCA_USB_WRITE_ACK_TIMEOUT_MS);
> > > > > > + if (ret)
> > > > > > + return ret;
> > > > > > +
> > > > > > + if (len != sizeof(version)) {
> > > > > > + dev_err(&stub->intf->dev, "get version failed, len:%d\n", len);
> > > > > > + return -EINVAL;
> > > > > > + }
> > > > > > +
> > > > > > + return sysfs_emit(buf, "%d.%d.%d.%d\n", version.major, version.minor,
> > > > > > + le16_to_cpu(version.patch), le16_to_cpu(version.build));
> > > > > > +}
> > > > >
> > > > > You have sysfs files, yet no Documentation/ABI/ entries? That's not
> > > > > allowed, you know this :(
> > > > The Documentation/ABI/ entries is added for the sysfs on patch 5 of this series.
> > > > https://patchwork.kernel.org/project/linux-usb/patch/20230309071100.2856899-6-xiang.ye@xxxxxxxxx/
> > >
> > > Ah, missed that, sorry.
> > >
> > > > >
> > > > > > +static ssize_t cmd_store(struct device *dev, struct device_attribute *attr, const char *buf,
> > > > > > + size_t count)
> > > > > > +{
> > > > > > + struct usb_interface *intf = to_usb_interface(dev);
> > > > > > + struct ljca_dev *ljca_dev = usb_get_intfdata(intf);
> > > > > > + struct ljca_stub *mng_stub = ljca_stub_find(ljca_dev, LJCA_MNG_STUB);
> > > > > > + struct ljca_stub *diag_stub = ljca_stub_find(ljca_dev, LJCA_DIAG_STUB);
> > > > > > +
> > > > > > + if (sysfs_streq(buf, "dfu"))
> > > > > > + ljca_mng_set_dfu_mode(mng_stub);
> > > > > > + else if (sysfs_streq(buf, "debug"))
> > > > > > + ljca_diag_set_trace_level(diag_stub, 3);
> > > > >
> > > > > Sorry, but no, you can't do this in a sysfs file.
> > > > Do you mean that we can't use sysfs to send "debug" command to device?
> > >
> > > That is correct, use the kernel-wide debugging facilities that we have
> > > for this NEVER create your own custom interface just for one tiny
> > > driver, that is not allowed.
> > >
> > > > Could you provide some detail or hints?
> > >
> > > dev_dbg().
> But, this command is sent to SET LJCA Firmware logging level.
What command?
This isn't documented at all, sorry, I don't understand what you are
trying to do here.
> > I'm not sure this is the same thing, though, as it's not a drvier
> > to user debug message.
> >
> > Ye, can you please explain better what this command does? You are
> > sending a LJCA_DIAG_SET_TRACE_LEVEL command to the device with a
> > parameter "3" which has a meaining only for you :)
> Sure, the LJCA_DIAG_SET_TRACE_LEVEL command is used to set LJCA FW
> logging level. 3 means debug level for FW. It is used for LJCA FW
> debugging: when FW got some issue, we can send debug level to FW
> to make FW print degging log for analysis.
And where is that printed? In the kernel log? Somewhere else? What
does the firmware have to do with any of this?
thanks,
greg k-h