summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSean Young <sean@mess.org>2018-08-21 15:57:52 -0400
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>2018-10-04 14:22:27 -0400
commit183e19f5b9ee18fc7bc4b3983a91b5d0dd6c7871 (patch)
tree590ad6faa92cfc230d2a3527f585d7f4d728c217
parentc5f14af0d8b63a62dfde7ade372da0038507deeb (diff)
media: rc: Remove init_ir_raw_event and DEFINE_IR_RAW_EVENT macros
This can be done with c99 initializers, which makes the code cleaner and more transparent. It does require gcc 4.6, because of this bug in earlier versions: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=10676 Since commit cafa0010cd51 ("Raise the minimum required gcc version to 4.6"), this is the case. Signed-off-by: Sean Young <sean@mess.org> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
-rw-r--r--drivers/hid/hid-picolcd_cir.c3
-rw-r--r--drivers/media/common/siano/smsir.c8
-rw-r--r--drivers/media/i2c/cx25840/cx25840-ir.c6
-rw-r--r--drivers/media/pci/cx23885/cx23888-ir.c6
-rw-r--r--drivers/media/pci/cx88/cx88-input.c3
-rw-r--r--drivers/media/rc/ene_ir.c12
-rw-r--r--drivers/media/rc/fintek-cir.c3
-rw-r--r--drivers/media/rc/igorplugusb.c2
-rw-r--r--drivers/media/rc/iguanair.c4
-rw-r--r--drivers/media/rc/imon_raw.c2
-rw-r--r--drivers/media/rc/ir-hix5hd2.c2
-rw-r--r--drivers/media/rc/ite-cir.c5
-rw-r--r--drivers/media/rc/mceusb.c15
-rw-r--r--drivers/media/rc/meson-ir.c2
-rw-r--r--drivers/media/rc/mtk-cir.c2
-rw-r--r--drivers/media/rc/nuvoton-cir.c2
-rw-r--r--drivers/media/rc/rc-core-priv.h7
-rw-r--r--drivers/media/rc/rc-ir-raw.c12
-rw-r--r--drivers/media/rc/rc-loopback.c2
-rw-r--r--drivers/media/rc/redrat3.c10
-rw-r--r--drivers/media/rc/serial_ir.c10
-rw-r--r--drivers/media/rc/sir_ir.c2
-rw-r--r--drivers/media/rc/st_rc.c5
-rw-r--r--drivers/media/rc/streamzap.c12
-rw-r--r--drivers/media/rc/sunxi-cir.c2
-rw-r--r--drivers/media/rc/ttusbir.c4
-rw-r--r--drivers/media/rc/winbond-cir.c12
-rw-r--r--drivers/media/usb/au0828/au0828-input.c5
-rw-r--r--drivers/media/usb/dvb-usb-v2/rtl28xxu.c4
-rw-r--r--include/media/rc-core.h11
30 files changed, 74 insertions, 101 deletions
diff --git a/drivers/hid/hid-picolcd_cir.c b/drivers/hid/hid-picolcd_cir.c
index 32747b7f917e..bf6f29ca3315 100644
--- a/drivers/hid/hid-picolcd_cir.c
+++ b/drivers/hid/hid-picolcd_cir.c
@@ -45,7 +45,7 @@ int picolcd_raw_cir(struct picolcd_data *data,
45{ 45{
46 unsigned long flags; 46 unsigned long flags;
47 int i, w, sz; 47 int i, w, sz;
48 DEFINE_IR_RAW_EVENT(rawir); 48 struct ir_raw_event rawir = {};
49 49
50 /* ignore if rc_dev is NULL or status is shunned */ 50 /* ignore if rc_dev is NULL or status is shunned */
51 spin_lock_irqsave(&data->lock, flags); 51 spin_lock_irqsave(&data->lock, flags);
@@ -67,7 +67,6 @@ int picolcd_raw_cir(struct picolcd_data *data,
67 */ 67 */
68 sz = size > 0 ? min((int)raw_data[0], size-1) : 0; 68 sz = size > 0 ? min((int)raw_data[0], size-1) : 0;
69 for (i = 0; i+1 < sz; i += 2) { 69 for (i = 0; i+1 < sz; i += 2) {
70 init_ir_raw_event(&rawir);
71 w = (raw_data[i] << 8) | (raw_data[i+1]); 70 w = (raw_data[i] << 8) | (raw_data[i+1]);
72 rawir.pulse = !!(w & 0x8000); 71 rawir.pulse = !!(w & 0x8000);
73 rawir.duration = US_TO_NS(rawir.pulse ? (65536 - w) : w); 72 rawir.duration = US_TO_NS(rawir.pulse ? (65536 - w) : w);
diff --git a/drivers/media/common/siano/smsir.c b/drivers/media/common/siano/smsir.c
index a1cfafba9b4c..79bd627f84b8 100644
--- a/drivers/media/common/siano/smsir.c
+++ b/drivers/media/common/siano/smsir.c
@@ -26,10 +26,10 @@ void sms_ir_event(struct smscore_device_t *coredev, const char *buf, int len)
26 const s32 *samples = (const void *)buf; 26 const s32 *samples = (const void *)buf;
27 27
28 for (i = 0; i < len >> 2; i++) { 28 for (i = 0; i < len >> 2; i++) {
29 DEFINE_IR_RAW_EVENT(ev); 29 struct ir_raw_event ev = {
30 30 .duration = abs(samples[i]) * 1000, /* Convert to ns */
31 ev.duration = abs(samples[i]) * 1000; /* Convert to ns */ 31 .pulse = (samples[i] > 0) ? false : true
32 ev.pulse = (samples[i] > 0) ? false : true; 32 };
33 33
34 ir_raw_event_store(coredev->ir.dev, &ev); 34 ir_raw_event_store(coredev->ir.dev, &ev);
35 } 35 }
diff --git a/drivers/media/i2c/cx25840/cx25840-ir.c b/drivers/media/i2c/cx25840/cx25840-ir.c
index ad7f66c7aac8..69cdc09981af 100644
--- a/drivers/media/i2c/cx25840/cx25840-ir.c
+++ b/drivers/media/i2c/cx25840/cx25840-ir.c
@@ -701,10 +701,8 @@ static int cx25840_ir_rx_read(struct v4l2_subdev *sd, u8 *buf, size_t count,
701 if (v > IR_MAX_DURATION) 701 if (v > IR_MAX_DURATION)
702 v = IR_MAX_DURATION; 702 v = IR_MAX_DURATION;
703 703
704 init_ir_raw_event(&p->ir_core_data); 704 p->ir_core_data = (struct ir_raw_event)
705 p->ir_core_data.pulse = u; 705 { .pulse = u, .duration = v, .timeout = w };
706 p->ir_core_data.duration = v;
707 p->ir_core_data.timeout = w;
708 706
709 v4l2_dbg(2, ir_debug, sd, "rx read: %10u ns %s %s\n", 707 v4l2_dbg(2, ir_debug, sd, "rx read: %10u ns %s %s\n",
710 v, u ? "mark" : "space", w ? "(timed out)" : ""); 708 v, u ? "mark" : "space", w ? "(timed out)" : "");
diff --git a/drivers/media/pci/cx23885/cx23888-ir.c b/drivers/media/pci/cx23885/cx23888-ir.c
index 00329f668b59..1d775c90df51 100644
--- a/drivers/media/pci/cx23885/cx23888-ir.c
+++ b/drivers/media/pci/cx23885/cx23888-ir.c
@@ -696,10 +696,8 @@ static int cx23888_ir_rx_read(struct v4l2_subdev *sd, u8 *buf, size_t count,
696 if (v > IR_MAX_DURATION) 696 if (v > IR_MAX_DURATION)
697 v = IR_MAX_DURATION; 697 v = IR_MAX_DURATION;
698 698
699 init_ir_raw_event(&p->ir_core_data); 699 p->ir_core_data = (struct ir_raw_event)
700 p->ir_core_data.pulse = u; 700 { .pulse = u, .duration = v, .timeout = w };
701 p->ir_core_data.duration = v;
702 p->ir_core_data.timeout = w;
703 701
704 v4l2_dbg(2, ir_888_debug, sd, "rx read: %10u ns %s %s\n", 702 v4l2_dbg(2, ir_888_debug, sd, "rx read: %10u ns %s %s\n",
705 v, u ? "mark" : "space", w ? "(timed out)" : ""); 703 v, u ? "mark" : "space", w ? "(timed out)" : "");
diff --git a/drivers/media/pci/cx88/cx88-input.c b/drivers/media/pci/cx88/cx88-input.c
index c5cee71d744d..ca76da04b476 100644
--- a/drivers/media/pci/cx88/cx88-input.c
+++ b/drivers/media/pci/cx88/cx88-input.c
@@ -535,7 +535,7 @@ void cx88_ir_irq(struct cx88_core *core)
535 struct cx88_IR *ir = core->ir; 535 struct cx88_IR *ir = core->ir;
536 u32 samples; 536 u32 samples;
537 unsigned int todo, bits; 537 unsigned int todo, bits;
538 struct ir_raw_event ev; 538 struct ir_raw_event ev = {};
539 539
540 if (!ir || !ir->sampling) 540 if (!ir || !ir->sampling)
541 return; 541 return;
@@ -550,7 +550,6 @@ void cx88_ir_irq(struct cx88_core *core)
550 if (samples == 0xff && ir->dev->idle) 550 if (samples == 0xff && ir->dev->idle)
551 return; 551 return;
552 552
553 init_ir_raw_event(&ev);
554 for (todo = 32; todo > 0; todo -= bits) { 553 for (todo = 32; todo > 0; todo -= bits) {
555 ev.pulse = samples & 0x80000000 ? false : true; 554 ev.pulse = samples & 0x80000000 ? false : true;
556 bits = min(todo, 32U - fls(ev.pulse ? samples : ~samples)); 555 bits = min(todo, 32U - fls(ev.pulse ? samples : ~samples));
diff --git a/drivers/media/rc/ene_ir.c b/drivers/media/rc/ene_ir.c
index 71b8c9bbf6c4..dd2fd307ef85 100644
--- a/drivers/media/rc/ene_ir.c
+++ b/drivers/media/rc/ene_ir.c
@@ -326,8 +326,6 @@ static int ene_rx_get_sample_reg(struct ene_device *dev)
326/* Sense current received carrier */ 326/* Sense current received carrier */
327static void ene_rx_sense_carrier(struct ene_device *dev) 327static void ene_rx_sense_carrier(struct ene_device *dev)
328{ 328{
329 DEFINE_IR_RAW_EVENT(ev);
330
331 int carrier, duty_cycle; 329 int carrier, duty_cycle;
332 int period = ene_read_reg(dev, ENE_CIRCAR_PRD); 330 int period = ene_read_reg(dev, ENE_CIRCAR_PRD);
333 int hperiod = ene_read_reg(dev, ENE_CIRCAR_HPRD); 331 int hperiod = ene_read_reg(dev, ENE_CIRCAR_HPRD);
@@ -348,9 +346,11 @@ static void ene_rx_sense_carrier(struct ene_device *dev)
348 dbg("RX: sensed carrier = %d Hz, duty cycle %d%%", 346 dbg("RX: sensed carrier = %d Hz, duty cycle %d%%",
349 carrier, duty_cycle); 347 carrier, duty_cycle);
350 if (dev->carrier_detect_enabled) { 348 if (dev->carrier_detect_enabled) {
351 ev.carrier_report = true; 349 struct ir_raw_event ev = {
352 ev.carrier = carrier; 350 .carrier_report = true,
353 ev.duty_cycle = duty_cycle; 351 .carrier = carrier,
352 .duty_cycle = duty_cycle
353 };
354 ir_raw_event_store(dev->rdev, &ev); 354 ir_raw_event_store(dev->rdev, &ev);
355 } 355 }
356} 356}
@@ -733,7 +733,7 @@ static irqreturn_t ene_isr(int irq, void *data)
733 unsigned long flags; 733 unsigned long flags;
734 irqreturn_t retval = IRQ_NONE; 734 irqreturn_t retval = IRQ_NONE;
735 struct ene_device *dev = (struct ene_device *)data; 735 struct ene_device *dev = (struct ene_device *)data;
736 DEFINE_IR_RAW_EVENT(ev); 736 struct ir_raw_event ev = {};
737 737
738 spin_lock_irqsave(&dev->hw_lock, flags); 738 spin_lock_irqsave(&dev->hw_lock, flags);
739 739
diff --git a/drivers/media/rc/fintek-cir.c b/drivers/media/rc/fintek-cir.c
index f2639d0c2fca..601944666b71 100644
--- a/drivers/media/rc/fintek-cir.c
+++ b/drivers/media/rc/fintek-cir.c
@@ -282,7 +282,7 @@ static int fintek_cmdsize(u8 cmd, u8 subcmd)
282/* process ir data stored in driver buffer */ 282/* process ir data stored in driver buffer */
283static void fintek_process_rx_ir_data(struct fintek_dev *fintek) 283static void fintek_process_rx_ir_data(struct fintek_dev *fintek)
284{ 284{
285 DEFINE_IR_RAW_EVENT(rawir); 285 struct ir_raw_event rawir = {};
286 u8 sample; 286 u8 sample;
287 bool event = false; 287 bool event = false;
288 int i; 288 int i;
@@ -314,7 +314,6 @@ static void fintek_process_rx_ir_data(struct fintek_dev *fintek)
314 break; 314 break;
315 case PARSE_IRDATA: 315 case PARSE_IRDATA:
316 fintek->rem--; 316 fintek->rem--;
317 init_ir_raw_event(&rawir);
318 rawir.pulse = ((sample & BUF_PULSE_BIT) != 0); 317 rawir.pulse = ((sample & BUF_PULSE_BIT) != 0);
319 rawir.duration = US_TO_NS((sample & BUF_SAMPLE_MASK) 318 rawir.duration = US_TO_NS((sample & BUF_SAMPLE_MASK)
320 * CIR_SAMPLE_PERIOD); 319 * CIR_SAMPLE_PERIOD);
diff --git a/drivers/media/rc/igorplugusb.c b/drivers/media/rc/igorplugusb.c
index f563ddd7f739..ba3f95a97f14 100644
--- a/drivers/media/rc/igorplugusb.c
+++ b/drivers/media/rc/igorplugusb.c
@@ -56,7 +56,7 @@ static void igorplugusb_cmd(struct igorplugusb *ir, int cmd);
56 56
57static void igorplugusb_irdata(struct igorplugusb *ir, unsigned len) 57static void igorplugusb_irdata(struct igorplugusb *ir, unsigned len)
58{ 58{
59 DEFINE_IR_RAW_EVENT(rawir); 59 struct ir_raw_event rawir = {};
60 unsigned i, start, overflow; 60 unsigned i, start, overflow;
61 61
62 dev_dbg(ir->dev, "irdata: %*ph (len=%u)", len, ir->buf_in, len); 62 dev_dbg(ir->dev, "irdata: %*ph (len=%u)", len, ir->buf_in, len);
diff --git a/drivers/media/rc/iguanair.c b/drivers/media/rc/iguanair.c
index 7daac8bab83b..fbacb13b614b 100644
--- a/drivers/media/rc/iguanair.c
+++ b/drivers/media/rc/iguanair.c
@@ -129,12 +129,10 @@ static void process_ir_data(struct iguanair *ir, unsigned len)
129 break; 129 break;
130 } 130 }
131 } else if (len >= 7) { 131 } else if (len >= 7) {
132 DEFINE_IR_RAW_EVENT(rawir); 132 struct ir_raw_event rawir = {};
133 unsigned i; 133 unsigned i;
134 bool event = false; 134 bool event = false;
135 135
136 init_ir_raw_event(&rawir);
137
138 for (i = 0; i < 7; i++) { 136 for (i = 0; i < 7; i++) {
139 if (ir->buf_in[i] == 0x80) { 137 if (ir->buf_in[i] == 0x80) {
140 rawir.pulse = false; 138 rawir.pulse = false;
diff --git a/drivers/media/rc/imon_raw.c b/drivers/media/rc/imon_raw.c
index 32709f96de14..7796098d9c30 100644
--- a/drivers/media/rc/imon_raw.c
+++ b/drivers/media/rc/imon_raw.c
@@ -28,7 +28,7 @@ static inline int is_bit_set(const u8 *buf, int bit)
28 28
29static void imon_ir_data(struct imon *imon) 29static void imon_ir_data(struct imon *imon)
30{ 30{
31 DEFINE_IR_RAW_EVENT(rawir); 31 struct ir_raw_event rawir = {};
32 int offset = 0, size = 5 * 8; 32 int offset = 0, size = 5 * 8;
33 int bit; 33 int bit;
34 34
diff --git a/drivers/media/rc/ir-hix5hd2.c b/drivers/media/rc/ir-hix5hd2.c
index 700ab4c563d0..abc4d6c1b323 100644
--- a/drivers/media/rc/ir-hix5hd2.c
+++ b/drivers/media/rc/ir-hix5hd2.c
@@ -175,7 +175,7 @@ static irqreturn_t hix5hd2_ir_rx_interrupt(int irq, void *data)
175 } 175 }
176 176
177 if ((irq_sr & INTMS_SYMBRCV) || (irq_sr & INTMS_TIMEOUT)) { 177 if ((irq_sr & INTMS_SYMBRCV) || (irq_sr & INTMS_TIMEOUT)) {
178 DEFINE_IR_RAW_EVENT(ev); 178 struct ir_raw_event ev = {};
179 179
180 symb_num = readl_relaxed(priv->base + IR_DATAH); 180 symb_num = readl_relaxed(priv->base + IR_DATAH);
181 for (i = 0; i < symb_num; i++) { 181 for (i = 0; i < symb_num; i++) {
diff --git a/drivers/media/rc/ite-cir.c b/drivers/media/rc/ite-cir.c
index de77d22c30a7..cd3c60ba8519 100644
--- a/drivers/media/rc/ite-cir.c
+++ b/drivers/media/rc/ite-cir.c
@@ -173,7 +173,7 @@ static void ite_decode_bytes(struct ite_dev *dev, const u8 * data, int
173 u32 sample_period; 173 u32 sample_period;
174 unsigned long *ldata; 174 unsigned long *ldata;
175 unsigned int next_one, next_zero, size; 175 unsigned int next_one, next_zero, size;
176 DEFINE_IR_RAW_EVENT(ev); 176 struct ir_raw_event ev = {};
177 177
178 if (length == 0) 178 if (length == 0)
179 return; 179 return;
@@ -1507,9 +1507,6 @@ static int ite_probe(struct pnp_dev *pdev, const struct pnp_device_id
1507 /* initialize spinlocks */ 1507 /* initialize spinlocks */
1508 spin_lock_init(&itdev->lock); 1508 spin_lock_init(&itdev->lock);
1509 1509
1510 /* initialize raw event */
1511 init_ir_raw_event(&itdev->rawir);
1512
1513 /* set driver data into the pnp device */ 1510 /* set driver data into the pnp device */
1514 pnp_set_drvdata(pdev, itdev); 1511 pnp_set_drvdata(pdev, itdev);
1515 itdev->pdev = pdev; 1512 itdev->pdev = pdev;
diff --git a/drivers/media/rc/mceusb.c b/drivers/media/rc/mceusb.c
index 7f0fc3e12190..c9293696dc2d 100644
--- a/drivers/media/rc/mceusb.c
+++ b/drivers/media/rc/mceusb.c
@@ -1078,7 +1078,7 @@ static int mceusb_set_rx_carrier_report(struct rc_dev *dev, int enable)
1078 */ 1078 */
1079static void mceusb_handle_command(struct mceusb_dev *ir, int index) 1079static void mceusb_handle_command(struct mceusb_dev *ir, int index)
1080{ 1080{
1081 DEFINE_IR_RAW_EVENT(rawir); 1081 struct ir_raw_event rawir = {};
1082 u8 hi = ir->buf_in[index + 1] & 0xff; 1082 u8 hi = ir->buf_in[index + 1] & 0xff;
1083 u8 lo = ir->buf_in[index + 2] & 0xff; 1083 u8 lo = ir->buf_in[index + 2] & 0xff;
1084 u32 carrier_cycles; 1084 u32 carrier_cycles;
@@ -1152,7 +1152,7 @@ static void mceusb_handle_command(struct mceusb_dev *ir, int index)
1152 1152
1153static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len) 1153static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len)
1154{ 1154{
1155 DEFINE_IR_RAW_EVENT(rawir); 1155 struct ir_raw_event rawir = {};
1156 bool event = false; 1156 bool event = false;
1157 int i = 0; 1157 int i = 0;
1158 1158
@@ -1175,7 +1175,6 @@ static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len)
1175 break; 1175 break;
1176 case PARSE_IRDATA: 1176 case PARSE_IRDATA:
1177 ir->rem--; 1177 ir->rem--;
1178 init_ir_raw_event(&rawir);
1179 rawir.pulse = ((ir->buf_in[i] & MCE_PULSE_BIT) != 0); 1178 rawir.pulse = ((ir->buf_in[i] & MCE_PULSE_BIT) != 0);
1180 rawir.duration = (ir->buf_in[i] & MCE_PULSE_MASK); 1179 rawir.duration = (ir->buf_in[i] & MCE_PULSE_MASK);
1181 if (unlikely(!rawir.duration)) { 1180 if (unlikely(!rawir.duration)) {
@@ -1215,11 +1214,13 @@ static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len)
1215 if (ir->rem) { 1214 if (ir->rem) {
1216 ir->parser_state = PARSE_IRDATA; 1215 ir->parser_state = PARSE_IRDATA;
1217 } else { 1216 } else {
1218 init_ir_raw_event(&rawir); 1217 struct ir_raw_event ev = {
1219 rawir.timeout = 1; 1218 .timeout = 1,
1220 rawir.duration = ir->rc->timeout; 1219 .duration = ir->rc->timeout
1220 };
1221
1221 if (ir_raw_event_store_with_filter(ir->rc, 1222 if (ir_raw_event_store_with_filter(ir->rc,
1222 &rawir)) 1223 &ev))
1223 event = true; 1224 event = true;
1224 ir->pulse_tunit = 0; 1225 ir->pulse_tunit = 0;
1225 ir->pulse_count = 0; 1226 ir->pulse_count = 0;
diff --git a/drivers/media/rc/meson-ir.c b/drivers/media/rc/meson-ir.c
index f449b35d25e7..9914c83fecb9 100644
--- a/drivers/media/rc/meson-ir.c
+++ b/drivers/media/rc/meson-ir.c
@@ -86,7 +86,7 @@ static irqreturn_t meson_ir_irq(int irqno, void *dev_id)
86{ 86{
87 struct meson_ir *ir = dev_id; 87 struct meson_ir *ir = dev_id;
88 u32 duration, status; 88 u32 duration, status;
89 DEFINE_IR_RAW_EVENT(rawir); 89 struct ir_raw_event rawir = {};
90 90
91 spin_lock(&ir->lock); 91 spin_lock(&ir->lock);
92 92
diff --git a/drivers/media/rc/mtk-cir.c b/drivers/media/rc/mtk-cir.c
index e42efd9d382e..31b7bb431497 100644
--- a/drivers/media/rc/mtk-cir.c
+++ b/drivers/media/rc/mtk-cir.c
@@ -212,7 +212,7 @@ static irqreturn_t mtk_ir_irq(int irqno, void *dev_id)
212 struct mtk_ir *ir = dev_id; 212 struct mtk_ir *ir = dev_id;
213 u8 wid = 0; 213 u8 wid = 0;
214 u32 i, j, val; 214 u32 i, j, val;
215 DEFINE_IR_RAW_EVENT(rawir); 215 struct ir_raw_event rawir = {};
216 216
217 /* 217 /*
218 * Reset decoder state machine explicitly is required 218 * Reset decoder state machine explicitly is required
diff --git a/drivers/media/rc/nuvoton-cir.c b/drivers/media/rc/nuvoton-cir.c
index b8299c9a9744..5c2cd8d2d155 100644
--- a/drivers/media/rc/nuvoton-cir.c
+++ b/drivers/media/rc/nuvoton-cir.c
@@ -737,7 +737,7 @@ static void nvt_dump_rx_buf(struct nvt_dev *nvt)
737 */ 737 */
738static void nvt_process_rx_ir_data(struct nvt_dev *nvt) 738static void nvt_process_rx_ir_data(struct nvt_dev *nvt)
739{ 739{
740 DEFINE_IR_RAW_EVENT(rawir); 740 struct ir_raw_event rawir = {};
741 u8 sample; 741 u8 sample;
742 int i; 742 int i;
743 743
diff --git a/drivers/media/rc/rc-core-priv.h b/drivers/media/rc/rc-core-priv.h
index e847bdad5c51..22b0ec853acc 100644
--- a/drivers/media/rc/rc-core-priv.h
+++ b/drivers/media/rc/rc-core-priv.h
@@ -181,9 +181,10 @@ static inline void init_ir_raw_event_duration(struct ir_raw_event *ev,
181 unsigned int pulse, 181 unsigned int pulse,
182 u32 duration) 182 u32 duration)
183{ 183{
184 init_ir_raw_event(ev); 184 *ev = (struct ir_raw_event) {
185 ev->duration = duration; 185 .duration = duration,
186 ev->pulse = pulse; 186 .pulse = pulse
187 };
187} 188}
188 189
189/** 190/**
diff --git a/drivers/media/rc/rc-ir-raw.c b/drivers/media/rc/rc-ir-raw.c
index e7948908e78c..e10b4644a442 100644
--- a/drivers/media/rc/rc-ir-raw.c
+++ b/drivers/media/rc/rc-ir-raw.c
@@ -102,7 +102,7 @@ EXPORT_SYMBOL_GPL(ir_raw_event_store);
102int ir_raw_event_store_edge(struct rc_dev *dev, bool pulse) 102int ir_raw_event_store_edge(struct rc_dev *dev, bool pulse)
103{ 103{
104 ktime_t now; 104 ktime_t now;
105 DEFINE_IR_RAW_EVENT(ev); 105 struct ir_raw_event ev = {};
106 106
107 if (!dev->raw) 107 if (!dev->raw)
108 return -EINVAL; 108 return -EINVAL;
@@ -210,7 +210,7 @@ void ir_raw_event_set_idle(struct rc_dev *dev, bool idle)
210 if (idle) { 210 if (idle) {
211 dev->raw->this_ev.timeout = true; 211 dev->raw->this_ev.timeout = true;
212 ir_raw_event_store(dev, &dev->raw->this_ev); 212 ir_raw_event_store(dev, &dev->raw->this_ev);
213 init_ir_raw_event(&dev->raw->this_ev); 213 dev->raw->this_ev = (struct ir_raw_event) {};
214 } 214 }
215 215
216 if (dev->s_idle) 216 if (dev->s_idle)
@@ -562,10 +562,10 @@ static void ir_raw_edge_handle(struct timer_list *t)
562 spin_lock_irqsave(&dev->raw->edge_spinlock, flags); 562 spin_lock_irqsave(&dev->raw->edge_spinlock, flags);
563 interval = ktime_sub(ktime_get(), dev->raw->last_event); 563 interval = ktime_sub(ktime_get(), dev->raw->last_event);
564 if (ktime_to_ns(interval) >= dev->timeout) { 564 if (ktime_to_ns(interval) >= dev->timeout) {
565 DEFINE_IR_RAW_EVENT(ev); 565 struct ir_raw_event ev = {
566 566 .timeout = true,
567 ev.timeout = true; 567 .duration = ktime_to_ns(interval)
568 ev.duration = ktime_to_ns(interval); 568 };
569 569
570 ir_raw_event_store(dev, &ev); 570 ir_raw_event_store(dev, &ev);
571 } else { 571 } else {
diff --git a/drivers/media/rc/rc-loopback.c b/drivers/media/rc/rc-loopback.c
index 3822d9ebcb46..b9f9325b8db1 100644
--- a/drivers/media/rc/rc-loopback.c
+++ b/drivers/media/rc/rc-loopback.c
@@ -103,7 +103,7 @@ static int loop_tx_ir(struct rc_dev *dev, unsigned *txbuf, unsigned count)
103 struct loopback_dev *lodev = dev->priv; 103 struct loopback_dev *lodev = dev->priv;
104 u32 rxmask; 104 u32 rxmask;
105 unsigned i; 105 unsigned i;
106 DEFINE_IR_RAW_EVENT(rawir); 106 struct ir_raw_event rawir = {};
107 107
108 if (lodev->txcarrier < lodev->rxcarriermin || 108 if (lodev->txcarrier < lodev->rxcarriermin ||
109 lodev->txcarrier > lodev->rxcarriermax) { 109 lodev->txcarrier > lodev->rxcarriermax) {
diff --git a/drivers/media/rc/redrat3.c b/drivers/media/rc/redrat3.c
index 6bfc24885b5c..08c51ffd74a0 100644
--- a/drivers/media/rc/redrat3.c
+++ b/drivers/media/rc/redrat3.c
@@ -348,7 +348,7 @@ static u32 redrat3_us_to_len(u32 microsec)
348 348
349static void redrat3_process_ir_data(struct redrat3_dev *rr3) 349static void redrat3_process_ir_data(struct redrat3_dev *rr3)
350{ 350{
351 DEFINE_IR_RAW_EVENT(rawir); 351 struct ir_raw_event rawir = {};
352 struct device *dev; 352 struct device *dev;
353 unsigned int i, sig_size, single_len, offset, val; 353 unsigned int i, sig_size, single_len, offset, val;
354 u32 mod_freq; 354 u32 mod_freq;
@@ -358,10 +358,10 @@ static void redrat3_process_ir_data(struct redrat3_dev *rr3)
358 mod_freq = redrat3_val_to_mod_freq(&rr3->irdata); 358 mod_freq = redrat3_val_to_mod_freq(&rr3->irdata);
359 dev_dbg(dev, "Got mod_freq of %u\n", mod_freq); 359 dev_dbg(dev, "Got mod_freq of %u\n", mod_freq);
360 if (mod_freq && rr3->wideband) { 360 if (mod_freq && rr3->wideband) {
361 DEFINE_IR_RAW_EVENT(ev); 361 struct ir_raw_event ev = {
362 362 .carrier_report = 1,
363 ev.carrier_report = 1; 363 .carrier = mod_freq
364 ev.carrier = mod_freq; 364 };
365 365
366 ir_raw_event_store(rr3->rc, &ev); 366 ir_raw_event_store(rr3->rc, &ev);
367 } 367 }
diff --git a/drivers/media/rc/serial_ir.c b/drivers/media/rc/serial_ir.c
index 8bf5637b3a69..ffe2c672d105 100644
--- a/drivers/media/rc/serial_ir.c
+++ b/drivers/media/rc/serial_ir.c
@@ -273,7 +273,7 @@ static void frbwrite(unsigned int l, bool is_pulse)
273{ 273{
274 /* simple noise filter */ 274 /* simple noise filter */
275 static unsigned int ptr, pulse, space; 275 static unsigned int ptr, pulse, space;
276 DEFINE_IR_RAW_EVENT(ev); 276 struct ir_raw_event ev = {};
277 277
278 if (ptr > 0 && is_pulse) { 278 if (ptr > 0 && is_pulse) {
279 pulse += l; 279 pulse += l;
@@ -472,10 +472,10 @@ static int hardware_init_port(void)
472 472
473static void serial_ir_timeout(struct timer_list *unused) 473static void serial_ir_timeout(struct timer_list *unused)
474{ 474{
475 DEFINE_IR_RAW_EVENT(ev); 475 struct ir_raw_event ev = {
476 476 .timeout = true,
477 ev.timeout = true; 477 .duration = serial_ir.rcdev->timeout
478 ev.duration = serial_ir.rcdev->timeout; 478 };
479 ir_raw_event_store_with_filter(serial_ir.rcdev, &ev); 479 ir_raw_event_store_with_filter(serial_ir.rcdev, &ev);
480 ir_raw_event_handle(serial_ir.rcdev); 480 ir_raw_event_handle(serial_ir.rcdev);
481} 481}
diff --git a/drivers/media/rc/sir_ir.c b/drivers/media/rc/sir_ir.c
index 9ee2c9196b4d..c8951650a368 100644
--- a/drivers/media/rc/sir_ir.c
+++ b/drivers/media/rc/sir_ir.c
@@ -96,7 +96,7 @@ static int sir_tx_ir(struct rc_dev *dev, unsigned int *tx_buf,
96 96
97static void add_read_queue(int flag, unsigned long val) 97static void add_read_queue(int flag, unsigned long val)
98{ 98{
99 DEFINE_IR_RAW_EVENT(ev); 99 struct ir_raw_event ev = {};
100 100
101 pr_debug("add flag %d with val %lu\n", flag, val); 101 pr_debug("add flag %d with val %lu\n", flag, val);
102 102
diff --git a/drivers/media/rc/st_rc.c b/drivers/media/rc/st_rc.c
index c855b177103c..15de3ae166a2 100644
--- a/drivers/media/rc/st_rc.c
+++ b/drivers/media/rc/st_rc.c
@@ -67,8 +67,7 @@ struct st_rc_device {
67 67
68static void st_rc_send_lirc_timeout(struct rc_dev *rdev) 68static void st_rc_send_lirc_timeout(struct rc_dev *rdev)
69{ 69{
70 DEFINE_IR_RAW_EVENT(ev); 70 struct ir_raw_event ev = { .timeout = true, .duration = rdev->timeout };
71 ev.timeout = true;
72 ir_raw_event_store(rdev, &ev); 71 ir_raw_event_store(rdev, &ev);
73} 72}
74 73
@@ -101,7 +100,7 @@ static irqreturn_t st_rc_rx_interrupt(int irq, void *data)
101 struct st_rc_device *dev = data; 100 struct st_rc_device *dev = data;
102 int last_symbol = 0; 101 int last_symbol = 0;
103 u32 status, int_status; 102 u32 status, int_status;
104 DEFINE_IR_RAW_EVENT(ev); 103 struct ir_raw_event ev = {};
105 104
106 if (dev->irq_wake) 105 if (dev->irq_wake)
107 pm_wakeup_event(dev->dev, 0); 106 pm_wakeup_event(dev->dev, 0);
diff --git a/drivers/media/rc/streamzap.c b/drivers/media/rc/streamzap.c
index c3e183aabfbe..a490d26bd170 100644
--- a/drivers/media/rc/streamzap.c
+++ b/drivers/media/rc/streamzap.c
@@ -130,7 +130,7 @@ static void sz_push(struct streamzap_ir *sz, struct ir_raw_event rawir)
130static void sz_push_full_pulse(struct streamzap_ir *sz, 130static void sz_push_full_pulse(struct streamzap_ir *sz,
131 unsigned char value) 131 unsigned char value)
132{ 132{
133 DEFINE_IR_RAW_EVENT(rawir); 133 struct ir_raw_event rawir = {};
134 134
135 if (sz->idle) { 135 if (sz->idle) {
136 int delta; 136 int delta;
@@ -175,7 +175,7 @@ static void sz_push_half_pulse(struct streamzap_ir *sz,
175static void sz_push_full_space(struct streamzap_ir *sz, 175static void sz_push_full_space(struct streamzap_ir *sz,
176 unsigned char value) 176 unsigned char value)
177{ 177{
178 DEFINE_IR_RAW_EVENT(rawir); 178 struct ir_raw_event rawir = {};
179 179
180 rawir.pulse = false; 180 rawir.pulse = false;
181 rawir.duration = ((int) value) * SZ_RESOLUTION; 181 rawir.duration = ((int) value) * SZ_RESOLUTION;
@@ -249,10 +249,10 @@ static void streamzap_callback(struct urb *urb)
249 break; 249 break;
250 case FullSpace: 250 case FullSpace:
251 if (sz->buf_in[i] == SZ_TIMEOUT) { 251 if (sz->buf_in[i] == SZ_TIMEOUT) {
252 DEFINE_IR_RAW_EVENT(rawir); 252 struct ir_raw_event rawir = {
253 253 .pulse = false,
254 rawir.pulse = false; 254 .duration = sz->rdev->timeout
255 rawir.duration = sz->rdev->timeout; 255 };
256 sz->idle = true; 256 sz->idle = true;
257 if (sz->timeout_enabled) 257 if (sz->timeout_enabled)
258 sz_push(sz, rawir); 258 sz_push(sz, rawir);
diff --git a/drivers/media/rc/sunxi-cir.c b/drivers/media/rc/sunxi-cir.c
index f500cea228a9..307e44714ea0 100644
--- a/drivers/media/rc/sunxi-cir.c
+++ b/drivers/media/rc/sunxi-cir.c
@@ -99,7 +99,7 @@ static irqreturn_t sunxi_ir_irq(int irqno, void *dev_id)
99 unsigned char dt; 99 unsigned char dt;
100 unsigned int cnt, rc; 100 unsigned int cnt, rc;
101 struct sunxi_ir *ir = dev_id; 101 struct sunxi_ir *ir = dev_id;
102 DEFINE_IR_RAW_EVENT(rawir); 102 struct ir_raw_event rawir = {};
103 103
104 spin_lock(&ir->ir_lock); 104 spin_lock(&ir->ir_lock);
105 105
diff --git a/drivers/media/rc/ttusbir.c b/drivers/media/rc/ttusbir.c
index aafea3c5170b..8d4b56d057ae 100644
--- a/drivers/media/rc/ttusbir.c
+++ b/drivers/media/rc/ttusbir.c
@@ -117,12 +117,10 @@ static void ttusbir_bulk_complete(struct urb *urb)
117 */ 117 */
118static void ttusbir_process_ir_data(struct ttusbir *tt, uint8_t *buf) 118static void ttusbir_process_ir_data(struct ttusbir *tt, uint8_t *buf)
119{ 119{
120 struct ir_raw_event rawir; 120 struct ir_raw_event rawir = {};
121 unsigned i, v, b; 121 unsigned i, v, b;
122 bool event = false; 122 bool event = false;
123 123
124 init_ir_raw_event(&rawir);
125
126 for (i = 0; i < 128; i++) { 124 for (i = 0; i < 128; i++) {
127 v = buf[i] & 0xfe; 125 v = buf[i] & 0xfe;
128 switch (v) { 126 switch (v) {
diff --git a/drivers/media/rc/winbond-cir.c b/drivers/media/rc/winbond-cir.c
index 851acba9b436..0f07a2c384fa 100644
--- a/drivers/media/rc/winbond-cir.c
+++ b/drivers/media/rc/winbond-cir.c
@@ -322,11 +322,11 @@ wbcir_carrier_report(struct wbcir_data *data)
322 inb(data->ebase + WBCIR_REG_ECEIR_CNT_HI) << 8; 322 inb(data->ebase + WBCIR_REG_ECEIR_CNT_HI) << 8;
323 323
324 if (counter > 0 && counter < 0xffff) { 324 if (counter > 0 && counter < 0xffff) {
325 DEFINE_IR_RAW_EVENT(ev); 325 struct ir_raw_event ev = {
326 326 .carrier_report = 1,
327 ev.carrier_report = 1; 327 .carrier = DIV_ROUND_CLOSEST(counter * 1000000u,
328 ev.carrier = DIV_ROUND_CLOSEST(counter * 1000000u, 328 data->pulse_duration)
329 data->pulse_duration); 329 };
330 330
331 ir_raw_event_store(data->dev, &ev); 331 ir_raw_event_store(data->dev, &ev);
332 } 332 }
@@ -362,7 +362,7 @@ static void
362wbcir_irq_rx(struct wbcir_data *data, struct pnp_dev *device) 362wbcir_irq_rx(struct wbcir_data *data, struct pnp_dev *device)
363{ 363{
364 u8 irdata; 364 u8 irdata;
365 DEFINE_IR_RAW_EVENT(rawir); 365 struct ir_raw_event rawir = {};
366 unsigned duration; 366 unsigned duration;
367 367
368 /* Since RXHDLEV is set, at least 8 bytes are in the FIFO */ 368 /* Since RXHDLEV is set, at least 8 bytes are in the FIFO */
diff --git a/drivers/media/usb/au0828/au0828-input.c b/drivers/media/usb/au0828/au0828-input.c
index 832ed9f25784..4befa920246c 100644
--- a/drivers/media/usb/au0828/au0828-input.c
+++ b/drivers/media/usb/au0828/au0828-input.c
@@ -113,7 +113,7 @@ static int au8522_rc_andor(struct au0828_rc *ir, u16 reg, u8 mask, u8 value)
113static int au0828_get_key_au8522(struct au0828_rc *ir) 113static int au0828_get_key_au8522(struct au0828_rc *ir)
114{ 114{
115 unsigned char buf[40]; 115 unsigned char buf[40];
116 DEFINE_IR_RAW_EVENT(rawir); 116 struct ir_raw_event rawir = {};
117 int i, j, rc; 117 int i, j, rc;
118 int prv_bit, bit, width; 118 int prv_bit, bit, width;
119 bool first = true; 119 bool first = true;
@@ -167,7 +167,6 @@ static int au0828_get_key_au8522(struct au0828_rc *ir)
167 if (first) { 167 if (first) {
168 first = false; 168 first = false;
169 169
170 init_ir_raw_event(&rawir);
171 rawir.pulse = true; 170 rawir.pulse = true;
172 if (width > NEC_START_SPACE - 2 && 171 if (width > NEC_START_SPACE - 2 &&
173 width < NEC_START_SPACE + 2) { 172 width < NEC_START_SPACE + 2) {
@@ -186,7 +185,6 @@ static int au0828_get_key_au8522(struct au0828_rc *ir)
186 ir_raw_event_store(ir->rc, &rawir); 185 ir_raw_event_store(ir->rc, &rawir);
187 } 186 }
188 187
189 init_ir_raw_event(&rawir);
190 rawir.pulse = prv_bit ? false : true; 188 rawir.pulse = prv_bit ? false : true;
191 rawir.duration = AU8522_UNIT * width; 189 rawir.duration = AU8522_UNIT * width;
192 dprintk(16, "Storing %s with duration %d", 190 dprintk(16, "Storing %s with duration %d",
@@ -199,7 +197,6 @@ static int au0828_get_key_au8522(struct au0828_rc *ir)
199 } 197 }
200 } 198 }
201 199
202 init_ir_raw_event(&rawir);
203 rawir.pulse = prv_bit ? false : true; 200 rawir.pulse = prv_bit ? false : true;
204 rawir.duration = AU8522_UNIT * width; 201 rawir.duration = AU8522_UNIT * width;
205 dprintk(16, "Storing end %s with duration %d", 202 dprintk(16, "Storing end %s with duration %d",
diff --git a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
index 33f76a347baa..8a83b10e50e0 100644
--- a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
+++ b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
@@ -1685,7 +1685,7 @@ static int rtl2832u_rc_query(struct dvb_usb_device *d)
1685{ 1685{
1686 int ret, i, len; 1686 int ret, i, len;
1687 struct rtl28xxu_dev *dev = d->priv; 1687 struct rtl28xxu_dev *dev = d->priv;
1688 struct ir_raw_event ev; 1688 struct ir_raw_event ev = {};
1689 u8 buf[128]; 1689 u8 buf[128];
1690 static const struct rtl28xxu_reg_val_mask refresh_tab[] = { 1690 static const struct rtl28xxu_reg_val_mask refresh_tab[] = {
1691 {IR_RX_IF, 0x03, 0xff}, 1691 {IR_RX_IF, 0x03, 0xff},
@@ -1751,8 +1751,6 @@ static int rtl2832u_rc_query(struct dvb_usb_device *d)
1751 } 1751 }
1752 1752
1753 /* pass data to Kernel IR decoder */ 1753 /* pass data to Kernel IR decoder */
1754 init_ir_raw_event(&ev);
1755
1756 for (i = 0; i < len; i++) { 1754 for (i = 0; i < len; i++) {
1757 ev.pulse = buf[i] >> 7; 1755 ev.pulse = buf[i] >> 7;
1758 ev.duration = 50800 * (buf[i] & 0x7f); 1756 ev.duration = 50800 * (buf[i] & 0x7f);
diff --git a/include/media/rc-core.h b/include/media/rc-core.h
index 61571773a98d..c0cfbe16a854 100644
--- a/include/media/rc-core.h
+++ b/include/media/rc-core.h
@@ -317,13 +317,6 @@ struct ir_raw_event {
317 unsigned carrier_report:1; 317 unsigned carrier_report:1;
318}; 318};
319 319
320#define DEFINE_IR_RAW_EVENT(event) struct ir_raw_event event = {}
321
322static inline void init_ir_raw_event(struct ir_raw_event *ev)
323{
324 memset(ev, 0, sizeof(*ev));
325}
326
327#define IR_DEFAULT_TIMEOUT MS_TO_NS(125) 320#define IR_DEFAULT_TIMEOUT MS_TO_NS(125)
328#define IR_MAX_DURATION 500000000 /* 500 ms */ 321#define IR_MAX_DURATION 500000000 /* 500 ms */
329#define US_TO_NS(usec) ((usec) * 1000) 322#define US_TO_NS(usec) ((usec) * 1000)
@@ -344,9 +337,7 @@ int ir_raw_encode_carrier(enum rc_proto protocol);
344 337
345static inline void ir_raw_event_reset(struct rc_dev *dev) 338static inline void ir_raw_event_reset(struct rc_dev *dev)
346{ 339{
347 struct ir_raw_event ev = { .reset = true }; 340 ir_raw_event_store(dev, &((struct ir_raw_event) { .reset = true }));
348
349 ir_raw_event_store(dev, &ev);
350 dev->idle = true; 341 dev->idle = true;
351 ir_raw_event_handle(dev); 342 ir_raw_event_handle(dev);
352} 343}