Re: [PATCH v2 2/3] usb: typec: ucsi: Update connector cap and status

From: Greg Kroah-Hartman
Date: Fri Jan 26 2024 - 13:30:14 EST


On Fri, Jan 26, 2024 at 10:08:16AM -0800, Abhishek Pandit-Subedi wrote:
> On Thu, Jan 25, 2024 at 5:50 PM Greg Kroah-Hartman
> <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
> >
> > On Thu, Jan 25, 2024 at 04:21:47PM -0800, Abhishek Pandit-Subedi wrote:
> > > On Thu, Jan 25, 2024 at 3:03 PM Greg Kroah-Hartman
> > > <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
> > > >
> > > > On Wed, Jan 24, 2024 at 04:44:53PM -0800, Abhishek Pandit-Subedi wrote:
> > > > > diff --git a/drivers/usb/typec/ucsi/ucsi.h b/drivers/usb/typec/ucsi/ucsi.h
> > > > > index bec920fa6b8a..94b373378f63 100644
> > > > > --- a/drivers/usb/typec/ucsi/ucsi.h
> > > > > +++ b/drivers/usb/typec/ucsi/ucsi.h
> > > > > @@ -3,6 +3,7 @@
> > > > > #ifndef __DRIVER_USB_TYPEC_UCSI_H
> > > > > #define __DRIVER_USB_TYPEC_UCSI_H
> > > > >
> > > > > +#include <asm-generic/unaligned.h>
> > > >
> > > > Do you really need to include a asm/ include file? This feels very
> > > > wrong.
> > >
> > > I didn't see any header in include/linux that already had these
> > > unaligned access functions so I opted to include
> > > asm-generic/unaligned.h. Is there a reason not to use an asm/ include
> > > file?
> >
> > Yes, you should never need to include a asm/ file, unless you are
> > arch-specific code.
> >
> > But the big issue is that you don't really need this, right?
>
> The UCSI struct definitions have lots of unaligned bit ranges (and I
> will be refactoring <linux/bitfield.h> to support this but that's
> coming later). As an example, the GET_CONNECTOR_STATUS data structure
> has unaligned fields from bit 88-145.
> Rather than define my own macro, it was suggested I use the
> get_unaligned_le32 functions (see
> https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/5195032/3..4/drivers/usb/typec/ucsi/ucsi.h#b183).
>
> I did a quick ripgrep on the drivers folder -- it looks like the "You
> should never need to include a asm/ file unless you are arch specific"
> isn't being followed for this file:
> $ (cd drivers && rg -g '*.h' "unaligned\.h" -l) | wc -l
> 22
>
> The unaligned access functions (get_unaligned_le16,
> get_unaligned_le32, etc) are really useful and widely used. Maybe they
> SHOULD be exposed from a <linux/unaligned.h> since they are so useful?
> I can send a follow-on patch that creates <linux/unaligned.h> (that
> simply just includes <asm/unaligned.h>) and moves all includes of
> <asm/unaligned.h> outside of "arch" to the linux header instead (this
> will also create a checkpatch warning now as you are expecting).

This is being worked on, see:
https://lore.kernel.org/r/20231212024920.GG1674809@ZenIV

thanks,

greg k-h