[PATCH 7/7] Remove msic_dcr_read() and use dcr_map_reg() in axon_msi.c

Benjamin Herrenschmidt benh at kernel.crashing.org
Tue Oct 2 15:20:21 EST 2007


On Mon, 2007-09-17 at 16:05 +1000, Michael Ellerman wrote:
> msic_dcr_read() doesn't really do anything useful, just replace it with
> direct calls to dcr_read().
> 
> Use dcr_map_reg() in the axon_msi setup code, rather than essentially doing
> it by hand.
> 
> Signed-off-by: Michael Ellerman <michael at ellerman.id.au>

Acked-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>

> ---
>  arch/powerpc/platforms/cell/axon_msi.c |   22 +++-------------------
>  1 files changed, 3 insertions(+), 19 deletions(-)
> 
> diff --git a/arch/powerpc/platforms/cell/axon_msi.c b/arch/powerpc/platforms/cell/axon_msi.c
> index 26a5e88..57a6149 100644
> --- a/arch/powerpc/platforms/cell/axon_msi.c
> +++ b/arch/powerpc/platforms/cell/axon_msi.c
> @@ -80,18 +80,13 @@ static void msic_dcr_write(struct axon_msic *msic, unsigned int dcr_n, u32 val)
>  	dcr_write(msic->dcr_host, dcr_n, val);
>  }
>  
> -static u32 msic_dcr_read(struct axon_msic *msic, unsigned int dcr_n)
> -{
> -	return dcr_read(msic->dcr_host, dcr_n);
> -}
> -
>  static void axon_msi_cascade(unsigned int irq, struct irq_desc *desc)
>  {
>  	struct axon_msic *msic = get_irq_data(irq);
>  	u32 write_offset, msi;
>  	int idx;
>  
> -	write_offset = msic_dcr_read(msic, MSIC_WRITE_OFFSET_REG);
> +	write_offset = dcr_read(msic->dcr_host, MSIC_WRITE_OFFSET_REG);
>  	pr_debug("axon_msi: original write_offset 0x%x\n", write_offset);
>  
>  	/* write_offset doesn't wrap properly, so we have to mask it */
> @@ -306,7 +301,7 @@ static int axon_msi_notify_reboot(struct notifier_block *nb,
>  	list_for_each_entry(msic, &axon_msic_list, list) {
>  		pr_debug("axon_msi: disabling %s\n",
>  			  msic->irq_host->of_node->full_name);
> -		tmp  = msic_dcr_read(msic, MSIC_CTRL_REG);
> +		tmp  = dcr_read(msic->dcr_host, MSIC_CTRL_REG);
>  		tmp &= ~MSIC_CTRL_ENABLE & ~MSIC_CTRL_IRQ_ENABLE;
>  		msic_dcr_write(msic, MSIC_CTRL_REG, tmp);
>  	}
> @@ -323,7 +318,6 @@ static int axon_msi_setup_one(struct device_node *dn)
>  	struct page *page;
>  	struct axon_msic *msic;
>  	unsigned int virq;
> -	int dcr_base, dcr_len;
>  
>  	pr_debug("axon_msi: setting up dn %s\n", dn->full_name);
>  
> @@ -334,17 +328,7 @@ static int axon_msi_setup_one(struct device_node *dn)
>  		goto out;
>  	}
>  
> -	dcr_base = dcr_resource_start(dn, 0);
> -	dcr_len = dcr_resource_len(dn, 0);
> -
> -	if (dcr_base == 0 || dcr_len == 0) {
> -		printk(KERN_ERR
> -		       "axon_msi: couldn't parse dcr properties on %s\n",
> -			dn->full_name);
> -		goto out;
> -	}
> -
> -	msic->dcr_host = dcr_map(dn, dcr_base, dcr_len);
> +	msic->dcr_host = dcr_map_reg(dn, 0);
>  	if (!DCR_MAP_OK(msic->dcr_host)) {
>  		printk(KERN_ERR "axon_msi: dcr_map failed for %s\n",
>  		       dn->full_name);




More information about the Linuxppc-dev mailing list