mbox series

[RFC,v3,0/9] Add functionality to ipu3-cio2 driver allowing software_node connections to sensors on platforms designed for Windows

Message ID 20201019225903.14276-1-djrscally@gmail.com (mailing list archive)
Headers show
Series Add functionality to ipu3-cio2 driver allowing software_node connections to sensors on platforms designed for Windows | expand

Message

Daniel Scally Oct. 19, 2020, 10:58 p.m. UTC
Hello all

This series adds support to the ipu3-cio2 driver for fwnode connections
between cio2 and sensors to be defined via software_nodes. The final patch
in the series deals wholly with those changes - the preceding patches are
either supporting changes to accommodate that or incidental fixes along
the way:

1/9 adds a function to drivers/base/swnode.c unwinding arrays of software
nodes in reverse order

2/9 uses that function in lib/test_printf.c

3/9 fixes what seems to me to be a bug in the existing swnode.c code in
that software_node_get_next_child() does not increase the refcount of the
returned node (in contrast to, for example, of_get_next_child_node() which
does increase the count)

4/9 adds the fwnode_graph*() family of functions to the software_node
implementation

5/9 adds a T: entry to MAINTAINERS for the ipu3-cio2 driver

6/9 renames the ipu3-cio2.c file to ipu3-cio2-main.c and fixes Makefile
to accommodate that change

7/9 alters the ipu3-cio2 driver to check if the pci_dev's fwnode is a
software_node and pass flags to fwnode_graph_get_endpoint_by_id() if so

8/9 alters match_fwnode() in v4l2-async.c to additionally try to match on
a fwnode_handle's secondary if the primary doesn't match

9/9 alters the ipu3-cio2 driver to do the actual building of software_node
connections between the sensor devices and the cio2 device.

This is still not ready for integration - hence the RFC label - as there
is ongoing work to extend the ipu3-cio2 driver further to parse ACPI
to discover resources such as regulators and GPIOs that are defined there
in unusual ways and map them to the sensor devices so that their drivers
can consume them transparently through the usual frameworks. Given this
has changed quite extensively from v2 though, I wanted to submit it for
feedback at this point in case it needs further large scale change.

Thanks
Dan

Daniel Scally (8):
  software_node: Add helper function to unregister arrays of
    software_nodes ordered parent to child
  lib/test_printf.c: Use helper function to unwind array of
    software_nodes
  software_node: Fix failure to hold refcount in
    software_node_get_next_child
  ipu3-cio2: Add T: entry to MAINTAINERS
  ipu3-cio2: Rename ipu3-cio2.c to allow module to be built from
    multiple sources files retaining ipu3-cio2 name
  ipu3-cio2: Check if pci_dev->dev's fwnode is a software_node in
    cio2_parse_firmware() and set FWNODE_GRAPH_DEVICE_DISABLED if so
  media: v4l2-core: v4l2-async: Check possible match in match_fwnode
    based on sd->fwnode->secondary
  ipu3-cio2: Add functionality allowing software_node connections to
    sensors on platforms designed for Windows

Heikki Krogerus (1):
  software_node: Add support for fwnode_graph*() family of functions

 MAINTAINERS                                   |   2 +
 drivers/base/swnode.c                         | 143 +++++++-
 drivers/media/pci/intel/ipu3/Kconfig          |  18 +
 drivers/media/pci/intel/ipu3/Makefile         |   3 +
 drivers/media/pci/intel/ipu3/cio2-bridge.c    | 327 ++++++++++++++++++
 drivers/media/pci/intel/ipu3/cio2-bridge.h    |  94 +++++
 .../ipu3/{ipu3-cio2.c => ipu3-cio2-main.c}    |  30 +-
 drivers/media/pci/intel/ipu3/ipu3-cio2.h      |   9 +
 drivers/media/v4l2-core/v4l2-async.c          |   8 +
 include/linux/property.h                      |   1 +
 lib/test_printf.c                             |   4 +-
 11 files changed, 632 insertions(+), 7 deletions(-)
 create mode 100644 drivers/media/pci/intel/ipu3/cio2-bridge.c
 create mode 100644 drivers/media/pci/intel/ipu3/cio2-bridge.h
 rename drivers/media/pci/intel/ipu3/{ipu3-cio2.c => ipu3-cio2-main.c} (98%)

Comments

Andy Shevchenko Oct. 20, 2020, 9:24 a.m. UTC | #1
On Mon, Oct 19, 2020 at 11:58:54PM +0100, Daniel Scally wrote:
> Hello all
> 
> This series adds support to the ipu3-cio2 driver for fwnode connections
> between cio2 and sensors to be defined via software_nodes. The final patch
> in the series deals wholly with those changes - the preceding patches are
> either supporting changes to accommodate that or incidental fixes along
> the way:
> 
> 1/9 adds a function to drivers/base/swnode.c unwinding arrays of software
> nodes in reverse order
> 
> 2/9 uses that function in lib/test_printf.c
> 
> 3/9 fixes what seems to me to be a bug in the existing swnode.c code in
> that software_node_get_next_child() does not increase the refcount of the
> returned node (in contrast to, for example, of_get_next_child_node() which
> does increase the count)
> 
> 4/9 adds the fwnode_graph*() family of functions to the software_node
> implementation
> 
> 5/9 adds a T: entry to MAINTAINERS for the ipu3-cio2 driver
> 
> 6/9 renames the ipu3-cio2.c file to ipu3-cio2-main.c and fixes Makefile
> to accommodate that change
> 
> 7/9 alters the ipu3-cio2 driver to check if the pci_dev's fwnode is a
> software_node and pass flags to fwnode_graph_get_endpoint_by_id() if so
> 
> 8/9 alters match_fwnode() in v4l2-async.c to additionally try to match on
> a fwnode_handle's secondary if the primary doesn't match
> 
> 9/9 alters the ipu3-cio2 driver to do the actual building of software_node
> connections between the sensor devices and the cio2 device.

Thanks!
I have mostly cosmetic comments.

> This is still not ready for integration - hence the RFC label - as there
> is ongoing work to extend the ipu3-cio2 driver further to parse ACPI
> to discover resources such as regulators and GPIOs that are defined there
> in unusual ways and map them to the sensor devices so that their drivers
> can consume them transparently through the usual frameworks. Given this
> has changed quite extensively from v2 though, I wanted to submit it for
> feedback at this point in case it needs further large scale change.

From my point of view it's a good start to drop RFC from next version
(RFC v3 -> v1). But let's wait couple of weeks for people to comment (now is a
second week of merge window, not everybody looking into the mailing lists).

> Daniel Scally (8):
>   software_node: Add helper function to unregister arrays of
>     software_nodes ordered parent to child
>   lib/test_printf.c: Use helper function to unwind array of
>     software_nodes
>   software_node: Fix failure to hold refcount in
>     software_node_get_next_child
>   ipu3-cio2: Add T: entry to MAINTAINERS
>   ipu3-cio2: Rename ipu3-cio2.c to allow module to be built from
>     multiple sources files retaining ipu3-cio2 name
>   ipu3-cio2: Check if pci_dev->dev's fwnode is a software_node in
>     cio2_parse_firmware() and set FWNODE_GRAPH_DEVICE_DISABLED if so
>   media: v4l2-core: v4l2-async: Check possible match in match_fwnode
>     based on sd->fwnode->secondary
>   ipu3-cio2: Add functionality allowing software_node connections to
>     sensors on platforms designed for Windows
> 
> Heikki Krogerus (1):
>   software_node: Add support for fwnode_graph*() family of functions
> 
>  MAINTAINERS                                   |   2 +
>  drivers/base/swnode.c                         | 143 +++++++-
>  drivers/media/pci/intel/ipu3/Kconfig          |  18 +
>  drivers/media/pci/intel/ipu3/Makefile         |   3 +
>  drivers/media/pci/intel/ipu3/cio2-bridge.c    | 327 ++++++++++++++++++
>  drivers/media/pci/intel/ipu3/cio2-bridge.h    |  94 +++++
>  .../ipu3/{ipu3-cio2.c => ipu3-cio2-main.c}    |  30 +-
>  drivers/media/pci/intel/ipu3/ipu3-cio2.h      |   9 +
>  drivers/media/v4l2-core/v4l2-async.c          |   8 +
>  include/linux/property.h                      |   1 +
>  lib/test_printf.c                             |   4 +-
>  11 files changed, 632 insertions(+), 7 deletions(-)
>  create mode 100644 drivers/media/pci/intel/ipu3/cio2-bridge.c
>  create mode 100644 drivers/media/pci/intel/ipu3/cio2-bridge.h
>  rename drivers/media/pci/intel/ipu3/{ipu3-cio2.c => ipu3-cio2-main.c} (98%)
> 
> -- 
> 2.17.1
>
Rafael J. Wysocki Oct. 20, 2020, 1:38 p.m. UTC | #2
[Fix the Linus Walleij's address.]

On Tue, Oct 20, 2020 at 12:59 AM Daniel Scally <djrscally@gmail.com> wrote:
>
> Hello all
>
> This series adds support to the ipu3-cio2 driver for fwnode connections
> between cio2 and sensors to be defined via software_nodes. The final patch
> in the series deals wholly with those changes - the preceding patches are
> either supporting changes to accommodate that or incidental fixes along
> the way:
>
> 1/9 adds a function to drivers/base/swnode.c unwinding arrays of software
> nodes in reverse order
>
> 2/9 uses that function in lib/test_printf.c
>
> 3/9 fixes what seems to me to be a bug in the existing swnode.c code in
> that software_node_get_next_child() does not increase the refcount of the
> returned node (in contrast to, for example, of_get_next_child_node() which
> does increase the count)
>
> 4/9 adds the fwnode_graph*() family of functions to the software_node
> implementation
>
> 5/9 adds a T: entry to MAINTAINERS for the ipu3-cio2 driver
>
> 6/9 renames the ipu3-cio2.c file to ipu3-cio2-main.c and fixes Makefile
> to accommodate that change
>
> 7/9 alters the ipu3-cio2 driver to check if the pci_dev's fwnode is a
> software_node and pass flags to fwnode_graph_get_endpoint_by_id() if so
>
> 8/9 alters match_fwnode() in v4l2-async.c to additionally try to match on
> a fwnode_handle's secondary if the primary doesn't match
>
> 9/9 alters the ipu3-cio2 driver to do the actual building of software_node
> connections between the sensor devices and the cio2 device.
>
> This is still not ready for integration - hence the RFC label - as there
> is ongoing work to extend the ipu3-cio2 driver further to parse ACPI
> to discover resources such as regulators and GPIOs that are defined there
> in unusual ways and map them to the sensor devices so that their drivers
> can consume them transparently through the usual frameworks. Given this
> has changed quite extensively from v2 though, I wanted to submit it for
> feedback at this point in case it needs further large scale change.

I would appreciate it if you posted the next version of this series
(all patches) to linux-acpi@vger.kernel.org for easier review.

Thanks!
Daniel Scally Oct. 21, 2020, 8:59 p.m. UTC | #3
On 20/10/2020 14:38, Rafael J. Wysocki wrote:
> [Fix the Linus Walleij's address.]
Thanks - much appreciated
> On Tue, Oct 20, 2020 at 12:59 AM Daniel Scally <djrscally@gmail.com> wrote:
>> Hello all
>>
>> This series adds support to the ipu3-cio2 driver for fwnode connections
>> between cio2 and sensors to be defined via software_nodes. The final patch
>> in the series deals wholly with those changes - the preceding patches are
>> either supporting changes to accommodate that or incidental fixes along
>> the way:
>>
>> 1/9 adds a function to drivers/base/swnode.c unwinding arrays of software
>> nodes in reverse order
>>
>> 2/9 uses that function in lib/test_printf.c
>>
>> 3/9 fixes what seems to me to be a bug in the existing swnode.c code in
>> that software_node_get_next_child() does not increase the refcount of the
>> returned node (in contrast to, for example, of_get_next_child_node() which
>> does increase the count)
>>
>> 4/9 adds the fwnode_graph*() family of functions to the software_node
>> implementation
>>
>> 5/9 adds a T: entry to MAINTAINERS for the ipu3-cio2 driver
>>
>> 6/9 renames the ipu3-cio2.c file to ipu3-cio2-main.c and fixes Makefile
>> to accommodate that change
>>
>> 7/9 alters the ipu3-cio2 driver to check if the pci_dev's fwnode is a
>> software_node and pass flags to fwnode_graph_get_endpoint_by_id() if so
>>
>> 8/9 alters match_fwnode() in v4l2-async.c to additionally try to match on
>> a fwnode_handle's secondary if the primary doesn't match
>>
>> 9/9 alters the ipu3-cio2 driver to do the actual building of software_node
>> connections between the sensor devices and the cio2 device.
>>
>> This is still not ready for integration - hence the RFC label - as there
>> is ongoing work to extend the ipu3-cio2 driver further to parse ACPI
>> to discover resources such as regulators and GPIOs that are defined there
>> in unusual ways and map them to the sensor devices so that their drivers
>> can consume them transparently through the usual frameworks. Given this
>> has changed quite extensively from v2 though, I wanted to submit it for
>> feedback at this point in case it needs further large scale change.
> I would appreciate it if you posted the next version of this series
> (all patches) to linux-acpi@vger.kernel.org for easier review.
>
> Thanks!
Sure thing, I'll make sure to add that list to next version