NECX scancode consistency

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



FYI, I've gone through all the drivers in the media tree that generate
NECX codes to make sure they are consistent. There are two question
marks (that probably just need a small cleanup) and one driver that
reverses the order of the address bytes compared to the rest.


file:	./media/rc/ir-nec-decoder.c
======================================================================
order:	aaããcc
keymap: RC_MAP_NEC_TERRATEC_CINERGY_XS (0x04eb)
	(used in ./pci/cx23885/cx23885-input.c)
code:	address     = bitrev8((data->bits >> 24) & 0xff);
	not_address = bitrev8((data->bits >> 16) & 0xff);
	command     = bitrev8((data->bits >>  8) & 0xff);
	...
	scancode = address     << 16 |
		   not_address <<  8 |
		   command;


file:	./media/usb/dvb-usb/dib0700_core.c 
======================================================================
note:	clarification requested via mail
	http://www.spinics.net/lists/linux-media/msg75004.html
order:	aaããcc (?)
keymap: RC_MAP_DIB0700_NEC_TABLE (0x866b)
code:	scancode = RC_SCANCODE_NECX(be16_to_cpu(poll_reply->system16),
				    poll_reply->data);
	which seems to actually mean:
	keycode = poll_reply->system     << 16 |
                  poll_reply->not_system << 8  |
                  poll_reply->data;


file:	./media/usb/dvb-usb-v2/az6007.c
======================================================================
order:	aaããcc
keymap: RC_MAP_NEC_TERRATEC_CINERGY_XS (0x04eb)
code:
	code = RC_SCANCODE_NECX(st->data[1] << 8 | st->data[2],
				st->data[3]);


file:	./media/usb/dvb-usb-v2/af9035.c
======================================================================
order:	aaããcc
keymap: RC_MAP_IT913X_V1 (0x61d6 + 0x807f)
	RC_MAP_IT913X_V2 (0x807f + 0x866b)
code:	key = RC_SCANCODE_NECX(buf[0] << 8 | buf[1], buf[2]);


file:	./media/usb/dvb-usb-v2/rtl28xxu.c
======================================================================
order:	aaããcc
keymap: RC_MAP_TERRATEC_SLIM (0x02bd)
code:	rc_code = RC_SCANCODE_NECX(buf[0] << 8 | buf[1], 
				   buf[2]);
                      
file: ./media/usb/dvb-usb-v2/af9015.c
======================================================================
order:	aaããcc
keymap:	RC_MAP_MSI_DIGIVOX_III (0x61d6)
	RC_MAP_TERRATEC_SLIM (0x02bd)
	RC_MAP_TOTAL_MEDIA_IN_HAND (0x02bd)
code:	state->rc_keycode = RC_SCANCODE_NECX(buf[12] << 8 |
					     buf[13],
					     buf[14]);


file: ./media/usb/dvb-usb-v2/lmedm04.c 
======================================================================
note:	clarification requested via mail
order:	almost aaããcc, except if aa = 0x00, in which case it's NEC16?
keymap:	RC_MAP_LME2510 (0x10ed)
code:	key = RC_SCANCODE_NECX((ibuf[2] ^ 0xff) << 8 |
			       (ibuf[3] > 0) ? (ibuf[3] ^ 0xff) : 0,
			       ibuf[5]);
	
	If firmware sends inverted bytes...then...

	ibuf[2] = ~addr		= not_addr;
	ibuf[3] = ~not_addr	= addr;
	ibuf[4] = ~cmd		= not_cmd;
	ibuf[5] = ~not_cmd	= cmd;

	roughly (not completely true due to the ibuf[3] > 0 ? check)...
		key = RC_SCANCODE_NECX(addr << 8 | not_addr, cmd);

	but for addr = 0x00
		key = RC_SCANCODE_NECX(0x00, cmd);

	note that the keytable includes 1-byte scancodes, which would be
	explained by the addr = 0x00 scenario...


file: ./media/usb/em28xx/em28xx-input.c
======================================================================
order:	aaããcc
keymap:	RC_MAP_DELOCK_61959 (0x866b)
keymap: RC_MAP_REDDO (0x61d6)
code:	poll_result->scancode = RC_SCANCODE_NECX(msg[1] << 8 |
						 msg[2], msg[3]); 


file:	./media/pci/cx88/cx88-input.c
======================================================================
order:	aaããcc
keymap:	RC_MAP_PIXELVIEW_MK12 (0x866b)
code:	addr = (data >> 8) & 0xffff;
	cmd  = (data >> 0) & 0x00ff;
	scancode = RC_SCANCODE_NECX(addr, cmd);


file:	./media/pci/saa7134/saa7134-input.c
======================================================================
order:	ããaacc (!!!)
keymap:	RC_MAP_BEHOLD (0x6b86 -> 0x866b)
code:	*scancode = RC_SCANCODE_NECX(((data[10] << 8) | data[11]), data[9]);


The only NECX keymap not listed above is RC_MAP_PIXELVIEW_002T which is
used in ./usb/cx231xx/cx231xx-cards.c, but that driver has a one-byte
scancode filter so only the last byte is actually compared.


-- 
David Härdeman
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux