aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/rc/ir-sony-decoder.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/rc/ir-sony-decoder.c')
-rw-r--r--drivers/media/rc/ir-sony-decoder.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/media/rc/ir-sony-decoder.c b/drivers/media/rc/ir-sony-decoder.c
index 599c19a73360..f485f9fe1e90 100644
--- a/drivers/media/rc/ir-sony-decoder.c
+++ b/drivers/media/rc/ir-sony-decoder.c
@@ -42,6 +42,7 @@ enum sony_state {
42static int ir_sony_decode(struct rc_dev *dev, struct ir_raw_event ev) 42static int ir_sony_decode(struct rc_dev *dev, struct ir_raw_event ev)
43{ 43{
44 struct sony_dec *data = &dev->raw->sony; 44 struct sony_dec *data = &dev->raw->sony;
45 enum rc_type protocol;
45 u32 scancode; 46 u32 scancode;
46 u8 device, subdevice, function; 47 u8 device, subdevice, function;
47 48
@@ -131,6 +132,7 @@ static int ir_sony_decode(struct rc_dev *dev, struct ir_raw_event ev)
131 device = bitrev8((data->bits << 3) & 0xF8); 132 device = bitrev8((data->bits << 3) & 0xF8);
132 subdevice = 0; 133 subdevice = 0;
133 function = bitrev8((data->bits >> 4) & 0xFE); 134 function = bitrev8((data->bits >> 4) & 0xFE);
135 protocol = RC_TYPE_SONY12;
134 break; 136 break;
135 case 15: 137 case 15:
136 if (!rc_protocols_enabled(dev, RC_BIT_SONY15)) { 138 if (!rc_protocols_enabled(dev, RC_BIT_SONY15)) {
@@ -140,6 +142,7 @@ static int ir_sony_decode(struct rc_dev *dev, struct ir_raw_event ev)
140 device = bitrev8((data->bits >> 0) & 0xFF); 142 device = bitrev8((data->bits >> 0) & 0xFF);
141 subdevice = 0; 143 subdevice = 0;
142 function = bitrev8((data->bits >> 7) & 0xFE); 144 function = bitrev8((data->bits >> 7) & 0xFE);
145 protocol = RC_TYPE_SONY15;
143 break; 146 break;
144 case 20: 147 case 20:
145 if (!rc_protocols_enabled(dev, RC_BIT_SONY20)) { 148 if (!rc_protocols_enabled(dev, RC_BIT_SONY20)) {
@@ -149,6 +152,7 @@ static int ir_sony_decode(struct rc_dev *dev, struct ir_raw_event ev)
149 device = bitrev8((data->bits >> 5) & 0xF8); 152 device = bitrev8((data->bits >> 5) & 0xF8);
150 subdevice = bitrev8((data->bits >> 0) & 0xFF); 153 subdevice = bitrev8((data->bits >> 0) & 0xFF);
151 function = bitrev8((data->bits >> 12) & 0xFE); 154 function = bitrev8((data->bits >> 12) & 0xFE);
155 protocol = RC_TYPE_SONY20;
152 break; 156 break;
153 default: 157 default:
154 IR_dprintk(1, "Sony invalid bitcount %u\n", data->count); 158 IR_dprintk(1, "Sony invalid bitcount %u\n", data->count);
@@ -157,7 +161,7 @@ static int ir_sony_decode(struct rc_dev *dev, struct ir_raw_event ev)
157 161
158 scancode = device << 16 | subdevice << 8 | function; 162 scancode = device << 16 | subdevice << 8 | function;
159 IR_dprintk(1, "Sony(%u) scancode 0x%05x\n", data->count, scancode); 163 IR_dprintk(1, "Sony(%u) scancode 0x%05x\n", data->count, scancode);
160 rc_keydown(dev, scancode, 0); 164 rc_keydown(dev, protocol, scancode, 0);
161 data->state = STATE_INACTIVE; 165 data->state = STATE_INACTIVE;
162 return 0; 166 return 0;
163 } 167 }