Re: [PATCH] Input: sa1111ps2 - use sa1111_get_irq() to obtain IRQ resources

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Sep 26, 2017 at 11:12:02AM +0100, Russell King wrote:
> Use the provided sa1111_get_irq() to fetch the IRQ resources for the
> SA1111 PS/2 driver.
> 
> Signed-off-by: Russell King <rmk+kernel@xxxxxxxxxxxxxxx>

Applied, thank you.

> ---
>  drivers/input/serio/sa1111ps2.c | 35 ++++++++++++++++++++++++-----------
>  1 file changed, 24 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/input/serio/sa1111ps2.c b/drivers/input/serio/sa1111ps2.c
> index b3e688911fd9..3b54050b9fc7 100644
> --- a/drivers/input/serio/sa1111ps2.c
> +++ b/drivers/input/serio/sa1111ps2.c
> @@ -47,6 +47,8 @@ struct ps2if {
>  	struct serio		*io;
>  	struct sa1111_dev	*dev;
>  	void __iomem		*base;
> +	int			rx_irq;
> +	int			tx_irq;
>  	unsigned int		open;
>  	spinlock_t		lock;
>  	unsigned int		head;
> @@ -126,7 +128,7 @@ static int ps2_write(struct serio *io, unsigned char val)
>  		sa1111_writel(val, ps2if->base + PS2DATA);
>  	} else {
>  		if (ps2if->head == ps2if->tail)
> -			enable_irq(ps2if->dev->irq[1]);
> +			enable_irq(ps2if->tx_irq);
>  		head = (ps2if->head + 1) & (sizeof(ps2if->buf) - 1);
>  		if (head != ps2if->tail) {
>  			ps2if->buf[ps2if->head] = val;
> @@ -147,28 +149,28 @@ static int ps2_open(struct serio *io)
>  	if (ret)
>  		return ret;
>  
> -	ret = request_irq(ps2if->dev->irq[0], ps2_rxint, 0,
> +	ret = request_irq(ps2if->rx_irq, ps2_rxint, 0,
>  			  SA1111_DRIVER_NAME(ps2if->dev), ps2if);
>  	if (ret) {
>  		printk(KERN_ERR "sa1111ps2: could not allocate IRQ%d: %d\n",
> -			ps2if->dev->irq[0], ret);
> +			ps2if->rx_irq, ret);
>  		sa1111_disable_device(ps2if->dev);
>  		return ret;
>  	}
>  
> -	ret = request_irq(ps2if->dev->irq[1], ps2_txint, 0,
> +	ret = request_irq(ps2if->tx_irq, ps2_txint, 0,
>  			  SA1111_DRIVER_NAME(ps2if->dev), ps2if);
>  	if (ret) {
>  		printk(KERN_ERR "sa1111ps2: could not allocate IRQ%d: %d\n",
> -			ps2if->dev->irq[1], ret);
> -		free_irq(ps2if->dev->irq[0], ps2if);
> +			ps2if->tx_irq, ret);
> +		free_irq(ps2if->rx_irq, ps2if);
>  		sa1111_disable_device(ps2if->dev);
>  		return ret;
>  	}
>  
>  	ps2if->open = 1;
>  
> -	enable_irq_wake(ps2if->dev->irq[0]);
> +	enable_irq_wake(ps2if->rx_irq);
>  
>  	sa1111_writel(PS2CR_ENA, ps2if->base + PS2CR);
>  	return 0;
> @@ -180,12 +182,12 @@ static void ps2_close(struct serio *io)
>  
>  	sa1111_writel(0, ps2if->base + PS2CR);
>  
> -	disable_irq_wake(ps2if->dev->irq[0]);
> +	disable_irq_wake(ps2if->rx_irq);
>  
>  	ps2if->open = 0;
>  
> -	free_irq(ps2if->dev->irq[1], ps2if);
> -	free_irq(ps2if->dev->irq[0], ps2if);
> +	free_irq(ps2if->tx_irq, ps2if);
> +	free_irq(ps2if->rx_irq, ps2if);
>  
>  	sa1111_disable_device(ps2if->dev);
>  }
> @@ -264,7 +266,6 @@ static int ps2_probe(struct sa1111_dev *dev)
>  		goto free;
>  	}
>  
> -
>  	serio->id.type		= SERIO_8042;
>  	serio->write		= ps2_write;
>  	serio->open		= ps2_open;
> @@ -279,6 +280,18 @@ static int ps2_probe(struct sa1111_dev *dev)
>  
>  	spin_lock_init(&ps2if->lock);
>  
> +	ps2if->rx_irq = sa1111_get_irq(dev, 0);
> +	if (ps2if->rx_irq <= 0) {
> +		ret = ps2if->rx_irq ? : -ENXIO;
> +		goto free;
> +	}
> +
> +	ps2if->tx_irq = sa1111_get_irq(dev, 1);
> +	if (ps2if->tx_irq <= 0) {
> +		ret = ps2if->tx_irq ? : -ENXIO;
> +		goto free;
> +	}
> +
>  	/*
>  	 * Request the physical region for this PS2 port.
>  	 */
> -- 
> 2.7.4
> 

-- 
Dmitry
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux