lkml.org 
[lkml]   [2020]   [Nov]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH 00/18] Add functionality to ipu3-cio2 driver allowing software_node connections to sensors on platforms designed for Windows
    Date
    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

    \
     
     \ /
      Last update: 2020-11-30 14:33    [W:4.134 / U:0.432 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site