Commit 0f7499fd authored by Andi Shyti's avatar Andi Shyti Committed by Mauro Carvalho Chehab

[media] rc-main: assign driver type during allocation

The driver type can be assigned immediately when an RC device
requests to the framework to allocate the device.

This is an 'enum rc_driver_type' data type and specifies whether
the device is a raw receiver or scancode receiver. The type will
be given as parameter to the rc_allocate_device device.

Change accordingly all the drivers calling rc_allocate_device()
so that the device type is specified during the rc device
allocation. Whenever the device type is not specified, it will be
set as RC_DRIVER_SCANCODE which was the default '0' value.
Suggested-by: default avatarSean Young <sean@mess.org>
Signed-off-by: default avatarAndi Shyti <andi.shyti@samsung.com>
Signed-off-by: default avatarSean Young <sean@mess.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent 97c12974
...@@ -108,12 +108,11 @@ int picolcd_init_cir(struct picolcd_data *data, struct hid_report *report) ...@@ -108,12 +108,11 @@ int picolcd_init_cir(struct picolcd_data *data, struct hid_report *report)
struct rc_dev *rdev; struct rc_dev *rdev;
int ret = 0; int ret = 0;
rdev = rc_allocate_device(); rdev = rc_allocate_device(RC_DRIVER_IR_RAW);
if (!rdev) if (!rdev)
return -ENOMEM; return -ENOMEM;
rdev->priv = data; rdev->priv = data;
rdev->driver_type = RC_DRIVER_IR_RAW;
rdev->allowed_protocols = RC_BIT_ALL_IR_DECODER; rdev->allowed_protocols = RC_BIT_ALL_IR_DECODER;
rdev->open = picolcd_cir_open; rdev->open = picolcd_cir_open;
rdev->close = picolcd_cir_close; rdev->close = picolcd_cir_close;
......
...@@ -239,7 +239,7 @@ struct cec_adapter *cec_allocate_adapter(const struct cec_adap_ops *ops, ...@@ -239,7 +239,7 @@ struct cec_adapter *cec_allocate_adapter(const struct cec_adap_ops *ops,
#if IS_REACHABLE(CONFIG_RC_CORE) #if IS_REACHABLE(CONFIG_RC_CORE)
/* Prepare the RC input device */ /* Prepare the RC input device */
adap->rc = rc_allocate_device(); adap->rc = rc_allocate_device(RC_DRIVER_SCANCODE);
if (!adap->rc) { if (!adap->rc) {
pr_err("cec-%s: failed to allocate memory for rc_dev\n", pr_err("cec-%s: failed to allocate memory for rc_dev\n",
name); name);
...@@ -259,7 +259,6 @@ struct cec_adapter *cec_allocate_adapter(const struct cec_adap_ops *ops, ...@@ -259,7 +259,6 @@ struct cec_adapter *cec_allocate_adapter(const struct cec_adap_ops *ops,
adap->rc->input_id.vendor = 0; adap->rc->input_id.vendor = 0;
adap->rc->input_id.product = 0; adap->rc->input_id.product = 0;
adap->rc->input_id.version = 1; adap->rc->input_id.version = 1;
adap->rc->driver_type = RC_DRIVER_SCANCODE;
adap->rc->driver_name = CEC_NAME; adap->rc->driver_name = CEC_NAME;
adap->rc->allowed_protocols = RC_BIT_CEC; adap->rc->allowed_protocols = RC_BIT_CEC;
adap->rc->priv = adap; adap->rc->priv = adap;
......
...@@ -58,7 +58,7 @@ int sms_ir_init(struct smscore_device_t *coredev) ...@@ -58,7 +58,7 @@ int sms_ir_init(struct smscore_device_t *coredev)
struct rc_dev *dev; struct rc_dev *dev;
pr_debug("Allocating rc device\n"); pr_debug("Allocating rc device\n");
dev = rc_allocate_device(); dev = rc_allocate_device(RC_DRIVER_IR_RAW);
if (!dev) if (!dev)
return -ENOMEM; return -ENOMEM;
...@@ -86,7 +86,6 @@ int sms_ir_init(struct smscore_device_t *coredev) ...@@ -86,7 +86,6 @@ int sms_ir_init(struct smscore_device_t *coredev)
#endif #endif
dev->priv = coredev; dev->priv = coredev;
dev->driver_type = RC_DRIVER_IR_RAW;
dev->allowed_protocols = RC_BIT_ALL_IR_DECODER; dev->allowed_protocols = RC_BIT_ALL_IR_DECODER;
dev->map_name = sms_get_board(board_id)->rc_codes; dev->map_name = sms_get_board(board_id)->rc_codes;
dev->driver_name = MODULE_NAME; dev->driver_name = MODULE_NAME;
......
...@@ -424,7 +424,7 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id) ...@@ -424,7 +424,7 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
* If platform_data doesn't specify rc_dev, initialize it * If platform_data doesn't specify rc_dev, initialize it
* internally * internally
*/ */
rc = rc_allocate_device(); rc = rc_allocate_device(RC_DRIVER_SCANCODE);
if (!rc) if (!rc)
return -ENOMEM; return -ENOMEM;
} }
......
...@@ -420,7 +420,7 @@ int bttv_input_init(struct bttv *btv) ...@@ -420,7 +420,7 @@ int bttv_input_init(struct bttv *btv)
return -ENODEV; return -ENODEV;
ir = kzalloc(sizeof(*ir),GFP_KERNEL); ir = kzalloc(sizeof(*ir),GFP_KERNEL);
rc = rc_allocate_device(); rc = rc_allocate_device(RC_DRIVER_SCANCODE);
if (!ir || !rc) if (!ir || !rc)
goto err_out_free; goto err_out_free;
......
...@@ -267,7 +267,6 @@ int cx23885_input_init(struct cx23885_dev *dev) ...@@ -267,7 +267,6 @@ int cx23885_input_init(struct cx23885_dev *dev)
struct cx23885_kernel_ir *kernel_ir; struct cx23885_kernel_ir *kernel_ir;
struct rc_dev *rc; struct rc_dev *rc;
char *rc_map; char *rc_map;
enum rc_driver_type driver_type;
u64 allowed_protos; u64 allowed_protos;
int ret; int ret;
...@@ -285,28 +284,24 @@ int cx23885_input_init(struct cx23885_dev *dev) ...@@ -285,28 +284,24 @@ int cx23885_input_init(struct cx23885_dev *dev)
case CX23885_BOARD_HAUPPAUGE_HVR1290: case CX23885_BOARD_HAUPPAUGE_HVR1290:
case CX23885_BOARD_HAUPPAUGE_HVR1250: case CX23885_BOARD_HAUPPAUGE_HVR1250:
/* Integrated CX2388[58] IR controller */ /* Integrated CX2388[58] IR controller */
driver_type = RC_DRIVER_IR_RAW;
allowed_protos = RC_BIT_ALL_IR_DECODER; allowed_protos = RC_BIT_ALL_IR_DECODER;
/* The grey Hauppauge RC-5 remote */ /* The grey Hauppauge RC-5 remote */
rc_map = RC_MAP_HAUPPAUGE; rc_map = RC_MAP_HAUPPAUGE;
break; break;
case CX23885_BOARD_TERRATEC_CINERGY_T_PCIE_DUAL: case CX23885_BOARD_TERRATEC_CINERGY_T_PCIE_DUAL:
/* Integrated CX23885 IR controller */ /* Integrated CX23885 IR controller */
driver_type = RC_DRIVER_IR_RAW;
allowed_protos = RC_BIT_ALL_IR_DECODER; allowed_protos = RC_BIT_ALL_IR_DECODER;
/* The grey Terratec remote with orange buttons */ /* The grey Terratec remote with orange buttons */
rc_map = RC_MAP_NEC_TERRATEC_CINERGY_XS; rc_map = RC_MAP_NEC_TERRATEC_CINERGY_XS;
break; break;
case CX23885_BOARD_TEVII_S470: case CX23885_BOARD_TEVII_S470:
/* Integrated CX23885 IR controller */ /* Integrated CX23885 IR controller */
driver_type = RC_DRIVER_IR_RAW;
allowed_protos = RC_BIT_ALL_IR_DECODER; allowed_protos = RC_BIT_ALL_IR_DECODER;
/* A guess at the remote */ /* A guess at the remote */
rc_map = RC_MAP_TEVII_NEC; rc_map = RC_MAP_TEVII_NEC;
break; break;
case CX23885_BOARD_MYGICA_X8507: case CX23885_BOARD_MYGICA_X8507:
/* Integrated CX23885 IR controller */ /* Integrated CX23885 IR controller */
driver_type = RC_DRIVER_IR_RAW;
allowed_protos = RC_BIT_ALL_IR_DECODER; allowed_protos = RC_BIT_ALL_IR_DECODER;
/* A guess at the remote */ /* A guess at the remote */
rc_map = RC_MAP_TOTAL_MEDIA_IN_HAND_02; rc_map = RC_MAP_TOTAL_MEDIA_IN_HAND_02;
...@@ -314,7 +309,6 @@ int cx23885_input_init(struct cx23885_dev *dev) ...@@ -314,7 +309,6 @@ int cx23885_input_init(struct cx23885_dev *dev)
case CX23885_BOARD_TBS_6980: case CX23885_BOARD_TBS_6980:
case CX23885_BOARD_TBS_6981: case CX23885_BOARD_TBS_6981:
/* Integrated CX23885 IR controller */ /* Integrated CX23885 IR controller */
driver_type = RC_DRIVER_IR_RAW;
allowed_protos = RC_BIT_ALL_IR_DECODER; allowed_protos = RC_BIT_ALL_IR_DECODER;
/* A guess at the remote */ /* A guess at the remote */
rc_map = RC_MAP_TBS_NEC; rc_map = RC_MAP_TBS_NEC;
...@@ -326,13 +320,11 @@ int cx23885_input_init(struct cx23885_dev *dev) ...@@ -326,13 +320,11 @@ int cx23885_input_init(struct cx23885_dev *dev)
case CX23885_BOARD_DVBSKY_S952: case CX23885_BOARD_DVBSKY_S952:
case CX23885_BOARD_DVBSKY_T982: case CX23885_BOARD_DVBSKY_T982:
/* Integrated CX23885 IR controller */ /* Integrated CX23885 IR controller */
driver_type = RC_DRIVER_IR_RAW;
allowed_protos = RC_BIT_ALL_IR_DECODER; allowed_protos = RC_BIT_ALL_IR_DECODER;
rc_map = RC_MAP_DVBSKY; rc_map = RC_MAP_DVBSKY;
break; break;
case CX23885_BOARD_TT_CT2_4500_CI: case CX23885_BOARD_TT_CT2_4500_CI:
/* Integrated CX23885 IR controller */ /* Integrated CX23885 IR controller */
driver_type = RC_DRIVER_IR_RAW;
allowed_protos = RC_BIT_ALL_IR_DECODER; allowed_protos = RC_BIT_ALL_IR_DECODER;
rc_map = RC_MAP_TT_1500; rc_map = RC_MAP_TT_1500;
break; break;
...@@ -352,7 +344,7 @@ int cx23885_input_init(struct cx23885_dev *dev) ...@@ -352,7 +344,7 @@ int cx23885_input_init(struct cx23885_dev *dev)
pci_name(dev->pci)); pci_name(dev->pci));
/* input device */ /* input device */
rc = rc_allocate_device(); rc = rc_allocate_device(RC_DRIVER_IR_RAW);
if (!rc) { if (!rc) {
ret = -ENOMEM; ret = -ENOMEM;
goto err_out_free; goto err_out_free;
...@@ -371,7 +363,6 @@ int cx23885_input_init(struct cx23885_dev *dev) ...@@ -371,7 +363,6 @@ int cx23885_input_init(struct cx23885_dev *dev)
rc->input_id.product = dev->pci->device; rc->input_id.product = dev->pci->device;
} }
rc->dev.parent = &dev->pci->dev; rc->dev.parent = &dev->pci->dev;
rc->driver_type = driver_type;
rc->allowed_protocols = allowed_protos; rc->allowed_protocols = allowed_protos;
rc->priv = kernel_ir; rc->priv = kernel_ir;
rc->open = cx23885_input_ir_open; rc->open = cx23885_input_ir_open;
......
...@@ -274,7 +274,7 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci) ...@@ -274,7 +274,7 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
*/ */
ir = kzalloc(sizeof(*ir), GFP_KERNEL); ir = kzalloc(sizeof(*ir), GFP_KERNEL);
dev = rc_allocate_device(); dev = rc_allocate_device(RC_DRIVER_IR_RAW);
if (!ir || !dev) if (!ir || !dev)
goto err_out_free; goto err_out_free;
...@@ -484,7 +484,6 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci) ...@@ -484,7 +484,6 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
dev->scancode_mask = hardware_mask; dev->scancode_mask = hardware_mask;
if (ir->sampling) { if (ir->sampling) {
dev->driver_type = RC_DRIVER_IR_RAW;
dev->timeout = 10 * 1000 * 1000; /* 10 ms */ dev->timeout = 10 * 1000 * 1000; /* 10 ms */
} else { } else {
dev->driver_type = RC_DRIVER_SCANCODE; dev->driver_type = RC_DRIVER_SCANCODE;
......
...@@ -739,7 +739,7 @@ static int dm1105_ir_init(struct dm1105_dev *dm1105) ...@@ -739,7 +739,7 @@ static int dm1105_ir_init(struct dm1105_dev *dm1105)
struct rc_dev *dev; struct rc_dev *dev;
int err = -ENOMEM; int err = -ENOMEM;
dev = rc_allocate_device(); dev = rc_allocate_device(RC_DRIVER_SCANCODE);
if (!dev) if (!dev)
return -ENOMEM; return -ENOMEM;
...@@ -748,7 +748,6 @@ static int dm1105_ir_init(struct dm1105_dev *dm1105) ...@@ -748,7 +748,6 @@ static int dm1105_ir_init(struct dm1105_dev *dm1105)
dev->driver_name = MODULE_NAME; dev->driver_name = MODULE_NAME;
dev->map_name = RC_MAP_DM1105_NEC; dev->map_name = RC_MAP_DM1105_NEC;
dev->driver_type = RC_DRIVER_SCANCODE;
dev->input_name = "DVB on-card IR receiver"; dev->input_name = "DVB on-card IR receiver";
dev->input_phys = dm1105->ir.input_phys; dev->input_phys = dm1105->ir.input_phys;
dev->input_id.bustype = BUS_PCI; dev->input_id.bustype = BUS_PCI;
......
...@@ -39,7 +39,7 @@ int mantis_input_init(struct mantis_pci *mantis) ...@@ -39,7 +39,7 @@ int mantis_input_init(struct mantis_pci *mantis)
struct rc_dev *dev; struct rc_dev *dev;
int err; int err;
dev = rc_allocate_device(); dev = rc_allocate_device(RC_DRIVER_SCANCODE);
if (!dev) { if (!dev) {
dprintk(MANTIS_ERROR, 1, "Remote device allocation failed"); dprintk(MANTIS_ERROR, 1, "Remote device allocation failed");
err = -ENOMEM; err = -ENOMEM;
......
...@@ -842,7 +842,7 @@ int saa7134_input_init1(struct saa7134_dev *dev) ...@@ -842,7 +842,7 @@ int saa7134_input_init1(struct saa7134_dev *dev)
} }
ir = kzalloc(sizeof(*ir), GFP_KERNEL); ir = kzalloc(sizeof(*ir), GFP_KERNEL);
rc = rc_allocate_device(); rc = rc_allocate_device(RC_DRIVER_SCANCODE);
if (!ir || !rc) { if (!ir || !rc) {
err = -ENOMEM; err = -ENOMEM;
goto err_out_free; goto err_out_free;
......
...@@ -183,7 +183,7 @@ int smi_ir_init(struct smi_dev *dev) ...@@ -183,7 +183,7 @@ int smi_ir_init(struct smi_dev *dev)
struct rc_dev *rc_dev; struct rc_dev *rc_dev;
struct smi_rc *ir = &dev->ir; struct smi_rc *ir = &dev->ir;
rc_dev = rc_allocate_device(); rc_dev = rc_allocate_device(RC_DRIVER_SCANCODE);
if (!rc_dev) if (!rc_dev)
return -ENOMEM; return -ENOMEM;
...@@ -202,7 +202,6 @@ int smi_ir_init(struct smi_dev *dev) ...@@ -202,7 +202,6 @@ int smi_ir_init(struct smi_dev *dev)
rc_dev->input_id.product = dev->pci_dev->subsystem_device; rc_dev->input_id.product = dev->pci_dev->subsystem_device;
rc_dev->dev.parent = &dev->pci_dev->dev; rc_dev->dev.parent = &dev->pci_dev->dev;
rc_dev->driver_type = RC_DRIVER_SCANCODE;
rc_dev->map_name = dev->info->rc_map; rc_dev->map_name = dev->info->rc_map;
ir->rc_dev = rc_dev; ir->rc_dev = rc_dev;
......
...@@ -174,7 +174,7 @@ static int msp430_ir_init(struct budget_ci *budget_ci) ...@@ -174,7 +174,7 @@ static int msp430_ir_init(struct budget_ci *budget_ci)
struct rc_dev *dev; struct rc_dev *dev;
int error; int error;
dev = rc_allocate_device(); dev = rc_allocate_device(RC_DRIVER_SCANCODE);
if (!dev) { if (!dev) {
printk(KERN_ERR "budget_ci: IR interface initialisation failed\n"); printk(KERN_ERR "budget_ci: IR interface initialisation failed\n");
return -ENOMEM; return -ENOMEM;
......
...@@ -760,7 +760,6 @@ static void ati_remote_rc_init(struct ati_remote *ati_remote) ...@@ -760,7 +760,6 @@ static void ati_remote_rc_init(struct ati_remote *ati_remote)
struct rc_dev *rdev = ati_remote->rdev; struct rc_dev *rdev = ati_remote->rdev;
rdev->priv = ati_remote; rdev->priv = ati_remote;
rdev->driver_type = RC_DRIVER_SCANCODE;
rdev->allowed_protocols = RC_BIT_OTHER; rdev->allowed_protocols = RC_BIT_OTHER;
rdev->driver_name = "ati_remote"; rdev->driver_name = "ati_remote";
...@@ -847,7 +846,7 @@ static int ati_remote_probe(struct usb_interface *interface, ...@@ -847,7 +846,7 @@ static int ati_remote_probe(struct usb_interface *interface,
} }
ati_remote = kzalloc(sizeof (struct ati_remote), GFP_KERNEL); ati_remote = kzalloc(sizeof (struct ati_remote), GFP_KERNEL);
rc_dev = rc_allocate_device(); rc_dev = rc_allocate_device(RC_DRIVER_SCANCODE);
if (!ati_remote || !rc_dev) if (!ati_remote || !rc_dev)
goto exit_free_dev_rdev; goto exit_free_dev_rdev;
......
...@@ -1007,7 +1007,7 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id) ...@@ -1007,7 +1007,7 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id)
/* allocate memory */ /* allocate memory */
dev = kzalloc(sizeof(struct ene_device), GFP_KERNEL); dev = kzalloc(sizeof(struct ene_device), GFP_KERNEL);
rdev = rc_allocate_device(); rdev = rc_allocate_device(RC_DRIVER_IR_RAW);
if (!dev || !rdev) if (!dev || !rdev)
goto exit_free_dev_rdev; goto exit_free_dev_rdev;
...@@ -1053,7 +1053,6 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id) ...@@ -1053,7 +1053,6 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id)
if (!dev->hw_learning_and_tx_capable) if (!dev->hw_learning_and_tx_capable)
learning_mode_force = false; learning_mode_force = false;
rdev->driver_type = RC_DRIVER_IR_RAW;
rdev->allowed_protocols = RC_BIT_ALL_IR_DECODER; rdev->allowed_protocols = RC_BIT_ALL_IR_DECODER;
rdev->priv = dev; rdev->priv = dev;
rdev->open = ene_open; rdev->open = ene_open;
......
...@@ -487,7 +487,7 @@ static int fintek_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id ...@@ -487,7 +487,7 @@ static int fintek_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id
return ret; return ret;
/* input device for IR remote (and tx) */ /* input device for IR remote (and tx) */
rdev = rc_allocate_device(); rdev = rc_allocate_device(RC_DRIVER_IR_RAW);
if (!rdev) if (!rdev)
goto exit_free_dev_rdev; goto exit_free_dev_rdev;
...@@ -529,7 +529,6 @@ static int fintek_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id ...@@ -529,7 +529,6 @@ static int fintek_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id
/* Set up the rc device */ /* Set up the rc device */
rdev->priv = fintek; rdev->priv = fintek;
rdev->driver_type = RC_DRIVER_IR_RAW;
rdev->allowed_protocols = RC_BIT_ALL_IR_DECODER; rdev->allowed_protocols = RC_BIT_ALL_IR_DECODER;
rdev->open = fintek_open; rdev->open = fintek_open;
rdev->close = fintek_close; rdev->close = fintek_close;
......
...@@ -143,14 +143,13 @@ static int gpio_ir_recv_probe(struct platform_device *pdev) ...@@ -143,14 +143,13 @@ static int gpio_ir_recv_probe(struct platform_device *pdev)
if (!gpio_dev) if (!gpio_dev)
return -ENOMEM; return -ENOMEM;
rcdev = rc_allocate_device(); rcdev = rc_allocate_device(RC_DRIVER_IR_RAW);
if (!rcdev) { if (!rcdev) {
rc = -ENOMEM; rc = -ENOMEM;
goto err_allocate_device; goto err_allocate_device;
} }
rcdev->priv = gpio_dev; rcdev->priv = gpio_dev;
rcdev->driver_type = RC_DRIVER_IR_RAW;
rcdev->input_name = GPIO_IR_DEVICE_NAME; rcdev->input_name = GPIO_IR_DEVICE_NAME;
rcdev->input_phys = GPIO_IR_DEVICE_NAME "/input0"; rcdev->input_phys = GPIO_IR_DEVICE_NAME "/input0";
rcdev->input_id.bustype = BUS_HOST; rcdev->input_id.bustype = BUS_HOST;
......
...@@ -190,7 +190,7 @@ static int igorplugusb_probe(struct usb_interface *intf, ...@@ -190,7 +190,7 @@ static int igorplugusb_probe(struct usb_interface *intf,
usb_make_path(udev, ir->phys, sizeof(ir->phys)); usb_make_path(udev, ir->phys, sizeof(ir->phys));
rc = rc_allocate_device(); rc = rc_allocate_device(RC_DRIVER_IR_RAW);
if (!rc) if (!rc)
goto fail; goto fail;
...@@ -198,7 +198,6 @@ static int igorplugusb_probe(struct usb_interface *intf, ...@@ -198,7 +198,6 @@ static int igorplugusb_probe(struct usb_interface *intf,
rc->input_phys = ir->phys; rc->input_phys = ir->phys;
usb_to_input_id(udev, &rc->input_id); usb_to_input_id(udev, &rc->input_id);
rc->dev.parent = &intf->dev; rc->dev.parent = &intf->dev;
rc->driver_type = RC_DRIVER_IR_RAW;
/* /*
* This device can only store 36 pulses + spaces, which is not enough * This device can only store 36 pulses + spaces, which is not enough
* for the NEC protocol and many others. * for the NEC protocol and many others.
......
...@@ -427,7 +427,7 @@ static int iguanair_probe(struct usb_interface *intf, ...@@ -427,7 +427,7 @@ static int iguanair_probe(struct usb_interface *intf,
struct usb_host_interface *idesc; struct usb_host_interface *idesc;
ir = kzalloc(sizeof(*ir), GFP_KERNEL); ir = kzalloc(sizeof(*ir), GFP_KERNEL);
rc = rc_allocate_device(); rc = rc_allocate_device(RC_DRIVER_IR_RAW);
if (!ir || !rc) { if (!ir || !rc) {
ret = -ENOMEM; ret = -ENOMEM;
goto out; goto out;
...@@ -490,7 +490,6 @@ static int iguanair_probe(struct usb_interface *intf, ...@@ -490,7 +490,6 @@ static int iguanair_probe(struct usb_interface *intf,
rc->input_phys = ir->phys; rc->input_phys = ir->phys;
usb_to_input_id(ir->udev, &rc->input_id); usb_to_input_id(ir->udev, &rc->input_id);
rc->dev.parent = &intf->dev; rc->dev.parent = &intf->dev;
rc->driver_type = RC_DRIVER_IR_RAW;
rc->allowed_protocols = RC_BIT_ALL_IR_DECODER; rc->allowed_protocols = RC_BIT_ALL_IR_DECODER;
rc->priv = ir; rc->priv = ir;
rc->open = iguanair_open; rc->open = iguanair_open;
......
...@@ -1078,7 +1078,7 @@ int img_ir_probe_hw(struct img_ir_priv *priv) ...@@ -1078,7 +1078,7 @@ int img_ir_probe_hw(struct img_ir_priv *priv)
} }
/* Allocate hardware decoder */ /* Allocate hardware decoder */
hw->rdev = rdev = rc_allocate_device(); hw->rdev = rdev = rc_allocate_device(RC_DRIVER_SCANCODE);
if (!rdev) { if (!rdev) {
dev_err(priv->dev, "cannot allocate input device\n"); dev_err(priv->dev, "cannot allocate input device\n");
error = -ENOMEM; error = -ENOMEM;
......
...@@ -110,7 +110,7 @@ int img_ir_probe_raw(struct img_ir_priv *priv) ...@@ -110,7 +110,7 @@ int img_ir_probe_raw(struct img_ir_priv *priv)
setup_timer(&raw->timer, img_ir_echo_timer, (unsigned long)priv); setup_timer(&raw->timer, img_ir_echo_timer, (unsigned long)priv);
/* Allocate raw decoder */ /* Allocate raw decoder */
raw->rdev = rdev = rc_allocate_device(); raw->rdev = rdev = rc_allocate_device(RC_DRIVER_IR_RAW);
if (!rdev) { if (!rdev) {
dev_err(priv->dev, "cannot allocate raw input device\n"); dev_err(priv->dev, "cannot allocate raw input device\n");
return -ENOMEM; return -ENOMEM;
...@@ -118,7 +118,6 @@ int img_ir_probe_raw(struct img_ir_priv *priv) ...@@ -118,7 +118,6 @@ int img_ir_probe_raw(struct img_ir_priv *priv)
rdev->priv = priv; rdev->priv = priv;
rdev->map_name = RC_MAP_EMPTY; rdev->map_name = RC_MAP_EMPTY;
rdev->input_name = "IMG Infrared Decoder Raw"; rdev->input_name = "IMG Infrared Decoder Raw";
rdev->driver_type = RC_DRIVER_IR_RAW;
/* Register raw decoder */ /* Register raw decoder */
error = rc_register_device(rdev); error = rc_register_device(rdev);
......
...@@ -1935,7 +1935,7 @@ static struct rc_dev *imon_init_rdev(struct imon_context *ictx) ...@@ -1935,7 +1935,7 @@ static struct rc_dev *imon_init_rdev(struct imon_context *ictx)
const unsigned char fp_packet[] = { 0x40, 0x00, 0x00, 0x00, const unsigned char fp_packet[] = { 0x40, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x88 }; 0x00, 0x00, 0x00, 0x88 };
rdev = rc_allocate_device(); rdev = rc_allocate_device(RC_DRIVER_SCANCODE);
if (!rdev) { if (!rdev) {
dev_err(ictx->dev, "remote control dev allocation failed\n"); dev_err(ictx->dev, "remote control dev allocation failed\n");
goto out; goto out;
...@@ -1953,7 +1953,6 @@ static struct rc_dev *imon_init_rdev(struct imon_context *ictx) ...@@ -1953,7 +1953,6 @@ static struct rc_dev *imon_init_rdev(struct imon_context *ictx)
rdev->dev.parent = ictx->dev; rdev->dev.parent = ictx->dev;
rdev->priv = ictx; rdev->priv = ictx;
rdev->driver_type = RC_DRIVER_SCANCODE;
rdev->allowed_protocols = RC_BIT_OTHER | RC_BIT_RC6_MCE; /* iMON PAD or MCE */ rdev->allowed_protocols = RC_BIT_OTHER | RC_BIT_RC6_MCE; /* iMON PAD or MCE */
rdev->change_protocol = imon_ir_change_protocol; rdev->change_protocol = imon_ir_change_protocol;
rdev->driver_name = MOD_NAME; rdev->driver_name = MOD_NAME;
......
...@@ -229,7 +229,7 @@ static int hix5hd2_ir_probe(struct platform_device *pdev) ...@@ -229,7 +229,7 @@ static int hix5hd2_ir_probe(struct platform_device *pdev)
return priv->irq; return priv->irq;
} }
rdev = rc_allocate_device(); rdev = rc_allocate_device(RC_DRIVER_IR_RAW);
if (!rdev) if (!rdev)
return -ENOMEM; return -ENOMEM;
...@@ -242,7 +242,6 @@ static int hix5hd2_ir_probe(struct platform_device *pdev) ...@@ -242,7 +242,6 @@ static int hix5hd2_ir_probe(struct platform_device *pdev)
clk_prepare_enable(priv->clock); clk_prepare_enable(priv->clock);
priv->rate = clk_get_rate(priv->clock); priv->rate = clk_get_rate(priv->clock);
rdev->driver_type = RC_DRIVER_IR_RAW;
rdev->allowed_protocols = RC_BIT_ALL_IR_DECODER; rdev->allowed_protocols = RC_BIT_ALL_IR_DECODER;
rdev->priv = priv; rdev->priv = priv;
rdev->open = hix5hd2_ir_open; rdev->open = hix5hd2_ir_open;
......
...@@ -1465,7 +1465,7 @@ static int ite_probe(struct pnp_dev *pdev, const struct pnp_device_id ...@@ -1465,7 +1465,7 @@ static int ite_probe(struct pnp_dev *pdev, const struct pnp_device_id
return ret; return ret;
/* input device for IR remote (and tx) */ /* input device for IR remote (and tx) */
rdev = rc_allocate_device(); rdev = rc_allocate_device(RC_DRIVER_IR_RAW);
if (!rdev) if (!rdev)
goto exit_free_dev_rdev; goto exit_free_dev_rdev;
itdev->rdev = rdev; itdev->rdev = rdev;
...@@ -1556,7 +1556,6 @@ static int ite_probe(struct pnp_dev *pdev, const struct pnp_device_id ...@@ -1556,7 +1556,6 @@ static int ite_probe(struct pnp_dev *pdev, const struct pnp_device_id
/* set up ir-core props */ /* set up ir-core props */
rdev->priv = itdev; rdev->priv = itdev;
rdev->driver_type = RC_DRIVER_IR_RAW;
rdev->allowed_protocols = RC_BIT_ALL_IR_DECODER; rdev->allowed_protocols = RC_BIT_ALL_IR_DECODER;
rdev->open = ite_open; rdev->open = ite_open;
rdev->close = ite_close; rdev->close = ite_close;
......
...@@ -1177,7 +1177,7 @@ static struct rc_dev *mceusb_init_rc_dev(struct mceusb_dev *ir) ...@@ -1177,7 +1177,7 @@ static struct rc_dev *mceusb_init_rc_dev(struct mceusb_dev *ir)
struct rc_dev *rc; struct rc_dev *rc;
int ret; int ret;
rc = rc_allocate_device(); rc = rc_allocate_device(RC_DRIVER_IR_RAW);
if (!rc) { if (!rc) {
dev_err(dev, "remote dev allocation failed"); dev_err(dev, "remote dev allocation failed");
goto out; goto out;
...@@ -1197,7 +1197,6 @@ static struct rc_dev *mceusb_init_rc_dev(struct mceusb_dev *ir) ...@@ -1197,7 +1197,6 @@ static struct rc_dev *mceusb_init_rc_dev(struct mceusb_dev *ir)
usb_to_input_id(ir->usbdev, &rc->input_id); usb_to_input_id(ir->usbdev, &rc->input_id);
rc->dev.parent = dev; rc->dev.parent = dev;
rc->priv = ir; rc->priv = ir;
rc->driver_type = RC_DRIVER_IR_RAW;
rc->allowed_protocols = RC_BIT_ALL_IR_DECODER; rc->allowed_protocols = RC_BIT_ALL_IR_DECODER;
rc->timeout = MS_TO_NS(100); rc->timeout = MS_TO_NS(100);
if (!ir->flags.no_tx) { if (!ir->flags.no_tx) {
......
...@@ -131,7 +131,7 @@ static int meson_ir_probe(struct platform_device *pdev) ...@@ -131,7 +131,7 @@ static int meson_ir_probe(struct platform_device *pdev)
return ir->irq; return ir->irq;
} }
ir->rc = rc_allocate_device(); ir->rc = rc_allocate_device(RC_DRIVER_IR_RAW);
if (!ir->rc) { if (!ir->rc) {
dev_err(dev, "failed to allocate rc device\n"); dev_err(dev, "failed to allocate rc device\n");
return -ENOMEM; return -ENOMEM;
...@@ -144,7 +144,6 @@ static int meson_ir_probe(struct platform_device *pdev) ...@@ -144,7 +144,6 @@ static int meson_ir_probe(struct platform_device *pdev)
map_name = of_get_property(node, "linux,rc-map-name", NULL); map_name = of_get_property(node, "linux,rc-map-name", NULL);
ir->rc->map_name = map_name ? map_name : RC_MAP_EMPTY; ir->rc->map_name = map_name ? map_name : RC_MAP_EMPTY;
ir->rc->dev.parent = dev; ir->rc->dev.parent = dev;
ir->rc->driver_type = RC_DRIVER_IR_RAW;
ir->rc->allowed_protocols = RC_BIT_ALL_IR_DECODER; ir->rc->allowed_protocols = RC_BIT_ALL_IR_DECODER;
ir->rc->rx_resolution = US_TO_NS(MESON_TRATE); ir->rc->rx_resolution = US_TO_NS(MESON_TRATE);
ir->rc->timeout = MS_TO_NS(200); ir->rc->timeout = MS_TO_NS(200);
......
...@@ -1062,7 +1062,7 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id) ...@@ -1062,7 +1062,7 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id)
return -ENOMEM; return -ENOMEM;
/* input device for IR remote (and tx) */ /* input device for IR remote (and tx) */
nvt->rdev = devm_rc_allocate_device(&pdev->dev); nvt->rdev = devm_rc_allocate_device(&pdev->dev, RC_DRIVER_IR_RAW);
if (!nvt->rdev) if (!nvt->rdev)
return -ENOMEM; return -ENOMEM;
rdev = nvt->rdev; rdev = nvt->rdev;
...@@ -1125,7 +1125,6 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id) ...@@ -1125,7 +1125,6 @@ static int nvt_probe(struct pnp_dev *pdev, const struct pnp_device_id *dev_id)
/* Set up the rc device */ /* Set up the rc device */
rdev->priv = nvt; rdev->priv = nvt;
rdev->driver_type = RC_DRIVER_IR_RAW;
rdev->allowed_protocols = RC_BIT_ALL_IR_DECODER; rdev->allowed_protocols = RC_BIT_ALL_IR_DECODER;
rdev->allowed_wakeup_protocols = RC_BIT_ALL_IR_ENCODER; rdev->allowed_wakeup_protocols = RC_BIT_ALL_IR_ENCODER;
rdev->encode_wakeup = true; rdev->encode_wakeup = true;
......
...@@ -213,7 +213,7 @@ static int __init loop_init(void) ...@@ -213,7 +213,7 @@ static int __init loop_init(void)
struct rc_dev *rc; struct rc_dev *rc;
int ret; int ret;
rc = rc_allocate_device(); rc = rc_allocate_device(RC_DRIVER_IR_RAW);
if (!rc) { if (!rc) {
printk(KERN_ERR DRIVER_NAME ": rc_dev allocation failed\n"); printk(KERN_ERR DRIVER_NAME ": rc_dev allocation failed\n");
return -ENOMEM; return -ENOMEM;
...@@ -226,7 +226,6 @@ static int __init loop_init(void) ...@@ -226,7 +226,6 @@ static int __init loop_init(void)
rc->driver_name = DRIVER_NAME; rc->driver_name = DRIVER_NAME;
rc->map_name = RC_MAP_EMPTY; rc->map_name = RC_MAP_EMPTY;
rc->priv = &loopdev; rc->priv = &loopdev;
rc->driver_type = RC_DRIVER_IR_RAW;
rc->allowed_protocols = RC_BIT_ALL_IR_DECODER; rc->allowed_protocols = RC_BIT_ALL_IR_DECODER;
rc->allowed_wakeup_protocols = RC_BIT_ALL_IR_ENCODER; rc->allowed_wakeup_protocols = RC_BIT_ALL_IR_ENCODER;
rc->encode_wakeup = true; rc->encode_wakeup = true;
......
...@@ -1577,7 +1577,7 @@ static struct device_type rc_dev_type = { ...@@ -1577,7 +1577,7 @@ static struct device_type rc_dev_type = {
.uevent = rc_dev_uevent, .uevent = rc_dev_uevent,
}; };
struct rc_dev *rc_allocate_device(void) struct rc_dev *rc_allocate_device(enum rc_driver_type type)
{ {
struct rc_dev *dev; struct rc_dev *dev;
...@@ -1604,6 +1604,8 @@ struct rc_dev *rc_allocate_device(void) ...@@ -1604,6 +1604,8 @@ struct rc_dev *rc_allocate_device(void)
dev->dev.class = &rc_class; dev->dev.class = &rc_class;
device_initialize(&dev->dev); device_initialize(&dev->dev);
dev->driver_type = type;
__module_get(THIS_MODULE); __module_get(THIS_MODULE);
return dev; return dev;
} }
...@@ -1630,7 +1632,8 @@ static void devm_rc_alloc_release(struct device *dev, void *res) ...@@ -1630,7 +1632,8 @@ static void devm_rc_alloc_release(struct device *dev, void *res)
rc_free_device(*(struct rc_dev **)res); rc_free_device(*(struct rc_dev **)res);
} }
struct rc_dev *devm_rc_allocate_device(struct device *dev) struct rc_dev *devm_rc_allocate_device(struct device *dev,
enum rc_driver_type type)
{ {
struct rc_dev **dr, *rc; struct rc_dev **dr, *rc;
...@@ -1638,7 +1641,7 @@ struct rc_dev *devm_rc_allocate_device(struct device *dev) ...@@ -1638,7 +1641,7 @@ struct rc_dev *devm_rc_allocate_device(struct device *dev)
if (!dr) if (!dr)
return NULL; return NULL;
rc = rc_allocate_device(); rc = rc_allocate_device(type);
if (!rc) { if (!rc) {
devres_free(dr); devres_free(dr);
return NULL; return NULL;
......
...@@ -941,7 +941,7 @@ static struct rc_dev *redrat3_init_rc_dev(struct redrat3_dev *rr3) ...@@ -941,7 +941,7 @@ static struct rc_dev *redrat3_init_rc_dev(struct redrat3_dev *rr3)
int ret; int ret;
u16 prod = le16_to_cpu(rr3->udev->descriptor.idProduct); u16 prod = le16_to_cpu(rr3->udev->descriptor.idProduct);
rc = rc_allocate_device(); rc = rc_allocate_device(RC_DRIVER_IR_RAW);
if (!rc) if (!rc)
return NULL; return NULL;
...@@ -956,7 +956,6 @@ static struct rc_dev *redrat3_init_rc_dev(struct redrat3_dev *rr3) ...@@ -956,7 +956,6 @@ static struct rc_dev *redrat3_init_rc_dev(struct redrat3_dev *rr3)
usb_to_input_id(rr3->udev, &rc->input_id); usb_to_input_id(rr3->udev, &rc->input_id);
rc->dev.parent = dev; rc->dev.parent = dev;
rc->priv = rr3; rc->priv = rr3;
rc->driver_type = RC_DRIVER_IR_RAW;
rc->allowed_protocols = RC_BIT_ALL_IR_DECODER; rc->allowed_protocols = RC_BIT_ALL_IR_DECODER;
rc->min_timeout = MS_TO_NS(RR3_RX_MIN_TIMEOUT); rc->min_timeout = MS_TO_NS(RR3_RX_MIN_TIMEOUT);
rc->max_timeout = MS_TO_NS(RR3_RX_MAX_TIMEOUT); rc->max_timeout = MS_TO_NS(RR3_RX_MAX_TIMEOUT);
......
...@@ -757,7 +757,7 @@ static int __init serial_ir_init_module(void) ...@@ -757,7 +757,7 @@ static int __init serial_ir_init_module(void)
if (result) if (result)
return result; return result;
rcdev = devm_rc_allocate_device(&serial_ir.pdev->dev); rcdev = devm_rc_allocate_device(&serial_ir.pdev->dev, RC_DRIVER_IR_RAW);
if (!rcdev) { if (!rcdev) {
result = -ENOMEM; result = -ENOMEM;
goto serial_cleanup; goto serial_cleanup;
...@@ -796,7 +796,6 @@ static int __init serial_ir_init_module(void) ...@@ -796,7 +796,6 @@ static int __init serial_ir_init_module(void)
rcdev->open = serial_ir_open; rcdev->open = serial_ir_open;
rcdev->close = serial_ir_close; rcdev->close = serial_ir_close;
rcdev->dev.parent = &serial_ir.pdev->dev; rcdev->dev.parent = &serial_ir.pdev->dev;
rcdev->driver_type = RC_DRIVER_IR_RAW;
rcdev->allowed_protocols = RC_BIT_ALL_IR_DECODER; rcdev->allowed_protocols = RC_BIT_ALL_IR_DECODER;
rcdev->driver_name = KBUILD_MODNAME; rcdev->driver_name = KBUILD_MODNAME;
rcdev->map_name = RC_MAP_RC6_MCE; rcdev->map_name = RC_MAP_RC6_MCE;
......
...@@ -235,7 +235,7 @@ static int st_rc_probe(struct platform_device *pdev) ...@@ -235,7 +235,7 @@ static int st_rc_probe(struct platform_device *pdev)
if (!rc_dev) if (!rc_dev)
return -ENOMEM; return -ENOMEM;
rdev = rc_allocate_device(); rdev = rc_allocate_device(RC_DRIVER_IR_RAW);
if (!rdev) if (!rdev)
return -ENOMEM; return -ENOMEM;
...@@ -290,7 +290,6 @@ static int st_rc_probe(struct platform_device *pdev) ...@@ -290,7 +290,6 @@ static int st_rc_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, rc_dev); platform_set_drvdata(pdev, rc_dev);
st_rc_hardware_init(rc_dev); st_rc_hardware_init(rc_dev);
rdev->driver_type = RC_DRIVER_IR_RAW;
rdev->allowed_protocols = RC_BIT_ALL_IR_DECODER; rdev->allowed_protocols = RC_BIT_ALL_IR_DECODER;
/* rx sampling rate is 10Mhz */ /* rx sampling rate is 10Mhz */
rdev->rx_resolution = 100; rdev->rx_resolution = 100;
......
...@@ -287,7 +287,7 @@ static struct rc_dev *streamzap_init_rc_dev(struct streamzap_ir *sz) ...@@ -287,7 +287,7 @@ static struct rc_dev *streamzap_init_rc_dev(struct streamzap_ir *sz)
struct device *dev = sz->dev; struct device *dev = sz->dev;
int ret; int ret;
rdev = rc_allocate_device(); rdev = rc_allocate_device(RC_DRIVER_IR_RAW);
if (!rdev) { if (!rdev) {
dev_err(dev, "remote dev allocation failed\n"); dev_err(dev, "remote dev allocation failed\n");
goto out; goto out;
...@@ -304,7 +304,6 @@ static struct rc_dev *streamzap_init_rc_dev(struct streamzap_ir *sz) ...@@ -304,7 +304,6 @@ static struct rc_dev *streamzap_init_rc_dev(struct streamzap_ir *sz)
usb_to_input_id(sz->usbdev, &rdev->input_id); usb_to_input_id(sz->usbdev, &rdev->input_id);
rdev->dev.parent = dev; rdev->dev.parent = dev;
rdev->priv = sz; rdev->priv = sz;
rdev->driver_type = RC_DRIVER_IR_RAW;
rdev->allowed_protocols = RC_BIT_ALL_IR_DECODER; rdev->allowed_protocols = RC_BIT_ALL_IR_DECODER;
rdev->driver_name = DRIVER_NAME; rdev->driver_name = DRIVER_NAME;
rdev->map_name = RC_MAP_STREAMZAP; rdev->map_name = RC_MAP_STREAMZAP;
......
...@@ -212,7 +212,7 @@ static int sunxi_ir_probe(struct platform_device *pdev) ...@@ -212,7 +212,7 @@ static int sunxi_ir_probe(struct platform_device *pdev)
goto exit_clkdisable_clk; goto exit_clkdisable_clk;
} }
ir->rc = rc_allocate_device(); ir->rc = rc_allocate_device(RC_DRIVER_IR_RAW);
if (!ir->rc) { if (!ir->rc) {
dev_err(dev, "failed to allocate device\n"); dev_err(dev, "failed to allocate device\n");
ret = -ENOMEM; ret = -ENOMEM;
...@@ -229,7 +229,6 @@ static int sunxi_ir_probe(struct platform_device *pdev) ...@@ -229,7 +229,6 @@ static int sunxi_ir_probe(struct platform_device *pdev)
ir->map_name = of_get_property(dn, "linux,rc-map-name", NULL); ir->map_name = of_get_property(dn, "linux,rc-map-name", NULL);
ir->rc->map_name = ir->map_name ?: RC_MAP_EMPTY; ir->rc->map_name = ir->map_name ?: RC_MAP_EMPTY;
ir->rc->dev.parent = dev; ir->rc->dev.parent = dev;
ir->rc->driver_type = RC_DRIVER_IR_RAW;
ir->rc->allowed_protocols = RC_BIT_ALL_IR_DECODER; ir->rc->allowed_protocols = RC_BIT_ALL_IR_DECODER;
ir->rc->rx_resolution = SUNXI_IR_SAMPLE; ir->rc->rx_resolution = SUNXI_IR_SAMPLE;
ir->rc->timeout = MS_TO_NS(SUNXI_IR_TIMEOUT); ir->rc->timeout = MS_TO_NS(SUNXI_IR_TIMEOUT);
......
...@@ -201,7 +201,7 @@ static int ttusbir_probe(struct usb_interface *intf, ...@@ -201,7 +201,7 @@ static int ttusbir_probe(struct usb_interface *intf,
int altsetting = -1; int altsetting = -1;
tt = kzalloc(sizeof(*tt), GFP_KERNEL); tt = kzalloc(sizeof(*tt), GFP_KERNEL);
rc = rc_allocate_device(); rc = rc_allocate_device(RC_DRIVER_IR_RAW);
if (!tt || !rc) { if (!tt || !rc) {
ret = -ENOMEM; ret = -ENOMEM;
goto out; goto out;
...@@ -313,7 +313,6 @@ static int ttusbir_probe(struct usb_interface *intf, ...@@ -313,7 +313,6 @@ static int ttusbir_probe(struct usb_interface *intf,
rc->input_phys = tt->phys; rc->input_phys = tt->phys;
usb_to_input_id(tt->udev, &rc->input_id); usb_to_input_id(tt->udev, &rc->input_id);
rc->dev.parent = &intf->dev; rc->dev.parent = &intf->dev;
rc->driver_type = RC_DRIVER_IR_RAW;
rc->allowed_protocols = RC_BIT_ALL_IR_DECODER; rc->allowed_protocols = RC_BIT_ALL_IR_DECODER;
rc->priv = tt; rc->priv = tt;
rc->driver_name = DRIVER_NAME; rc->driver_name = DRIVER_NAME;
......
...@@ -1061,13 +1061,12 @@ wbcir_probe(struct pnp_dev *device, const struct pnp_device_id *dev_id) ...@@ -1061,13 +1061,12 @@ wbcir_probe(struct pnp_dev *device, const struct pnp_device_id *dev_id)
if (err) if (err)
goto exit_free_data; goto exit_free_data;
data->dev = rc_allocate_device(); data->dev = rc_allocate_device(RC_DRIVER_IR_RAW);
if (!data->dev) { if (!data->dev) {
err = -ENOMEM; err = -ENOMEM;
goto exit_unregister_led; goto exit_unregister_led;
} }
data->dev->driver_type = RC_DRIVER_IR_RAW;
data->dev->driver_name = DRVNAME; data->dev->driver_name = DRVNAME;
data->dev->input_name = WBCIR_NAME; data->dev->input_name = WBCIR_NAME;
data->dev->input_phys = "wbcir/cir0"; data->dev->input_phys = "wbcir/cir0";
......
...@@ -298,7 +298,7 @@ int au0828_rc_register(struct au0828_dev *dev) ...@@ -298,7 +298,7 @@ int au0828_rc_register(struct au0828_dev *dev)
return -ENODEV; return -ENODEV;
ir = kzalloc(sizeof(*ir), GFP_KERNEL); ir = kzalloc(sizeof(*ir), GFP_KERNEL);
rc = rc_allocate_device(); rc = rc_allocate_device(RC_DRIVER_IR_RAW);
if (!ir || !rc) if (!ir || !rc)
goto error; goto error;
...@@ -343,7 +343,6 @@ int au0828_rc_register(struct au0828_dev *dev) ...@@ -343,7 +343,6 @@ int au0828_rc_register(struct au0828_dev *dev)
rc->input_id.product = le16_to_cpu(dev->usbdev->descriptor.idProduct); rc->input_id.product = le16_to_cpu(dev->usbdev->descriptor.idProduct);
rc->dev.parent = &dev->usbdev->dev; rc->dev.parent = &dev->usbdev->dev;
rc->driver_name = "au0828-input"; rc->driver_name = "au0828-input";
rc->driver_type = RC_DRIVER_IR_RAW;
rc->allowed_protocols = RC_BIT_NEC | RC_BIT_NECX | RC_BIT_NEC32 | rc->allowed_protocols = RC_BIT_NEC | RC_BIT_NECX | RC_BIT_NEC32 |
RC_BIT_RC5; RC_BIT_RC5;
......
...@@ -72,7 +72,7 @@ int cx231xx_ir_init(struct cx231xx *dev) ...@@ -72,7 +72,7 @@ int cx231xx_ir_init(struct cx231xx *dev)
memset(&info, 0, sizeof(struct i2c_board_info)); memset(&info, 0, sizeof(struct i2c_board_info));
memset(&dev->init_data, 0, sizeof(dev->init_data)); memset(&dev->init_data, 0, sizeof(dev->init_data));
dev->init_data.rc_dev = rc_allocate_device(); dev->init_data.rc_dev = rc_allocate_device(RC_DRIVER_SCANCODE);
if (!dev->init_data.rc_dev) if (!dev->init_data.rc_dev)
return -ENOMEM; return -ENOMEM;
......
...@@ -147,7 +147,7 @@ static int dvb_usbv2_remote_init(struct dvb_usb_device *d) ...@@ -147,7 +147,7 @@ static int dvb_usbv2_remote_init(struct dvb_usb_device *d)
if (!d->rc.map_name) if (!d->rc.map_name)
return 0; return 0;
dev = rc_allocate_device(); dev = rc_allocate_device(d->rc.driver_type);
if (!dev) { if (!dev) {
ret = -ENOMEM; ret = -ENOMEM;
goto err; goto err;
...@@ -162,7 +162,6 @@ static int dvb_usbv2_remote_init(struct dvb_usb_device *d) ...@@ -162,7 +162,6 @@ static int dvb_usbv2_remote_init(struct dvb_usb_device *d)
/* TODO: likely RC-core should took const char * */ /* TODO: likely RC-core should took const char * */
dev->driver_name = (char *) d->props->driver_name; dev->driver_name = (char *) d->props->driver_name;
dev->map_name = d->rc.map_name; dev->map_name = d->rc.map_name;
dev->driver_type = d->rc.driver_type;
dev->allowed_protocols = d->rc.allowed_protos; dev->allowed_protocols = d->rc.allowed_protos;
dev->change_protocol = d->rc.change_protocol; dev->change_protocol = d->rc.change_protocol;
dev->priv = d; dev->priv = d;
......
...@@ -265,7 +265,7 @@ static int rc_core_dvb_usb_remote_init(struct dvb_usb_device *d) ...@@ -265,7 +265,7 @@ static int rc_core_dvb_usb_remote_init(struct dvb_usb_device *d)
int err, rc_interval; int err, rc_interval;
struct rc_dev *dev; struct rc_dev *dev;
dev = rc_allocate_device(); dev = rc_allocate_device(d->props.rc.core.driver_type);
if (!dev) if (!dev)
return -ENOMEM; return -ENOMEM;
...@@ -273,7 +273,6 @@ static int rc_core_dvb_usb_remote_init(struct dvb_usb_device *d) ...@@ -273,7 +273,6 @@ static int rc_core_dvb_usb_remote_init(struct dvb_usb_device *d)
dev->map_name = d->props.rc.core.rc_codes; dev->map_name = d->props.rc.core.rc_codes;
dev->change_protocol = d->props.rc.core.change_protocol; dev->change_protocol = d->props.rc.core.change_protocol;
dev->allowed_protocols = d->props.rc.core.allowed_protos; dev->allowed_protocols = d->props.rc.core.allowed_protos;
dev->driver_type = d->props.rc.core.driver_type;
usb_to_input_id(d->udev, &dev->input_id); usb_to_input_id(d->udev, &dev->input_id);
dev->input_name = "IR-receiver inside an USB DVB receiver"; dev->input_name = "IR-receiver inside an USB DVB receiver";
dev->input_phys = d->rc_phys; dev->input_phys = d->rc_phys;
......
...@@ -722,7 +722,7 @@ static int em28xx_ir_init(struct em28xx *dev) ...@@ -722,7 +722,7 @@ static int em28xx_ir_init(struct em28xx *dev)
ir = kzalloc(sizeof(*ir), GFP_KERNEL); ir = kzalloc(sizeof(*ir), GFP_KERNEL);
if (!ir) if (!ir)
return -ENOMEM; return -ENOMEM;
rc = rc_allocate_device(); rc = rc_allocate_device(RC_DRIVER_SCANCODE);
if (!rc) if (!rc)
goto error; goto error;
......
...@@ -425,7 +425,7 @@ int tm6000_ir_init(struct tm6000_core *dev) ...@@ -425,7 +425,7 @@ int tm6000_ir_init(struct tm6000_core *dev)
return 0; return 0;
ir = kzalloc(sizeof(*ir), GFP_ATOMIC); ir = kzalloc(sizeof(*ir), GFP_ATOMIC);
rc = rc_allocate_device(); rc = rc_allocate_device(RC_DRIVER_SCANCODE);
if (!ir || !rc) if (!ir || !rc)
goto out; goto out;
...@@ -452,7 +452,6 @@ int tm6000_ir_init(struct tm6000_core *dev) ...@@ -452,7 +452,6 @@ int tm6000_ir_init(struct tm6000_core *dev)
ir->polling = 50; ir->polling = 50;
INIT_DELAYED_WORK(&ir->work, tm6000_ir_handle_key); INIT_DELAYED_WORK(&ir->work, tm6000_ir_handle_key);
} }
rc->driver_type = RC_DRIVER_SCANCODE;
snprintf(ir->name, sizeof(ir->name), "tm5600/60x0 IR (%s)", snprintf(ir->name, sizeof(ir->name), "tm5600/60x0 IR (%s)",
dev->name); dev->name);
......
...@@ -203,17 +203,19 @@ struct rc_dev { ...@@ -203,17 +203,19 @@ struct rc_dev {
/** /**
* rc_allocate_device - Allocates a RC device * rc_allocate_device - Allocates a RC device
* *
* @rc_driver_type: specifies the type of the RC output to be allocated
* returns a pointer to struct rc_dev. * returns a pointer to struct rc_dev.
*/ */
struct rc_dev *rc_allocate_device(void); struct rc_dev *rc_allocate_device(enum rc_driver_type);
/** /**
* devm_rc_allocate_device - Managed RC device allocation * devm_rc_allocate_device - Managed RC device allocation
* *
* @dev: pointer to struct device * @dev: pointer to struct device
* @rc_driver_type: specifies the type of the RC output to be allocated
* returns a pointer to struct rc_dev. * returns a pointer to struct rc_dev.
*/ */
struct rc_dev *devm_rc_allocate_device(struct device *dev); struct rc_dev *devm_rc_allocate_device(struct device *dev, enum rc_driver_type);
/** /**
* rc_free_device - Frees a RC device * rc_free_device - Frees a RC device
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment