Re: [PATCH v2 00/11] Add Apple M1 support to PASemi i2c driver

From: Wolfram Sang
Date: Mon Oct 11 2021 - 06:05:04 EST


On Fri, Oct 08, 2021 at 06:35:21PM +0200, Sven Peter wrote:
> Hi,
>
> v1: https://lore.kernel.org/linux-i2c/20210926095847.38261-1-sven@xxxxxxxxxxxxx/
>
> Changes for v2:
> - Added reviewed-by/acks
> - Switched from ioport_map to pci_iomap as suggested by Arnd Bergmann
> - Renamed i2c-pasemi-apple.c to i2c-pasemi-platform.c as suggested by
> Wolfram Sang
> - Replaced the ioport number in the adapter name with dev_name to be
> able to identify separate busses in e.g. i2cdetect.
>
> I still don't have access to any old PASemi hardware but the changes from
> v1 are pretty small and I expect them to still work. Would still be nice
> if someone with access to such hardware could give this a quick test.
>
>
> And for those who didn't see v1 the (almost) unchanged original cover letter:
>
> This series adds support for the I2C controller found on Apple Silicon Macs
> which has quite a bit of history:
>
> Apple bought P.A. Semi in 2008 and it looks like a part of its legacy continues
> to live on in the M1. This controller has actually been used since at least the
> iPhone 4S and hasn't changed much since then.
> Essentially, there are only a few differences that matter:
>
> - The controller no longer is a PCI device
> - Starting at some iPhone an additional bit in one register
> must be set in order to start transmissions.
> - The reference clock and hence the clock dividers are different
>
> In order to add support for a platform device I first replaced PCI-specific
> bits and split out the PCI driver to its own file. Then I added support
> to make the clock divider configurable and converted the driver to use
> managed device resources to make it a bit simpler.
>
> The Apple and PASemi driver will never be compiled in the same kernel
> since the Apple one will run on arm64 while the original PASemi driver
> will only be useful on powerpc.
> I've thus followed the octeon (mips)/thunderx(arm64) approach to do the
> split: I created a -core.c file which contains the shared logic and just
> compile that one for both the PASemi and the new Apple driver.
>
>
> Best,
>
> Sven
>
> Sven Peter (11):
> dt-bindings: i2c: Add Apple I2C controller bindings
> i2c: pasemi: Use io{read,write}32
> i2c: pasemi: Use dev_name instead of port number
> i2c: pasemi: Remove usage of pci_dev
> i2c: pasemi: Split off common probing code
> i2c: pasemi: Split pci driver to its own file
> i2c: pasemi: Move common reset code to own function
> i2c: pasemi: Allow to configure bus frequency
> i2c: pasemi: Refactor _probe to use devm_*
> i2c: pasemi: Add Apple platform driver
> i2c: pasemi: Set enable bit for Apple variant
>
> .../devicetree/bindings/i2c/apple,i2c.yaml | 61 +++++++++
> MAINTAINERS | 2 +
> drivers/i2c/busses/Kconfig | 11 ++
> drivers/i2c/busses/Makefile | 3 +

Applied to for-next with MAINTAINER bits dropped and added tags from
Olof and Christian, thanks!

Attachment: signature.asc
Description: PGP signature