[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20201130133129.1024662-1-djrscally@gmail.com>
Date: Mon, 30 Nov 2020 13:31:11 +0000
From: Daniel Scally <djrscally@...il.com>
To: linux-kernel@...r.kernel.org, linux-acpi@...r.kernel.org,
linux-gpio@...r.kernel.org, linux-i2c@...r.kernel.org,
linux-media@...r.kernel.org, devel@...ica.org
Cc: rjw@...ysocki.net, lenb@...nel.org, gregkh@...uxfoundation.org,
mika.westerberg@...ux.intel.com, andriy.shevchenko@...ux.intel.com,
linus.walleij@...aro.org, bgolaszewski@...libre.com,
wsa@...nel.org, yong.zhi@...el.com, sakari.ailus@...ux.intel.com,
bingbu.cao@...el.com, tian.shu.qiu@...el.com, mchehab@...nel.org,
robert.moore@...el.com, erik.kaneda@...el.com, pmladek@...e.com,
rostedt@...dmis.org, sergey.senozhatsky@...il.com,
linux@...musvillemoes.dk, kieran.bingham+renesas@...asonboard.com,
jacopo+renesas@...ndi.org,
laurent.pinchart+renesas@...asonboard.com,
jorhand@...ux.microsoft.com, kitakar@...il.com,
heikki.krogerus@...ux.intel.com
Subject: [PATCH 00/18] Add functionality to ipu3-cio2 driver allowing software_node connections to sensors on platforms designed for Windows
Hello all
Previous version:
https://lore.kernel.org/linux-media/20201019225903.14276-1-djrscally@gmail.com/
This series aims to add support for webcams on laptops with ACPI tables
designed for use with CIO2 on Windows. There are two main parts; the
first is extending the ipu3-cio2 driver to allow for patching the
firmware via software_nodes if endpoints aren't defined by ACPI. Patch #13
deals directly with that, all preceding patches are either supplemental
changes or incidental fixes along the way.
The second main part is a way to handle the unusual definition of resource
destined for the sensors in these ACPI tables; regulators and GPIO lines
that are supposed to be consumed by the sensor are lumped in the _CRS of
a dummy ACPI device upon which the sensor is dependent. Patch 18 defines a
new driver to handle those dummy devices and map the resources to the
sensor instead. 14-17 are supporting changes for that driver.
Changelogs mostly in the individual patches, but a broad summary:
- Altered fwnode_device_is_available() to return true if the
fwnode_handle doesn't implement that operation.
- Altered fwnode_graph_get_endpoint_by_id() to parse secondary
if no endpoint found on primary.
- Enforce parent->child ordering of software_nodes on registration
- Added a function to get the next ACPI device with matching _HID,
plus an iterator macro
- Altered cio2-bridge.c to store the bridge struct (and basically
everything else) in heap, plus removed the requirement to delay
ipu3-cio2 probe until after the i2c devices were instantiated.
Also now ensured we handle multiple sensors with the same _HID.
- Added a function to get devices _dependent_ on a given ACPI dev,
according to their _DEP entries.
- Added a function to explicitly construct the name of an I2C dev
created from an ACPI dev.
- Added a driver to handle the dummy ACPI devices discussed above.
Comments very welcome!
Dan Scally (1):
i2c: i2c-core-base: Use the new i2c_acpi_dev_name() in
i2c_set_dev_name()
Daniel Scally (16):
property: Return true in fwnode_device_is_available for node types
that do not implement this operation
property: Add support for calling fwnode_graph_get_endpoint_by_id()
for fwnode->secondary
software_node: Fix failure to put() and get() references to children
in software_node_get_next_child()
software_node: Enforce parent before child ordering of nodes array for
software_node_register_nodes()
software_node: Alter software_node_unregister_nodes() to unregister
the array in reverse order
software_node: amend software_node_unregister_node_group() to perform
unregistration of array in reverse order to be consistent with
software_node_unregister_nodes()
lib/test_printf.c: Use helper function to unwind array of
software_nodes
ipu3-cio2: Add T: entry to MAINTAINERS
ipu3-cio2: Rename ipu3-cio2.c to allow module to be built from
multiple source files retaining ipu3-cio2 name
media: v4l2-core: v4l2-async: Check possible match in match_fwnode
based on sd->fwnode->secondary
acpi: Add acpi_dev_get_next_match_dev() and macro to iterate through
acpi_devices matching a given _HID
ipu3-cio2: Add functionality allowing software_node connections to
sensors on platforms designed for Windows
acpi: utils: Add function to fetch dependent acpi_devices
i2c: i2c-core-acpi: Add i2c_acpi_dev_name()
gpio: gpiolib-acpi: Export acpi_get_gpiod()
ipu3: Add driver for dummy INT3472 ACPI device
Heikki Krogerus (1):
software_node: Add support for fwnode_graph*() family of functions
MAINTAINERS | 9 +
drivers/acpi/utils.c | 98 ++++-
drivers/base/property.c | 9 +
drivers/base/swnode.c | 157 +++++++-
drivers/gpio/gpiolib-acpi.c | 3 +-
drivers/i2c/i2c-core-acpi.c | 14 +
drivers/i2c/i2c-core-base.c | 2 +-
drivers/media/pci/intel/ipu3/Kconfig | 32 ++
drivers/media/pci/intel/ipu3/Makefile | 4 +
drivers/media/pci/intel/ipu3/cio2-bridge.c | 260 ++++++++++++
drivers/media/pci/intel/ipu3/cio2-bridge.h | 108 +++++
drivers/media/pci/intel/ipu3/int3472.c | 381 ++++++++++++++++++
drivers/media/pci/intel/ipu3/int3472.h | 96 +++++
.../ipu3/{ipu3-cio2.c => ipu3-cio2-main.c} | 27 ++
drivers/media/pci/intel/ipu3/ipu3-cio2.h | 6 +
drivers/media/v4l2-core/v4l2-async.c | 8 +
include/acpi/acpi_bus.h | 9 +
include/linux/acpi.h | 5 +
include/linux/i2c.h | 5 +
lib/test_printf.c | 4 +-
20 files changed, 1213 insertions(+), 24 deletions(-)
create mode 100644 drivers/media/pci/intel/ipu3/cio2-bridge.c
create mode 100644 drivers/media/pci/intel/ipu3/cio2-bridge.h
create mode 100644 drivers/media/pci/intel/ipu3/int3472.c
create mode 100644 drivers/media/pci/intel/ipu3/int3472.h
rename drivers/media/pci/intel/ipu3/{ipu3-cio2.c => ipu3-cio2-main.c} (98%)
--
2.25.1
Powered by blists - more mailing lists