Commit d6561010 authored by Al Viro's avatar Al Viro

[PATCH] sn3 iomem annotations and fixes

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 29e646df
...@@ -38,10 +38,10 @@ static inline unsigned mcr_pack(unsigned pulse, unsigned sample) ...@@ -38,10 +38,10 @@ static inline unsigned mcr_pack(unsigned pulse, unsigned sample)
static int nic_wait(struct ioc3_driver_data *idd) static int nic_wait(struct ioc3_driver_data *idd)
{ {
volatile unsigned mcr; unsigned mcr;
do { do {
mcr = (volatile unsigned)idd->vma->mcr; mcr = readl(&idd->vma->mcr);
} while (!(mcr & 2)); } while (!(mcr & 2));
return mcr & 1; return mcr & 1;
...@@ -53,7 +53,7 @@ static int nic_reset(struct ioc3_driver_data *idd) ...@@ -53,7 +53,7 @@ static int nic_reset(struct ioc3_driver_data *idd)
unsigned long flags; unsigned long flags;
local_irq_save(flags); local_irq_save(flags);
idd->vma->mcr = mcr_pack(500, 65); writel(mcr_pack(500, 65), &idd->vma->mcr);
presence = nic_wait(idd); presence = nic_wait(idd);
local_irq_restore(flags); local_irq_restore(flags);
...@@ -68,7 +68,7 @@ static inline int nic_read_bit(struct ioc3_driver_data *idd) ...@@ -68,7 +68,7 @@ static inline int nic_read_bit(struct ioc3_driver_data *idd)
unsigned long flags; unsigned long flags;
local_irq_save(flags); local_irq_save(flags);
idd->vma->mcr = mcr_pack(6, 13); writel(mcr_pack(6, 13), &idd->vma->mcr);
result = nic_wait(idd); result = nic_wait(idd);
local_irq_restore(flags); local_irq_restore(flags);
...@@ -80,9 +80,9 @@ static inline int nic_read_bit(struct ioc3_driver_data *idd) ...@@ -80,9 +80,9 @@ static inline int nic_read_bit(struct ioc3_driver_data *idd)
static inline void nic_write_bit(struct ioc3_driver_data *idd, int bit) static inline void nic_write_bit(struct ioc3_driver_data *idd, int bit)
{ {
if (bit) if (bit)
idd->vma->mcr = mcr_pack(6, 110); writel(mcr_pack(6, 110), &idd->vma->mcr);
else else
idd->vma->mcr = mcr_pack(80, 30); writel(mcr_pack(80, 30), &idd->vma->mcr);
nic_wait(idd); nic_wait(idd);
} }
...@@ -337,7 +337,7 @@ static void probe_nic(struct ioc3_driver_data *idd) ...@@ -337,7 +337,7 @@ static void probe_nic(struct ioc3_driver_data *idd)
int save = 0, loops = 3; int save = 0, loops = 3;
unsigned long first, addr; unsigned long first, addr;
idd->vma->gpcr_s = GPCR_MLAN_EN; writel(GPCR_MLAN_EN, &idd->vma->gpcr_s);
while(loops>0) { while(loops>0) {
idd->nic_part[0] = 0; idd->nic_part[0] = 0;
...@@ -408,7 +408,7 @@ static irqreturn_t ioc3_intr_io(int irq, void *arg, struct pt_regs *regs) ...@@ -408,7 +408,7 @@ static irqreturn_t ioc3_intr_io(int irq, void *arg, struct pt_regs *regs)
read_lock_irqsave(&ioc3_submodules_lock, flags); read_lock_irqsave(&ioc3_submodules_lock, flags);
if(idd->dual_irq && idd->vma->eisr) { if(idd->dual_irq && readb(&idd->vma->eisr)) {
/* send Ethernet IRQ to the driver */ /* send Ethernet IRQ to the driver */
if(ioc3_ethernet && idd->active[ioc3_ethernet->id] && if(ioc3_ethernet && idd->active[ioc3_ethernet->id] &&
ioc3_ethernet->intr) { ioc3_ethernet->intr) {
...@@ -682,7 +682,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id) ...@@ -682,7 +682,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id)
idd->id = ioc3_counter++; idd->id = ioc3_counter++;
up_write(&ioc3_devices_rwsem); up_write(&ioc3_devices_rwsem);
idd->gpdr_shadow = idd->vma->gpdr; idd->gpdr_shadow = readl(&idd->vma->gpdr);
/* Read IOC3 NIC contents */ /* Read IOC3 NIC contents */
probe_nic(idd); probe_nic(idd);
......
...@@ -27,7 +27,7 @@ struct ioc3_driver_data { ...@@ -27,7 +27,7 @@ struct ioc3_driver_data {
int id; /* IOC3 sequence number */ int id; /* IOC3 sequence number */
/* PCI mapping */ /* PCI mapping */
unsigned long pma; /* physical address */ unsigned long pma; /* physical address */
struct __iomem ioc3 *vma; /* pointer to registers */ struct ioc3 __iomem *vma; /* pointer to registers */
struct pci_dev *pdev; /* PCI device */ struct pci_dev *pdev; /* PCI device */
/* IRQ stuff */ /* IRQ stuff */
int dual_irq; /* set if separate IRQs are used */ int dual_irq; /* set if separate IRQs are used */
......
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