Skip to content
Snippets Groups Projects
Commit 0d2d5788 authored by GitBot's avatar GitBot
Browse files

Integrate linux-imx-kuk/i2c_imx_isr_read_fsl

--

Commit: seco-ne/kernel/linux-imx-kuk@a6646c02

arm:dts:imx6qdl-san: Enable i2c msg read within ISR for bus 3

Some connected touches lead to a large traffic on the bus.
If this traffic is handled too slowly, some ugly effects show up,
such as input delays or a high CPU load due to the touch driver.
Set the enable-isr-read flag to speed up the message read process.

Cherry-picked from 52d249fcd8ff14c01bce0b4049613b11c779426e
https://git.seco.com/seco-ne/kernel/linux-guf

BCS 746-001477 746-001000

--

Commit: seco-ne/kernel/linux-imx-kuk@8ab02e4d

drivers:i2c-imx: Add option for i2c read processing within ISR

By default the read msg process is handled by the follwing queue
mechanism:
1. Client driver read request
2. The i2c driver triggers a read and waits for a byte to be ready to read
3. ISR sends a wake_up call to the queue when the byte is ready to read
5. The i2c driver becomes scheduled again and reads the byte
6. The i2c driver waits for the next byte and so on

For some reason, it often takes a long time to reschedule the i2c
driver after the ISR reports ready status. This causes problems with
i2c devices that cause a lot of bus traffic, such as touch devices.
To resolve this, the devicetree flag "enable-i2c-isr" enables the
following read routine:
1. Client driver read request
2. The i2c driver triggers a read and waits for the ISR
3. The ISR reads the bytes itself and wakes up the queue when
   all bytes are processed

This way the wake_up calls are reduced by the number of bytes in a message
and processing becomes much faster. However the ISR does more, but adding
something that controls the scheduling of the i2c driver also seems to be
very complicated.

Cherry-picked from 850be496c49aeca59bf9caa295a939d39fb4dbec
https://git.seco.com/seco-ne/kernel/linux-guf

BCS 746-001477 746-001000
parent 7c4c771f
No related branches found
No related tags found
1 merge request!1422Integrate linux-imx-kuk/i2c_imx_isr_read_fsl
Pipeline #81256 passed with stages
in 1 minute and 37 seconds
...@@ -8,7 +8,7 @@ SRCREV:pn-gfxml2dto = "cc0e343dced4f3c3c7619245b5671c38ab2e53b6" ...@@ -8,7 +8,7 @@ SRCREV:pn-gfxml2dto = "cc0e343dced4f3c3c7619245b5671c38ab2e53b6"
SRCREV:pn-ilitek = "22054aa6bb7f58e56713df3b3d921ab272da082e" SRCREV:pn-ilitek = "22054aa6bb7f58e56713df3b3d921ab272da082e"
SRCREV:pn-kernel-module-touchgpio = "a7fe1b2b6945545363ada5a0bcf591dad6afb9da" SRCREV:pn-kernel-module-touchgpio = "a7fe1b2b6945545363ada5a0bcf591dad6afb9da"
SRCREV:pn-libmdb = "df6dc596f444613240e3d58fa770cee8d09d5dcd" SRCREV:pn-libmdb = "df6dc596f444613240e3d58fa770cee8d09d5dcd"
SRCREV:pn-linux-imx = "f203ccebf4d0a14f384bf60d3badb577ac79745f" SRCREV:pn-linux-imx = "a6646c02c0bc7d43e6de12d59a37b296a77094db"
SRCREV:pn-linux-imx-kuk = "0258f07c61364958e3307da11a388e72baffb03a" SRCREV:pn-linux-imx-kuk = "0258f07c61364958e3307da11a388e72baffb03a"
SRCREV:pn-linux-seconorth = "1ec2a30d1cb37642c5dbacf4024f56f05261ff12" SRCREV:pn-linux-seconorth = "1ec2a30d1cb37642c5dbacf4024f56f05261ff12"
SRCREV:pn-qt-multi-screen-compositor = "8a3fc0fffaacccccc2b651a9becfe5037b67adbc" SRCREV:pn-qt-multi-screen-compositor = "8a3fc0fffaacccccc2b651a9becfe5037b67adbc"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment