Revert "[media] staging: lirc_imon: port remaining usb ids to imon and remove"
Sean Young
maintainerPATCH 1/3 Revert "[media] staging: lirc_imon: port remaining usb ids to imon and remove"
This code was ported without the necessary hardware to test. There are multiple problems which are more easily solved by writing a separate driver.
This reverts commit f41003a23a02dc7299539300f74360c2a932714a.
Signed-off-by Sean Young <[email protected]>
--- drivers/media/rc/imon.c | 135 +++--------------------------------------------- 1 file changed, 7 insertions(+), 128 deletions(-)
drivers/media/rc/imon.c +7 -128
@@ -92,7 +92,6 @@ struct imon_usb_dev_descr {__u16 flags;#define IMON_NO_FLAGS 0#define IMON_NEED_20MS_PKT_DELAY 1 -#define IMON_IR_RAW 2struct imon_panel_key_table key_table[]; };
@@ -123,12 +122,6 @@ struct imon_context {unsigned char usb_tx_buf[8 ];unsigned int send_packet_delay; -struct rx_data { -int count;/* length of 0 or 1 sequence */ -int prev_bit;/* logic level of sequence */ -int initial_space;/* initial space flag */ - } rx; -struct tx_t {unsigned char data_buf[35 ];/* user data buffer */ struct completion finished;/* wait for write to finish */
@@ -331,10 +324,6 @@ static const struct imon_usb_dev_descr imon_DH102 = { } }; -static const struct imon_usb_dev_descr imon_ir_raw = { - .flags =IMON_IR_RAW , -}; -/* * USB Device ID for iMON USB Control Boards *
@@ -418,18 +407,6 @@ static const struct usb_device_id imon_usb_id_table[] = {/* device specifics unknown */ { USB_DEVICE(0x15c2, 0x0046), .driver_info = (unsigned long)&imon_default_table}, - /* TriGem iMON (IR only) -- TG_iMON.inf */ - { USB_DEVICE(0x0aa8, 0x8001), - .driver_info = (unsigned long)&imon_ir_raw}, - /* SoundGraph iMON (IR only) -- sg_imon.inf */ - { USB_DEVICE(0x04e8, 0xff30), - .driver_info = (unsigned long)&imon_ir_raw}, - /* SoundGraph iMON VFD (IR & VFD) -- iMON_VFD.inf */ - { USB_DEVICE(0x0aa8, 0xffda), - .driver_info = (unsigned long)&imon_ir_raw}, - /* SoundGraph iMON SS (IR & VFD) -- iMON_SS.inf */ - { USB_DEVICE(0x15c2, 0xffda), - .driver_info = (unsigned long)&imon_ir_raw}, {} };
@@ -1572,91 +1549,8 @@ static int imon_parse_press_type(struct imon_context *ictx,/* * Process the incoming packet */ -/* -* Convert bit count to time duration (in us) and submit -* the value to lirc_dev. -*/ -static void submit_data (struct imon_context *context) -{ -DEFINE_IR_RAW_EVENT (ev); - - ev.pulse = context->rx.prev_bit; - ev.duration =US_TO_NS (context->rx.count *BIT_DURATION ); -ir_raw_event_store_with_filter (context->rdev, &ev); -} - -/* -* Process the incoming packet -*/ -static void imon_incoming_ir_raw (struct imon_context *context, +static void imon_incoming_packet (struct imon_context *ictx,struct urb *urb,int intf) -{ -int len = urb->actual_length; -unsigned char *buf = urb->transfer_buffer; -struct device *dev = context->dev; -int octet, bit; -unsigned char mask; - -if (len !=8 ) { -dev_warn (dev,"imon %s: invalid incoming packet size (len = %d, intf%d)\n" , - __func__, len, intf); -return ; - } - -if (debug) -dev_info (dev,"raw packet: %*ph\n" , len, buf); -/* -* Translate received data to pulse and space lengths. -* Received data is active low, i.e. pulses are 0 and -* spaces are 1. -* -* My original algorithm was essentially similar to -* Changwoo Ryu's with the exception that he switched -* the incoming bits to active high and also fed an -* initial space to LIRC at the start of a new sequence -* if the previous bit was a pulse. -* -* I've decided to adopt his algorithm. -*/ - -if (buf[7 ] ==1 && context->rx.initial_space) { -/* LIRC requires a leading space */ - context->rx.prev_bit =0 ; - context->rx.count =4 ; -submit_data (context); - context->rx.count =0 ; - } - -for (octet =0 ; octet <5 ; ++octet) { - mask =0x80 ; -for (bit =0 ; bit <8 ; ++bit) { -int curr_bit = !(buf[octet] & mask); - -if (curr_bit != context->rx.prev_bit) { -if (context->rx.count) { -submit_data (context); - context->rx.count =0 ; - } - context->rx.prev_bit = curr_bit; - } - ++context->rx.count; - mask >>=1 ; - } - } - -if (buf[7 ] ==10 ) { -if (context->rx.count) { -submit_data (context); - context->rx.count =0 ; - } - context->rx.initial_space = context->rx.prev_bit; - } - -ir_raw_event_handle (context->rdev); -} - -static void imon_incoming_scancode (struct imon_context *ictx, -struct urb *urb,int intf) {int len = urb->actual_length;unsigned char *buf = urb->transfer_buffer;
@@ -1839,10 +1733,7 @@ static void usb_rx_callback_intf0(struct urb *urb)break ;case 0 : -if (ictx->rdev->driver_type ==RC_DRIVER_IR_RAW ) -imon_incoming_ir_raw (ictx, urb, intfnum); -else -imon_incoming_scancode (ictx, urb, intfnum); +imon_incoming_packet (ictx, urb, intfnum);break ;default :
@@ -1883,10 +1774,7 @@ static void usb_rx_callback_intf1(struct urb *urb)break ;case 0 : -if (ictx->rdev->driver_type ==RC_DRIVER_IR_RAW ) -imon_incoming_ir_raw (ictx, urb, intfnum); -else -imon_incoming_scancode (ictx, urb, intfnum); +imon_incoming_packet (ictx, urb, intfnum);break ;default :
@@ -2000,14 +1888,11 @@ static void imon_set_display_type(struct imon_context *ictx)case 0x0041 :case 0x0042 :case 0x0043 : -case 0x8001 : -case 0xff30 : configured_display_type =IMON_DISPLAY_TYPE_NONE ; ictx->display_supported = false;break ;case 0x0036 :case 0x0044 : -case 0xffda :default : configured_display_type =IMON_DISPLAY_TYPE_VFD ;break ;
@@ -2032,8 +1917,7 @@ static struct rc_dev *imon_init_rdev(struct imon_context *ictx)static const unsigned char fp_packet[] = {0x40 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x88 }; - rdev =rc_allocate_device (ictx->dev_descr->flags &IMON_IR_RAW ? -RC_DRIVER_IR_RAW :RC_DRIVER_SCANCODE ); + rdev =rc_allocate_device (RC_DRIVER_SCANCODE );if (!rdev) {dev_err (ictx->dev,"remote control dev allocation failed\n" ); goto out;
@@ -2051,12 +1935,8 @@ static struct rc_dev *imon_init_rdev(struct imon_context *ictx) rdev->dev.parent = ictx->dev; rdev->priv = ictx; -if (ictx->dev_descr->flags &IMON_IR_RAW ) - rdev->allowed_protocols =RC_PROTO_BIT_ALL_IR_DECODER ; -else -/* iMON PAD or MCE */ - rdev->allowed_protocols =RC_PROTO_BIT_OTHER | -RC_PROTO_BIT_RC6_MCE ; +/* iMON PAD or MCE */ + rdev->allowed_protocols =RC_PROTO_BIT_OTHER |RC_PROTO_BIT_RC6_MCE ; rdev->change_protocol = imon_ir_change_protocol; rdev->driver_name =MOD_NAME ;
@@ -2074,8 +1954,7 @@ static struct rc_dev *imon_init_rdev(struct imon_context *ictx)imon_set_display_type (ictx); -if (ictx->rc_proto ==RC_PROTO_BIT_RC6_MCE || - ictx->dev_descr->flags &IMON_IR_RAW ) +if (ictx->rc_proto ==RC_PROTO_BIT_RC6_MCE ) rdev->map_name =RC_MAP_IMON_MCE ;else rdev->map_name =RC_MAP_IMON_PAD ;
Signature · 1 line
2.14.3
Sean Young
maintainerPATCH 2/3 media: rc: add keymap for iMON RSC remote
Note that the stick on the remote is not supported yet.
Signed-off-by Sean Young <[email protected]>
--- drivers/media/rc/keymaps/Makefile | 1 + drivers/media/rc/keymaps/rc-imon-rsc.c | 81 ++++++++++++++++++++++++++++++++++ include/media/rc-map.h | 1 + 3 files changed, 83 insertions(+) create mode 100644 drivers/media/rc/keymaps/rc-imon-rsc.c
drivers/media/rc/keymaps/Makefile +1 -0
@@ -53,6 +53,7 @@ obj-$(CONFIG_RC_MAP) += rc-adstech-dvb-t-pci.o \ rc-hisi-tv-demo.o \ rc-imon-mce.o \ rc-imon-pad.o \ + rc-imon-rsc.o \ rc-iodata-bctv7e.o \ rc-it913x-v1.o \ rc-it913x-v2.o \
drivers/media/rc/keymaps/rc-imon-rsc.c new file +81 -0
81 lines not on this page · raw message
include/media/rc-map.h +1 -0
@@ -211,6 +211,7 @@ struct rc_map *rc_map_get(const char *name);#define RC_MAP_HISI_TV_DEMO "rc-hisi-tv-demo"#define RC_MAP_IMON_MCE "rc-imon-mce"#define RC_MAP_IMON_PAD "rc-imon-pad" +#define RC_MAP_IMON_RSC "rc-imon-rsc"#define RC_MAP_IODATA_BCTV7E "rc-iodata-bctv7e"#define RC_MAP_IT913X_V1 "rc-it913x-v1"#define RC_MAP_IT913X_V2 "rc-it913x-v2"
Signature · 1 line
2.14.3
Sean Young
maintainerPATCH 3/3 media: rc: new driver for early iMon device
In reply to Sean YoungThese devices were supported by the lirc_imon.c driver which was removed from staging in commit f41003a23a02 ("[media] staging: lirc_imon: port remaining usb ids to imon and remove").
Signed-off-by Sean Young <[email protected]>
--- MAINTAINERS | 7 ++ drivers/media/rc/Kconfig | 12 +++ drivers/media/rc/Makefile | 1 + drivers/media/rc/imon_raw.c | 193 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 213 insertions(+) create mode 100644 drivers/media/rc/imon_raw.c
MAINTAINERS +7 -0
@@ -6903,6 +6903,13 @@ M: James Hogan <[email protected]> S: Maintained F: drivers/media/rc/img-ir/ +IMON SOUNDGRAPH USB IR RECEIVER +M: Sean Young <[email protected]> +L: [email protected] +S: Maintained +F: drivers/media/rc/imon_raw.c +F: drivers/media/rc/imon.c + IMS TWINTURBO FRAMEBUFFER DRIVER L: [email protected] S: Orphan
drivers/media/rc/Kconfig +12 -0
@@ -175,6 +175,18 @@ config IR_IMON To compile this driver as a module, choose M here: the module will be called imon. +config IR_IMON_RAW + tristate "SoundGraph iMON Receiver (early raw IR models)" + depends on USB_ARCH_HAS_HCD + depends on RC_CORE + select USB + ---help--- + Say Y here if you want to use a SoundGraph iMON IR Receiver, + early raw models. + + To compile this driver as a module, choose M here: the + module will be called imon_raw. + config IR_MCEUSB tristate "Windows Media Center Ed. eHome Infrared Transceiver" depends on USB_ARCH_HAS_HCD
drivers/media/rc/Makefile +1 -0
@@ -19,6 +19,7 @@ obj-$(CONFIG_IR_XMP_DECODER) += ir-xmp-decoder.o obj-$(CONFIG_RC_ATI_REMOTE) += ati_remote.o obj-$(CONFIG_IR_HIX5HD2) += ir-hix5hd2.o obj-$(CONFIG_IR_IMON) += imon.o +obj-$(CONFIG_IR_IMON_RAW) += imon_raw.o obj-$(CONFIG_IR_ITE_CIR) += ite-cir.o obj-$(CONFIG_IR_MCEUSB) += mceusb.o obj-$(CONFIG_IR_FINTEK) += fintek-cir.o
drivers/media/rc/imon_raw.c new file +193 -0
193 lines not on this page · raw message
Signature · 1 line
2.14.3