mbox series

[v2,0/3] Support ROHM BU27010 RGBC sensor

Message ID cover.1688723839.git.mazziesaccount@gmail.com (mailing list archive)
Headers show
Series Support ROHM BU27010 RGBC sensor | expand

Message

Matti Vaittinen July 7, 2023, 11:22 a.m. UTC
Support ROHM BU27010 RGBC + flickering sensor.

Following description copied from commit log:

> The ROHM BU27010 is an RGBC sensor with a flickering detection FIFO. The
> RGBC+IR sensor functionality is largely similar to what the BU27008 has.
> There are some notable things though:
>  - gain setting is once again new and exotic. Now, there is 6bit gain
>    setting where 4 of the bits are common to all channels and 2 bits
>    can be configured separately for each channel. The BU27010 has
>    similar "1X on other channels vs 2X on IR when selector is 0x0"
>    gain design as BU27008 had. So, we use same gain setting policy for
>    BU27010 as we did for BU27008 - driver sets same gain selector for
>    all channels but shows the gains separately for all channels so users
>    can (at least in theory) detect this 1X vs 2X madness...
>  - BU27010 has suffled all the control register bitfields to new
>    addresses and bit positions while still keeping the register naming
>    same.
>  - Some more power/reset control is added.
>  - FIFO for "flickering detection" is added.
>
> The control register suffling made this slightly nasty. Still, it is
> easier for maintenance perspective to add the BU27010 support in BU27008
> driver because - even though the bit positions/addresses were changed -
> most of the driver structure can be re-used. Writing own driver for
> BU27010 would mean plenty of duplicate code albeit a tad more clarity.

This series is done on top of the iio-for-6.5a + this fix-up series:
https://lore.kernel.org/all/cover.1686648422.git.mazziesaccount@gmail.com/

I didn't spot these fixups from iio git although I think I saw mail
stating they were applied.

Revision history:

v1 => v2:
 - make vdd-supply required binding.
 - Some re-ordering for struct member init.
 - Some re-ordering for code to get rid of function declarations.
 - Tidy up the mess from patch 2/3.
   - Refactor parts from 3/3 to 2/3.
   - Clean-up commented out code and tidy things in general.

Please note: I'll be mostly away from the computer during July. Please,
take your time reviewing and forgive me if sending follow-up revisions
is delayed.

---

Matti Vaittinen (3):
  dt-bindings: iio: ROHM BU27010 RGBC + flickering sensor
  iio: light: bu27008: add chip info
  iio: light: bd27008: Support BD27010 RGB

 .../bindings/iio/light/rohm,bu27010.yaml      |  49 ++
 drivers/iio/light/rohm-bu27008.c              | 622 ++++++++++++++----
 2 files changed, 556 insertions(+), 115 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/iio/light/rohm,bu27010.yaml

Comments

Jonathan Cameron July 8, 2023, 4:06 p.m. UTC | #1
On Fri, 7 Jul 2023 14:22:14 +0300
Matti Vaittinen <mazziesaccount@gmail.com> wrote:

> Support ROHM BU27010 RGBC + flickering sensor.
> 
> Following description copied from commit log:
> 
> > The ROHM BU27010 is an RGBC sensor with a flickering detection FIFO. The
> > RGBC+IR sensor functionality is largely similar to what the BU27008 has.
> > There are some notable things though:
> >  - gain setting is once again new and exotic. Now, there is 6bit gain
> >    setting where 4 of the bits are common to all channels and 2 bits
> >    can be configured separately for each channel. The BU27010 has
> >    similar "1X on other channels vs 2X on IR when selector is 0x0"
> >    gain design as BU27008 had. So, we use same gain setting policy for
> >    BU27010 as we did for BU27008 - driver sets same gain selector for
> >    all channels but shows the gains separately for all channels so users
> >    can (at least in theory) detect this 1X vs 2X madness...
> >  - BU27010 has suffled all the control register bitfields to new
> >    addresses and bit positions while still keeping the register naming
> >    same.
> >  - Some more power/reset control is added.
> >  - FIFO for "flickering detection" is added.
> >
> > The control register suffling made this slightly nasty. Still, it is
> > easier for maintenance perspective to add the BU27010 support in BU27008
> > driver because - even though the bit positions/addresses were changed -
> > most of the driver structure can be re-used. Writing own driver for
> > BU27010 would mean plenty of duplicate code albeit a tad more clarity.  
> 
> This series is done on top of the iio-for-6.5a + this fix-up series:
> https://lore.kernel.org/all/cover.1686648422.git.mazziesaccount@gmail.com/
> 
> I didn't spot these fixups from iio git although I think I saw mail
> stating they were applied.

They are now on the fixes-togreg branch of iio.  Things are sometimes
fiddly around the merge window. That tree may well be rebased again after
rc1 is available.

This series is going to have to wait to be applied until those fixes
are in my upstream for the togreg branch.

Thanks,

Jonathan

> 
> Revision history:
> 
> v1 => v2:
>  - make vdd-supply required binding.
>  - Some re-ordering for struct member init.
>  - Some re-ordering for code to get rid of function declarations.
>  - Tidy up the mess from patch 2/3.
>    - Refactor parts from 3/3 to 2/3.
>    - Clean-up commented out code and tidy things in general.
> 
> Please note: I'll be mostly away from the computer during July. Please,
> take your time reviewing and forgive me if sending follow-up revisions
> is delayed.
> 
> ---
> 
> Matti Vaittinen (3):
>   dt-bindings: iio: ROHM BU27010 RGBC + flickering sensor
>   iio: light: bu27008: add chip info
>   iio: light: bd27008: Support BD27010 RGB
> 
>  .../bindings/iio/light/rohm,bu27010.yaml      |  49 ++
>  drivers/iio/light/rohm-bu27008.c              | 622 ++++++++++++++----
>  2 files changed, 556 insertions(+), 115 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/iio/light/rohm,bu27010.yaml
>