diff options
Diffstat (limited to 'drivers/media/rc/ir-sony-decoder.c')
-rw-r--r-- | drivers/media/rc/ir-sony-decoder.c | 6 |
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 { | |||
42 | static int ir_sony_decode(struct rc_dev *dev, struct ir_raw_event ev) | 42 | static 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 | } |