diff options
Diffstat (limited to 'drivers/media/rc/ene_ir.c')
| -rw-r--r-- | drivers/media/rc/ene_ir.c | 23 | 
1 files changed, 14 insertions, 9 deletions
diff --git a/drivers/media/rc/ene_ir.c b/drivers/media/rc/ene_ir.c index 80b3c319f698..1ac49139158d 100644 --- a/drivers/media/rc/ene_ir.c +++ b/drivers/media/rc/ene_ir.c @@ -446,27 +446,27 @@ static void ene_rx_setup(struct ene_device *dev)  select_timeout:  	if (dev->rx_fan_input_inuse) { -		dev->rdev->rx_resolution = MS_TO_NS(ENE_FW_SAMPLE_PERIOD_FAN); +		dev->rdev->rx_resolution = US_TO_NS(ENE_FW_SAMPLE_PERIOD_FAN);  		/* Fan input doesn't support timeouts, it just ends the  			input with a maximum sample */  		dev->rdev->min_timeout = dev->rdev->max_timeout = -			MS_TO_NS(ENE_FW_SMPL_BUF_FAN_MSK * +			US_TO_NS(ENE_FW_SMPL_BUF_FAN_MSK *  				ENE_FW_SAMPLE_PERIOD_FAN);  	} else { -		dev->rdev->rx_resolution = MS_TO_NS(sample_period); +		dev->rdev->rx_resolution = US_TO_NS(sample_period);  		/* Theoreticly timeout is unlimited, but we cap it  		 * because it was seen that on one device, it  		 * would stop sending spaces after around 250 msec.  		 * Besides, this is close to 2^32 anyway and timeout is u32.  		 */ -		dev->rdev->min_timeout = MS_TO_NS(127 * sample_period); -		dev->rdev->max_timeout = MS_TO_NS(200000); +		dev->rdev->min_timeout = US_TO_NS(127 * sample_period); +		dev->rdev->max_timeout = US_TO_NS(200000);  	}  	if (dev->hw_learning_and_tx_capable) -		dev->rdev->tx_resolution = MS_TO_NS(sample_period); +		dev->rdev->tx_resolution = US_TO_NS(sample_period);  	if (dev->rdev->timeout > dev->rdev->max_timeout)  		dev->rdev->timeout = dev->rdev->max_timeout; @@ -801,7 +801,7 @@ static irqreturn_t ene_isr(int irq, void *data)  		dbg("RX: %d (%s)", hw_sample, pulse ? "pulse" : "space"); -		ev.duration = MS_TO_NS(hw_sample); +		ev.duration = US_TO_NS(hw_sample);  		ev.pulse = pulse;  		ir_raw_event_store_with_filter(dev->rdev, &ev);  	} @@ -821,7 +821,7 @@ static void ene_setup_default_settings(struct ene_device *dev)  	dev->learning_mode_enabled = learning_mode_force;  	/* Set reasonable default timeout */ -	dev->rdev->timeout = MS_TO_NS(150000); +	dev->rdev->timeout = US_TO_NS(150000);  }  /* Upload all hardware settings at once. Used at load and resume time */ @@ -1004,6 +1004,10 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id)  	/* validate resources */  	error = -ENODEV; +	/* init these to -1, as 0 is valid for both */ +	dev->hw_io = -1; +	dev->irq = -1; +  	if (!pnp_port_valid(pnp_dev, 0) ||  	    pnp_port_len(pnp_dev, 0) < ENE_IO_SIZE)  		goto error; @@ -1072,6 +1076,8 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id)  		rdev->input_name = "ENE eHome Infrared Remote Transceiver";  	} +	dev->rdev = rdev; +  	ene_rx_setup_hw_buffer(dev);  	ene_setup_default_settings(dev);  	ene_setup_hw_settings(dev); @@ -1083,7 +1089,6 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id)  	if (error < 0)  		goto error; -	dev->rdev = rdev;  	ene_notice("driver has been succesfully loaded");  	return 0;  error:  | 
