[PATCH 07/18] media: staging: atomisp: fix endianess issues
Mauro Carvalho Chehab
mchehab at s-opensource.com
Wed Mar 28 09:25:45 UTC 2018
Em Tue, 27 Mar 2018 14:02:55 +0300
Andy Shevchenko <andriy.shevchenko at linux.intel.com> escreveu:
> On Mon, 2018-03-26 at 17:10 -0400, Mauro Carvalho Chehab wrote:
> > There are lots of be-related warnings there, as it doesn't properly
> > mark what data uses bigendian.
>
> > @@ -107,7 +107,7 @@ mt9m114_write_reg(struct i2c_client *client, u16
> > data_length, u16 reg, u32 val)
> > int num_msg;
> > struct i2c_msg msg;
> > unsigned char data[6] = {0};
> > - u16 *wreg;
> > + __be16 *wreg;
> >
>
> > + u16 *wdata = (void *)&data[2];
> > +
> > + *wdata = be16_to_cpu(*(__be16 *)&data[2]);
>
> > + u32 *wdata = (void *)&data[2];
> > +
> > + *wdata = be32_to_cpu(*(__be32 *)&data[2]);
>
> For x86 it is okay, though in general it should use get_unaligned().
>
Yeah, it makes sense to change those to use
get_unaligned_be16()/get_unaligned_be32(), but still the endianness
issue remains, as it will still require the usage of __be casts.
The main goal here in this patch series is to get rid of hundreds
of smatch/sparce warnings, as it makes very hard to identify new
warnings, due to all polution inside atomisp.
A change to get_unaligned_foo() is meant to do a different
thing: to make those i2c drivers more arch-independent.
So, feel free to submit a separate patch doing that, on the
top of it.
Thanks,
Mauro
More information about the devel
mailing list