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 <[EMAIL PROTECTED]>
Acked-by: Benjamin Herrenschmidt <[EMAIL PROTECTED]> > --- > 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); _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev