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

From: Daniel Scally
Date: Mon Oct 19 2020 - 18:59:27 EST


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%)

--
2.17.1