Home | History | Annotate | Download | only in i2c
History log of /src/sys/dev/i2c/i2cmux.c
RevisionDateAuthorComments
 1.13  21-Sep-2025  thorpej Use ic_channel in the i2c_tag_t.
 1.12  16-Sep-2025  thorpej Now that the common I2C code hides many of the FDT vs ACPI differences,
perform the reductions currently possible in the I2C mux layer. Note
some additional enhancements necessary for further reductions.
 1.11  16-Sep-2025  thorpej As with ACPI, perform the fdtbus_register_i2c_controller() in a centralized
location.
 1.10  16-Sep-2025  thorpej Garbage-collect fdtbus_attach_i2cbus(); the regular iicbus_attach() is
sufficient now.
 1.9  15-Sep-2025  thorpej No longer need to include acpi_i2c.h here.
 1.8  15-Sep-2025  thorpej Do the ACPI-specific get-child-devices dance in iic_attach(). This
obviously isn't ideal, but it funnels the issue into a central location
and provides for easier improvement later.
 1.7  10-Nov-2021  msaitoh s/acutal/actual/ in comment.
 1.6  07-Aug-2021  thorpej branches: 1.6.2;
Merge thorpej-cfargs2.
 1.5  24-Apr-2021  thorpej branches: 1.5.2; 1.5.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.4  26-Jan-2021  jmcneill branches: 1.4.2;
Add a device_t parameter to acpi_enter_i2c_devs. If non-NULL, all child
acpi_devnodes will be claimed by that device so we don't later try to
attach a duplicate device to that node at acpinodebus.
 1.3  25-Jan-2021  jmcneill Add support for ACPI-based I2C mux attachment.
 1.2  24-Jan-2021  jmcneill trailing whitespace
 1.1  28-Dec-2020  thorpej branches: 1.1.2;
Re-factor the "iicmux" driver to support other types of muxes that are
themselves i2c devices.
 1.1.2.3  03-Apr-2021  thorpej Sync with HEAD.
 1.1.2.2  03-Jan-2021  thorpej Sync w/ HEAD.
 1.1.2.1  28-Dec-2020  thorpej file i2cmux.c was added on branch thorpej-futex on 2021-01-03 16:34:58 +0000
 1.4.2.1  23-Mar-2021  thorpej Convert config_found_ia() call sites where the device only carries
a single interface attribute to bare config_found() calls.
 1.5.8.1  04-Aug-2021  thorpej Adapt to CFARGS().
 1.5.2.4  14-May-2021  thorpej Move the bus/channel number for multi-channel / mux controllers out of
i2cbus_attach_args and stash it in the i2c_tag_t instead. This makes it
accessible to platform device tree code when enumerating devices.
 1.5.2.3  08-May-2021  thorpej Use device_enumerate_children() to eliminate all of the ACPI-specific
code and most of the FDT-specific code from the iicmux driver.
 1.5.2.2  08-May-2021  thorpej - Add an optional bus number to i2cbus_attach_args, and a corresponding
optional "bus" locator to the i2cbus interface attribute.
- Add a iicbus_print_multi() routine, which is like iicbus_print(),
but also prints the bus number.
- Use these new features in the iicmux driver rather than winging it.
 1.5.2.1  08-May-2021  thorpej Update the i2c mux code for the new enumeration methods.
 1.6.2.2  09-Aug-2021  thorpej Fix typo.
 1.6.2.1  09-Aug-2021  thorpej Port over the changes from thorpej-i2c-spi-conf to thorpej-i2c-spi-conf2,
which is based on a newer HEAD revision.

RSS XML Feed