Update the TODO.lirc_zilog based on what has been completed. Also revised the development plan for lirc_zilog to not try and split Tx/Rx for one IR transceiver unit between lirc_zilog and ir-kbd-i2c, since that would be a ref-counting nightmare.
Showing the changes to drivers/staging/lirc (1 of 1 file). Show all
Unified · Split
| @@ -1,34 +1,33 @@ | ||
| 1 | −1. Both ir-kbd-i2c and lirc_zilog provide support for RX events. | |
| 2 | −The 'tx_only' lirc_zilog module parameter will allow ir-kbd-i2c | |
| 3 | −and lirc_zilog to coexist in the kernel, if the user requires such a set-up. | |
| 4 | −However the IR unit will not work well without coordination between the | |
| 5 | −two modules. A shared mutex, for transceiver access locking, needs to be | |
| 6 | −supplied by bridge drivers, in struct IR_i2_init_data, to both ir-kbd-i2c | |
| 7 | −and lirc_zilog, before they will coexist usefully. This should be fixed | |
| 8 | −before moving out of staging. | |
| 9 | − | |
| 10 | −2. References and locking need careful examination. For cx18 and ivtv PCI | |
| 11 | −cards, which are not easily "hot unplugged", the imperfect state of reference | |
| 12 | −counting and locking is acceptable if not correct. For USB connected units | |
| 13 | −like HD PVR, PVR USB2, HVR-1900, and HVR1950, the likelyhood of an Ooops on | |
| 14 | −unplug is probably great. Proper reference counting and locking needs to be | |
| 15 | −implemented before this module is moved out of staging. | |
| 16 | − | |
| 17 | −3. The binding between hdpvr and lirc_zilog is currently disabled, | |
| 18 | −due to an OOPS reported a few years ago when both the hdpvr and cx18 | |
| 19 | −drivers were loaded in his system. More details can be seen at: | |
| 20 | − http://www.mail-archive.com/linux-media@vger.kernel.org/msg09163.html | |
| 21 | −More tests need to be done, in order to fix the reported issue. | |
| 22 | − | |
| 23 | −4. In addition to providing a shared mutex for transceiver access | |
| 24 | −locking, bridge drivers, if able, should provide a chip reset() callback | |
| 1 | +1. Both ir-kbd-i2c and lirc_zilog provide support for RX events for | |
| 2 | +the chips supported by lirc_zilog. Before moving lirc_zilog out of staging: | |
| 3 | + | |
| 4 | +a. ir-kbd-i2c needs a module parameter added to allow the user to tell | |
| 5 | + ir-kbd-i2c to ignore Z8 IR units. | |
| 6 | + | |
| 7 | +b. lirc_zilog should provide Rx key presses to the rc core like ir-kbd-i2c | |
| 8 | + does. | |
| 9 | + | |
| 10 | + | |
| 11 | +2. lirc_zilog module ref-counting need examination. It has not been | |
| 12 | +verified that cdev and lirc_dev will take the proper module references on | |
| 13 | +lirc_zilog to prevent removal of lirc_zilog when the /dev/lircN device node | |
| 14 | +is open. | |
| 15 | + | |
| 16 | +(The good news is ref-counting of lirc_zilog internal structures appears to be | |
| 17 | +complete. Testing has shown the cx18 module can be unloaded out from under | |
| 18 | +irw + lircd + lirc_dev, with the /dev/lirc0 device node open, with no adverse | |
| 19 | +effects. The cx18 module could then be reloaded and irw properly began | |
| 20 | +receiving button presses again and ir_send worked without error.) | |
| 21 | + | |
| 22 | + | |
| 23 | +3. Bridge drivers, if able, should provide a chip reset() callback | |
| 25 | 24 | to lirc_zilog via struct IR_i2c_init_data. cx18 and ivtv already have routines |
| 26 | −to perform Z8 chip resets via GPIO manipulations. This will allow lirc_zilog | |
| 25 | +to perform Z8 chip resets via GPIO manipulations. This would allow lirc_zilog | |
| 27 | 26 | to bring the chip back to normal when it hangs, in the same places the |
| 28 | 27 | original lirc_pvr150 driver code does. This is not strictly needed, so it |
| 29 | 28 | is not required to move lirc_zilog out of staging. |
| 30 | 29 | |
| 31 | −5. Both lirc_zilog and ir-kbd-i2c support the Zilog Z8 for IR, as programmed | |
| 30 | +Note: Both lirc_zilog and ir-kbd-i2c support the Zilog Z8 for IR, as programmed | |
| 32 | 31 | and installed on Hauppauge products. When working on either module, developers |
| 33 | 32 | must consider at least the following bridge drivers which mention an IR Rx unit |
| 34 | 33 | at address 0x71 (indicative of a Z8): |