Re: [PATCH] i2c: pasemi: Add IRQ support for Apple Silicon

From: Martin Povišer <hidden>
Date: 2022-08-20 20:17:38
Also in: linux-i2c, lkml

On 20. 8. 2022, at 21:45, Arminder Singh [off-list ref] wrote:

This is the first time I'm interacting with the Linux mailing lists, so
please don't eviscerate me *too much* if I get the formatting wrong.
Of course I'm always willing to take criticism and improve my formatting
in the future.

This patch adds support for IRQs to the PASemi I2C controller driver.
This will allow for faster performing I2C transactions on Apple Silicon
hardware, as previously, the driver was forced to poll the SMSTA register
for a set amount of time.

With this patchset the driver on Apple silicon hardware will instead wait
for an interrupt which will signal the completion of the I2C transaction.
The timeout value for this completion will be the same as the current
amount of time the I2C driver polls for.

This will result in some performance improvement since the driver will be
waiting for less time than it does right now on Apple Silicon hardware.

The patch right now will only enable IRQs for Apple Silicon I2C chips,
and only if it's able to successfully request the IRQ from the kernel.

=== Testing ===

This patch has been tested on both the mainline Linux kernel tree and
the Asahi branch (https://github.com/AsahiLinux/linux.git) on both an
M1 and M2 MacBook Air, and it compiles successfully as both a module and
built-in to the kernel itself. The patch in both trees successfully boots
to userspace without any hitch.

I do not have PASemi hardware on hand unfortunately, so I'm unable to test
the impact of this patch on old PASemi hardware. This is also why I've
elected to do the IRQ request and enablement on the Apple platform driver
and not in the common file, as I'm not sure if PASemi hardware supports
IRQs.

I also fixed a quick checkpatch warning on line 303. "i ++" is now "i++".

Any and all critiques of the patch would be well appreciated.




Signed-off-by: Arminder Singh <redacted>
Thanks for the patch!

Tested-by: Martin Povišer <povik+lin@cutebit.org>

on Mac mini (2020) with M1, with in-kernel WIP sound drivers.

Some timing comparison on boot logs follows, three runs with
and without the patch.

With:

[    0.631034] ALSA device list:
[    0.631403]   #0: Mac mini J274 integrated audio

[    0.625559] ALSA device list:
[    0.625997]   #0: Mac mini J274 integrated audio

[    0.624561] ALSA device list:
[    0.624913]   #0: Mac mini J274 integrated audio

Without:

[    0.681599] ALSA device list:
[    0.682051]   #0: Mac mini J274 integrated audio

[    0.677538] ALSA device list:
[    0.677968]   #0: Mac mini J274 integrated audio

[    0.686037] ALSA device list:
[    0.686400]   #0: Mac mini J274 integrated audio

(After I collected these I realised I don’t know to what exactly
the timing of the print is anchored, but anyway it still suggests
there is speed-up.)

Best,
Martin

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help