summaryrefslogtreecommitdiff
path: root/lwis_i2c_bus_manager.c
AgeCommit message (Collapse)Author
2023-07-05LWIS: Add mutex lock to I2C process queueMeghana Barkalle
I2C process queue is protected by a spinlock that is released right before the transactions are processed and then re-acquired again upon processing completion. Original idea was to not block the connect/disconnect for one device on the bus even if other devices are processing. Issue with this approach is that the tmp node of list_for_each_safe saves the stale pointer and causes use-after free issues. Executing the worker with the process queue protected by mutex will guard against deletion of the process request node in another thread. Test: CTS, GCA Smoke Test Bug: 288941705 Change-Id: Ic41f9f799a139ffa3347eb0c714a8193769de19b Signed-off-by: Meghana Barkalle <mbarkalle@google.com>
2023-06-13Remove unnecessary error logs from kmallocEdmond Chung
Bug: 286438999 Test: Build Change-Id: I02f0b13dd9f3b934eec345d98c61ef6e0e65fe5f Signed-off-by: Edmond Chung <edmondchung@google.com>
2023-05-03Revert^2 "Optimize I2C Bus manager scheduling"Meghana Barkalle
7d2d4f7ad26c4ceab65c8e0165bf662aaf179683 Change-Id: I2849255df7afe4b64448d01ffc878dbb7b71518b
2023-05-03Revert^3 "Revert "LWIS: Implement I2C Bus Manager""Meghana Barkalle
5c4f7604ed8e6ae71de1c3adc1cacd25b6c0b2db Change-Id: I6b051888281116938e21f00e85d04c15cf7bfd9a
2023-04-27Revert^2 "Revert "LWIS: Implement I2C Bus Manager""Tommy Kardach
7b82845ccb5624d1aae50b76f03dcc7c24a5327c Change-Id: I998a460080b729909f3db63a2762c0be42b58984
2023-04-27Revert "Optimize I2C Bus manager scheduling"Tommy Kardach
Revert submission 2462937-I2CBusManager-OptimizedScheduling Reason for revert: Change causes memory leak b/279860649 Reverted changes: /q/submissionid:2462937-I2CBusManager-OptimizedScheduling Change-Id: I8ab99b1b8221f1cade6fd485ca9ce5b3bcc2eeee
2023-04-21Optimize I2C Bus manager schedulingMeghana Barkalle
1. Add I2C device priority to dts device node to facilitate better scheduling. Default I2C priority is set to HIGH for all device. The levels that can be specified are: HIGH = 0 MEDIUM = 1 LOW = 2 2. Update the I2C bus manager process queue to handle requests from clients in the device priority order. 3. Remove enquiing individual requests from I2C devices on the bus manager process queue directly. This optimization would result in locking the Bus Manager process queue spinlock less times and thereby reduce the thread waittime as well. Test: GCA Smoke Test Bug: 275629946 Change-Id: I74e5fa9e11b80636d9afa23a81f9ed33cb3b1fdf
2023-04-20Revert "Revert "LWIS: Implement I2C Bus Manager""Meghana Barkalle
This reverts commit fddce530c829fc0ede509ad226c34080e904eed9. Reason for revert: Fixing the cts test cases that were failing with the original commit Change-Id: I3e744655f97ddd8f6a8e9dfe742b7b45f697a885
2023-03-29Revert "LWIS: Implement I2C Bus Manager"Nick Chung
This reverts commit ad6945dd2b326f1c9e8e5bb0b7a47b3fa9cd19cc. Reason for revert: CTS regression Bug: 275629946 Test: Revert locally. Change-Id: I7e32d8ccd8ad2bc2692b2e742f26b1289ec56af7
2023-03-24LWIS: Implement I2C Bus ManagerMeghana Barkalle
Implementation of I2C Bus Manager. This will provide a means to coordinate I2C transfers on a given bus connected to multiple camera I2C peripherals. Test: Basic camera switch, preview, video, liveshot and snapshot Bug: 254536114 Change-Id: Ic1a85a3f1ad913135ac7e01704e1b7831355adde Signed-off-by: Meghana Barkalle <mbarkalle@google.com>