Message ID | 20220128144811.783279-1-jsd@semihalf.com |
---|---|
Headers | show |
Series | i2c-designware: Add support for AMD PSP semaphore | expand |
Hi, Adding proper Andy's email address (and removing wrong one) in the whole patchset. Sorry for noise! Best Regards, Jan pt., 28 sty 2022 o 15:48 Jan Dabros <jsd@semihalf.com> napisał(a): > > This patchset comprises support for new i2c-designware controller setup on some > AMD Cezanne SoCs, where x86 is sharing i2c bus with PSP. PSP uses the same > controller and acts as an i2c arbitrator there (x86 is leasing bus from it). > > First commit aims to improve generic i2c-designware code by adding extra locking > on probe() and disable() paths. I would like to ask someone with access to > boards which use Intel BayTrail(CONFIG_I2C_DESIGNWARE_BAYTRAIL) to verify > behavior of my changes on such setup. > > Second commit adds support for new PSP semaphore arbitration mechanism. > Implementation is similar to the one from i2c-designware-baytrail.c however > there are two main differences: > 1) Add new ACPI ID in order to protect against silent binding of the old driver > to the setup with PSP semaphore. Extra flag ARBITRATION_SEMAPHORE added to this > new _HID allows to recognize setup with PSP. > 2) Beside acquire_lock() and release_lock() methods we are also applying quirks > to the lock_bus() and unlock_bus() global adapter methods. With this in place > all i2c clients drivers may lock i2c bus for a desired number of i2c > transactions (e.g. write-wait-read) without being aware of that such bus is > shared with another entity. > > This patchset is a follow-up to the RFC sent earlier on LKML [1], with review > comments applied. > > Looking forward to some feedback. > > [1] https://lkml.org/lkml/2021/12/22/219 > > v1 -> v2: > * Remove usage of unions > * Get rid of unnecessary __packed attributes > * Switch to use iopoll.h and bitfields.h APIs were applicable > * Follow the convention to check for the error first > * Reorder entries (includes, table entries) alphabetically > * Add necessary includes > * Add Kconfig dependency on X86_64 > (above two fixes for "kernel test robot <lkp@intel.com>" issues) > * Modify probe() to use terminating entry for traversing through table > instead of ARRAY_SIZE > * Fix typos in comments > * Rebase patchset > > Jan Dabros (2): > i2c: designware: Add missing locks > i2c: designware: Add AMD PSP I2C bus support > > MAINTAINERS | 1 + > drivers/acpi/acpi_apd.c | 7 +- > drivers/i2c/busses/Kconfig | 11 + > drivers/i2c/busses/Makefile | 1 + > drivers/i2c/busses/i2c-designware-amdpsp.c | 373 +++++++++++++++++++ > drivers/i2c/busses/i2c-designware-baytrail.c | 10 +- > drivers/i2c/busses/i2c-designware-common.c | 12 + > drivers/i2c/busses/i2c-designware-core.h | 18 +- > drivers/i2c/busses/i2c-designware-master.c | 6 + > drivers/i2c/busses/i2c-designware-platdrv.c | 61 +++ > 10 files changed, 489 insertions(+), 11 deletions(-) > create mode 100644 drivers/i2c/busses/i2c-designware-amdpsp.c > > -- > 2.35.0.rc0.227.g00780c9af4-goog >