History

[media] lirc_zilog: Update TODO list based on work completed and revised plans

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.

Andy Walls committed 15 years ago

Commit aa3f4e41 parent 4933fc91 file · +25 −26Browse files

Showing the changes to drivers/staging/lirc (1 of 1 file). Show all

Unified · Split

drivers/staging/lirc/TODO.lirc_zilog+25−26
@@ -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
2524 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
2726 to bring the chip back to normal when it hangs, in the same places the
2827 original lirc_pvr150 driver code does. This is not strictly needed, so it
2928 is not required to move lirc_zilog out of staging.
3029
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
3231 and installed on Hauppauge products. When working on either module, developers
3332 must consider at least the following bridge drivers which mention an IR Rx unit
3433 at address 0x71 (indicative of a Z8):