Commit 7bedd791 authored by Jeff Garzik's avatar Jeff Garzik

Merge pobox.com:/garz/repo/netdev-2.6/viro-eth1

into pobox.com:/garz/repo/net-drivers-2.6
parents 90b14f29 2f5a21d6
......@@ -40,10 +40,10 @@ static int port_aaui = -1;
#define TX_DMA_ERR 0x80
struct mace_data {
volatile struct mace *mace;
volatile struct dbdma_regs *tx_dma;
volatile struct mace __iomem *mace;
volatile struct dbdma_regs __iomem *tx_dma;
int tx_dma_intr;
volatile struct dbdma_regs *rx_dma;
volatile struct dbdma_regs __iomem *rx_dma;
int rx_dma_intr;
volatile struct dbdma_cmd *tx_cmds; /* xmit dma command list */
volatile struct dbdma_cmd *rx_cmds; /* recv dma command list */
......@@ -88,7 +88,7 @@ static irqreturn_t mace_txdma_intr(int irq, void *dev_id, struct pt_regs *regs);
static irqreturn_t mace_rxdma_intr(int irq, void *dev_id, struct pt_regs *regs);
static void mace_set_timeout(struct net_device *dev);
static void mace_tx_timeout(unsigned long data);
static inline void dbdma_reset(volatile struct dbdma_regs *dma);
static inline void dbdma_reset(volatile struct dbdma_regs __iomem *dma);
static inline void mace_clean_rings(struct mace_data *mp);
static void __mace_set_address(struct net_device *dev, void *addr);
......@@ -164,7 +164,7 @@ static int __devinit mace_probe(struct macio_dev *mdev, const struct of_match *m
macio_set_drvdata(mdev, dev);
dev->base_addr = macio_resource_start(mdev, 0);
mp->mace = (volatile struct mace *)ioremap(dev->base_addr, 0x1000);
mp->mace = ioremap(dev->base_addr, 0x1000);
if (mp->mace == NULL) {
printk(KERN_ERR "MACE: can't map IO resources !\n");
rc = -ENOMEM;
......@@ -183,8 +183,7 @@ static int __devinit mace_probe(struct macio_dev *mdev, const struct of_match *m
mp = (struct mace_data *) dev->priv;
mp->maccc = ENXMT | ENRCV;
mp->tx_dma = (volatile struct dbdma_regs *)
ioremap(macio_resource_start(mdev, 1), 0x1000);
mp->tx_dma = ioremap(macio_resource_start(mdev, 1), 0x1000);
if (mp->tx_dma == NULL) {
printk(KERN_ERR "MACE: can't map TX DMA resources !\n");
rc = -ENOMEM;
......@@ -192,8 +191,7 @@ static int __devinit mace_probe(struct macio_dev *mdev, const struct of_match *m
}
mp->tx_dma_intr = macio_irq(mdev, 1);
mp->rx_dma = (volatile struct dbdma_regs *)
ioremap(macio_resource_start(mdev, 2), 0x1000);
mp->rx_dma = ioremap(macio_resource_start(mdev, 2), 0x1000);
if (mp->rx_dma == NULL) {
printk(KERN_ERR "MACE: can't map RX DMA resources !\n");
rc = -ENOMEM;
......@@ -275,11 +273,11 @@ static int __devinit mace_probe(struct macio_dev *mdev, const struct of_match *m
err_free_irq:
free_irq(macio_irq(mdev, 0), dev);
err_unmap_rx_dma:
iounmap((void*)mp->rx_dma);
iounmap(mp->rx_dma);
err_unmap_tx_dma:
iounmap((void*)mp->tx_dma);
iounmap(mp->tx_dma);
err_unmap_io:
iounmap((void*)mp->mace);
iounmap(mp->mace);
err_free:
free_netdev(dev);
err_release:
......@@ -305,9 +303,9 @@ static int __devexit mace_remove(struct macio_dev *mdev)
free_irq(mp->tx_dma_intr, dev);
free_irq(mp->rx_dma_intr, dev);
iounmap((void*)mp->rx_dma);
iounmap((void*)mp->tx_dma);
iounmap((void*)mp->mace);
iounmap(mp->rx_dma);
iounmap(mp->tx_dma);
iounmap(mp->mace);
free_netdev(dev);
......@@ -316,7 +314,7 @@ static int __devexit mace_remove(struct macio_dev *mdev)
return 0;
}
static void dbdma_reset(volatile struct dbdma_regs *dma)
static void dbdma_reset(volatile struct dbdma_regs __iomem *dma)
{
int i;
......@@ -334,7 +332,7 @@ static void dbdma_reset(volatile struct dbdma_regs *dma)
static void mace_reset(struct net_device *dev)
{
struct mace_data *mp = (struct mace_data *) dev->priv;
volatile struct mace *mb = mp->mace;
volatile struct mace __iomem *mb = mp->mace;
int i;
/* soft-reset the chip */
......@@ -389,7 +387,7 @@ static void mace_reset(struct net_device *dev)
static void __mace_set_address(struct net_device *dev, void *addr)
{
struct mace_data *mp = (struct mace_data *) dev->priv;
volatile struct mace *mb = mp->mace;
volatile struct mace __iomem *mb = mp->mace;
unsigned char *p = addr;
int i;
......@@ -410,7 +408,7 @@ static void __mace_set_address(struct net_device *dev, void *addr)
static int mace_set_address(struct net_device *dev, void *addr)
{
struct mace_data *mp = (struct mace_data *) dev->priv;
volatile struct mace *mb = mp->mace;
volatile struct mace __iomem *mb = mp->mace;
unsigned long flags;
spin_lock_irqsave(&mp->lock, flags);
......@@ -445,9 +443,9 @@ static inline void mace_clean_rings(struct mace_data *mp)
static int mace_open(struct net_device *dev)
{
struct mace_data *mp = (struct mace_data *) dev->priv;
volatile struct mace *mb = mp->mace;
volatile struct dbdma_regs *rd = mp->rx_dma;
volatile struct dbdma_regs *td = mp->tx_dma;
volatile struct mace __iomem *mb = mp->mace;
volatile struct dbdma_regs __iomem *rd = mp->rx_dma;
volatile struct dbdma_regs __iomem *td = mp->tx_dma;
volatile struct dbdma_cmd *cp;
int i;
struct sk_buff *skb;
......@@ -515,9 +513,9 @@ static int mace_open(struct net_device *dev)
static int mace_close(struct net_device *dev)
{
struct mace_data *mp = (struct mace_data *) dev->priv;
volatile struct mace *mb = mp->mace;
volatile struct dbdma_regs *rd = mp->rx_dma;
volatile struct dbdma_regs *td = mp->tx_dma;
volatile struct mace __iomem *mb = mp->mace;
volatile struct dbdma_regs __iomem *rd = mp->rx_dma;
volatile struct dbdma_regs __iomem *td = mp->tx_dma;
/* disable rx and tx */
out_8(&mb->maccc, 0);
......@@ -548,7 +546,7 @@ static inline void mace_set_timeout(struct net_device *dev)
static int mace_xmit_start(struct sk_buff *skb, struct net_device *dev)
{
struct mace_data *mp = (struct mace_data *) dev->priv;
volatile struct dbdma_regs *td = mp->tx_dma;
volatile struct dbdma_regs __iomem *td = mp->tx_dma;
volatile struct dbdma_cmd *cp, *np;
unsigned long flags;
int fill, next, len;
......@@ -610,7 +608,7 @@ static struct net_device_stats *mace_stats(struct net_device *dev)
static void mace_set_multicast(struct net_device *dev)
{
struct mace_data *mp = (struct mace_data *) dev->priv;
volatile struct mace *mb = mp->mace;
volatile struct mace __iomem *mb = mp->mace;
int i, j;
u32 crc;
unsigned long flags;
......@@ -662,7 +660,7 @@ static void mace_set_multicast(struct net_device *dev)
static void mace_handle_misc_intrs(struct mace_data *mp, int intr)
{
volatile struct mace *mb = mp->mace;
volatile struct mace __iomem *mb = mp->mace;
static int mace_babbles, mace_jabbers;
if (intr & MPCO)
......@@ -685,8 +683,8 @@ static irqreturn_t mace_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
struct net_device *dev = (struct net_device *) dev_id;
struct mace_data *mp = (struct mace_data *) dev->priv;
volatile struct mace *mb = mp->mace;
volatile struct dbdma_regs *td = mp->tx_dma;
volatile struct mace __iomem *mb = mp->mace;
volatile struct dbdma_regs __iomem *td = mp->tx_dma;
volatile struct dbdma_cmd *cp;
int intr, fs, i, stat, x;
int xcount, dstat;
......@@ -831,9 +829,9 @@ static void mace_tx_timeout(unsigned long data)
{
struct net_device *dev = (struct net_device *) data;
struct mace_data *mp = (struct mace_data *) dev->priv;
volatile struct mace *mb = mp->mace;
volatile struct dbdma_regs *td = mp->tx_dma;
volatile struct dbdma_regs *rd = mp->rx_dma;
volatile struct mace __iomem *mb = mp->mace;
volatile struct dbdma_regs __iomem *td = mp->tx_dma;
volatile struct dbdma_regs __iomem *rd = mp->rx_dma;
volatile struct dbdma_cmd *cp;
unsigned long flags;
int i;
......@@ -902,7 +900,7 @@ static irqreturn_t mace_rxdma_intr(int irq, void *dev_id, struct pt_regs *regs)
{
struct net_device *dev = (struct net_device *) dev_id;
struct mace_data *mp = (struct mace_data *) dev->priv;
volatile struct dbdma_regs *rd = mp->rx_dma;
volatile struct dbdma_regs __iomem *rd = mp->rx_dma;
volatile struct dbdma_cmd *cp, *np;
int i, nb, stat, next;
struct sk_buff *skb;
......
......@@ -21,11 +21,7 @@
#define _FPLUS_
#ifndef HW_PTR
#ifdef MEM_MAPPED_IO
#define HW_PTR u_long
#else
#define HW_PTR u_short
#endif
#define HW_PTR void __iomem *
#endif
/*
......
......@@ -33,11 +33,7 @@
#endif
#ifndef HW_PTR
#ifdef MEM_MAPPED_IO
#define HW_PTR u_long
#else
#define HW_PTR u_short
#endif
#define HW_PTR void __iomem *
#endif
#ifdef MULT_OEM
......
......@@ -53,7 +53,7 @@
// is redefined by linux, but we need our definition
#undef ADDR
#ifdef MEM_MAPPED_IO
#define ADDR(a) (char far *) smc->hw.iop+(a)
#define ADDR(a) (smc->hw.iop+(a))
#else
#define ADDR(a) (((a)>>7) ? (outp(smc->hw.iop+B0_RAP,(a)>>7), (smc->hw.iop+( ((a)&0x7F) | ((a)>>7 ? 0x80:0)) )) : (smc->hw.iop+(((a)&0x7F)|((a)>>7 ? 0x80:0))))
#endif
......
......@@ -29,20 +29,11 @@
#define _far
#endif
#ifndef MEM_MAPPED_IO // "normal" IO
#define inp(p) inb(p)
#define inpw(p) inw(p)
#define inpd(p) inl(p)
#define outp(p,c) outb(c,p)
#define outpw(p,s) outw(s,p)
#define outpd(p,l) outl(l,p)
#else // memory mapped io
#define inp(a) readb(a)
#define inpw(a) readw(a)
#define inpd(a) readl(a)
#define outp(a,v) writeb(v, a)
#define outpw(a,v) writew(v, a)
#define outpd(a,v) writel(v, a)
#endif
#define inp(p) ioread8(p)
#define inpw(p) ioread16(p)
#define inpd(p) ioread32(p)
#define outp(p,c) iowrite8(c,p)
#define outpw(p,s) iowrite16(s,p)
#define outpd(p,l) iowrite32(l,p)
#endif /* _TYPES_ */
......@@ -206,6 +206,7 @@ static int skfp_init_one(struct pci_dev *pdev,
struct net_device *dev;
struct s_smc *smc; /* board pointer */
unsigned long port, len;
void __iomem *mem;
int err;
PRINTK(KERN_INFO "entering skfp_init_one\n");
......@@ -263,16 +264,16 @@ static int skfp_init_one(struct pci_dev *pdev,
}
#ifdef MEM_MAPPED_IO
dev->base_addr = (unsigned long) ioremap(port, len);
if (!dev->base_addr) {
printk(KERN_ERR "skfp: Unable to map MEMORY register, "
mem = ioremap(port, len);
#else
mem =ioport_map(port, len);
#endif
if (!mem) {
printk(KERN_ERR "skfp: Unable to map register, "
"FDDI adapter will be disabled.\n");
err = -EIO;
goto err_out3;
}
#else
dev->base_addr = port;
#endif
dev->irq = pdev->irq;
dev->get_stats = &skfp_ctl_get_stats;
......@@ -296,9 +297,12 @@ static int skfp_init_one(struct pci_dev *pdev,
smc->os.MaxFrameSize = MAX_FRAME_SIZE;
smc->os.dev = dev;
smc->hw.slot = -1;
smc->hw.iop = mem;
smc->os.ResetRequested = FALSE;
skb_queue_head_init(&smc->os.SendSkbQueue);
dev->base_addr = (unsigned long)mem;
err = skfp_driver_init(dev);
if (err)
goto err_out4;
......@@ -328,7 +332,9 @@ static int skfp_init_one(struct pci_dev *pdev,
smc->os.LocalRxBuffer, smc->os.LocalRxBufferDMA);
err_out4:
#ifdef MEM_MAPPED_IO
iounmap((void *) dev->base_addr);
iounmap(smc->hw.iop);
#else
ioport_unmap(smc->hw.iop);
#endif
err_out3:
free_netdev(dev);
......@@ -363,7 +369,9 @@ static void __devexit skfp_remove_one(struct pci_dev *pdev)
lp->os.LocalRxBuffer = NULL;
}
#ifdef MEM_MAPPED_IO
iounmap((void *) p->base_addr);
iounmap(lp->hw.iop);
#else
ioport_unmap(lp->hw.iop);
#endif
pci_release_regions(pdev);
free_netdev(p);
......@@ -406,7 +414,6 @@ static int skfp_driver_init(struct net_device *dev)
// set the io address in private structures
bp->base_addr = dev->base_addr;
smc->hw.iop = dev->base_addr;
// Get the interrupt level from the PCI Configuration Table
smc->hw.irq = dev->irq;
......
This diff is collapsed.
This diff is collapsed.
......@@ -443,7 +443,7 @@ static void __devexit streamer_remove_one(struct pci_dev *pdev)
static int streamer_reset(struct net_device *dev)
{
struct streamer_private *streamer_priv;
__u8 *streamer_mmio;
__u8 __iomem *streamer_mmio;
unsigned long t;
unsigned int uaa_addr;
struct sk_buff *skb = NULL;
......@@ -591,7 +591,7 @@ static int streamer_reset(struct net_device *dev)
static int streamer_open(struct net_device *dev)
{
struct streamer_private *streamer_priv = (struct streamer_private *) dev->priv;
__u8 *streamer_mmio = streamer_priv->streamer_mmio;
__u8 __iomem *streamer_mmio = streamer_priv->streamer_mmio;
unsigned long flags;
char open_error[255];
int i, open_finished = 1;
......@@ -908,7 +908,7 @@ static void streamer_rx(struct net_device *dev)
{
struct streamer_private *streamer_priv =
(struct streamer_private *) dev->priv;
__u8 *streamer_mmio = streamer_priv->streamer_mmio;
__u8 __iomem *streamer_mmio = streamer_priv->streamer_mmio;
struct streamer_rx_desc *rx_desc;
int rx_ring_last_received, length, frame_length, buffer_cnt = 0;
struct sk_buff *skb, *skb2;
......@@ -1035,7 +1035,7 @@ static irqreturn_t streamer_interrupt(int irq, void *dev_id, struct pt_regs *reg
struct net_device *dev = (struct net_device *) dev_id;
struct streamer_private *streamer_priv =
(struct streamer_private *) dev->priv;
__u8 *streamer_mmio = streamer_priv->streamer_mmio;
__u8 __iomem *streamer_mmio = streamer_priv->streamer_mmio;
__u16 sisr;
__u16 misr;
u8 max_intr = MAX_INTR;
......@@ -1158,7 +1158,7 @@ static int streamer_xmit(struct sk_buff *skb, struct net_device *dev)
{
struct streamer_private *streamer_priv =
(struct streamer_private *) dev->priv;
__u8 *streamer_mmio = streamer_priv->streamer_mmio;
__u8 __iomem *streamer_mmio = streamer_priv->streamer_mmio;
unsigned long flags ;
spin_lock_irqsave(&streamer_priv->streamer_lock, flags);
......@@ -1209,7 +1209,7 @@ static int streamer_close(struct net_device *dev)
{
struct streamer_private *streamer_priv =
(struct streamer_private *) dev->priv;
__u8 *streamer_mmio = streamer_priv->streamer_mmio;
__u8 __iomem *streamer_mmio = streamer_priv->streamer_mmio;
unsigned long flags;
int i;
......@@ -1275,7 +1275,7 @@ static void streamer_set_rx_mode(struct net_device *dev)
{
struct streamer_private *streamer_priv =
(struct streamer_private *) dev->priv;
__u8 *streamer_mmio = streamer_priv->streamer_mmio;
__u8 __iomem *streamer_mmio = streamer_priv->streamer_mmio;
__u8 options = 0;
struct dev_mc_list *dmi;
unsigned char dev_mc_address[5];
......@@ -1334,7 +1334,7 @@ static void streamer_set_rx_mode(struct net_device *dev)
static void streamer_srb_bh(struct net_device *dev)
{
struct streamer_private *streamer_priv = (struct streamer_private *) dev->priv;
__u8 *streamer_mmio = streamer_priv->streamer_mmio;
__u8 __iomem *streamer_mmio = streamer_priv->streamer_mmio;
__u16 srb_word;
writew(streamer_priv->srb, streamer_mmio + LAPA);
......@@ -1531,7 +1531,7 @@ static void streamer_arb_cmd(struct net_device *dev)
{
struct streamer_private *streamer_priv =
(struct streamer_private *) dev->priv;
__u8 *streamer_mmio = streamer_priv->streamer_mmio;
__u8 __iomem *streamer_mmio = streamer_priv->streamer_mmio;
__u8 header_len;
__u16 frame_len, buffer_len;
struct sk_buff *mac_frame;
......@@ -1747,7 +1747,7 @@ static void streamer_asb_bh(struct net_device *dev)
{
struct streamer_private *streamer_priv =
(struct streamer_private *) dev->priv;
__u8 *streamer_mmio = streamer_priv->streamer_mmio;
__u8 __iomem *streamer_mmio = streamer_priv->streamer_mmio;
if (streamer_priv->asb_queued == 1)
{
......@@ -1855,7 +1855,7 @@ static int sprintf_info(char *buffer, struct net_device *dev)
{
struct streamer_private *streamer_priv =
(struct streamer_private *) dev->priv;
__u8 *streamer_mmio = streamer_priv->streamer_mmio;
__u8 __iomem *streamer_mmio = streamer_priv->streamer_mmio;
struct streamer_adapter_addr_table sat;
struct streamer_parameters_table spt;
int size = 0;
......@@ -1939,7 +1939,7 @@ static int streamer_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
{
int i;
struct streamer_private *streamer_priv = (struct streamer_private *) dev->priv;
u8 *streamer_mmio = streamer_priv->streamer_mmio;
u8 __iomem *streamer_mmio = streamer_priv->streamer_mmio;
switch(cmd) {
case IOCTL_SISR_MASK:
......
......@@ -293,7 +293,7 @@ struct streamer_private {
struct streamer_private *next;
struct pci_dev *pci_dev;
__u8 *streamer_mmio;
__u8 __iomem *streamer_mmio;
char *streamer_card_name;
spinlock_t streamer_lock;
......
......@@ -438,8 +438,8 @@ static int olympic_open(struct net_device *dev)
struct olympic_private *olympic_priv=(struct olympic_private *)dev->priv;
u8 __iomem *olympic_mmio=olympic_priv->olympic_mmio,*init_srb;
unsigned long flags, t;
char open_error[255] ;
int i, open_finished = 1 ;
u8 resp, err;
DECLARE_WAITQUEUE(wait,current) ;
......@@ -540,35 +540,33 @@ static int olympic_open(struct net_device *dev)
* timed out.
*/
if(readb(init_srb+2)== OLYMPIC_CLEAR_RET_CODE) {
switch (resp = readb(init_srb+2)) {
case OLYMPIC_CLEAR_RET_CODE:
printk(KERN_WARNING "%s: Adapter Open time out or error.\n", dev->name) ;
return -EIO ;
}
if(readb(init_srb+2)!=0) {
if (readb(init_srb+2) == 0x07) {
goto out;
case 0:
open_finished = 1;
break;
case 0x07:
if (!olympic_priv->olympic_ring_speed && open_finished) { /* Autosense , first time around */
printk(KERN_WARNING "%s: Retrying at different ring speed \n", dev->name);
open_finished = 0 ;
} else {
continue;
}
strcpy(open_error, open_maj_error[(readb(init_srb+7) & 0xf0) >> 4]) ;
strcat(open_error," - ") ;
strcat(open_error, open_min_error[(readb(init_srb+7) & 0x0f)]) ;
err = readb(init_srb+7);
if (!olympic_priv->olympic_ring_speed && ((readb(init_srb+7) & 0x0f) == 0x0d)) {
if (!olympic_priv->olympic_ring_speed && ((err & 0x0f) == 0x0d)) {
printk(KERN_WARNING "%s: Tried to autosense ring speed with no monitors present\n",dev->name);
printk(KERN_WARNING "%s: Please try again with a specified ring speed \n",dev->name);
free_irq(dev->irq, dev);
return -EIO ;
} else {
printk(KERN_WARNING "%s: %s - %s\n", dev->name,
open_maj_error[(err & 0xf0) >> 4],
open_min_error[(err & 0x0f)]);
}
goto out;
printk(KERN_WARNING "%s: %s\n",dev->name,open_error);
free_irq(dev->irq,dev) ;
return -EIO ;
} /* if autosense && open_finished */
} else if (init_srb[2] == 0x32) {
case 0x32:
printk(KERN_WARNING "%s: Invalid LAA: %02x:%02x:%02x:%02x:%02x:%02x\n",
dev->name,
olympic_priv->olympic_laa[0],
......@@ -577,15 +575,13 @@ static int olympic_open(struct net_device *dev)
olympic_priv->olympic_laa[3],
olympic_priv->olympic_laa[4],
olympic_priv->olympic_laa[5]) ;
free_irq(dev->irq,dev) ;
return -EIO ;
} else {
printk(KERN_WARNING "%s: Bad OPEN response: %x\n", dev->name,init_srb[2]);
free_irq(dev->irq, dev);
return -EIO;
goto out;
default:
printk(KERN_WARNING "%s: Bad OPEN response: %x\n", dev->name, resp);
goto out;
}
} else
open_finished = 1 ;
} while (!(open_finished)) ; /* Will only loop if ring speed mismatch re-open attempted && autosense is on */
if (readb(init_srb+18) & (1<<3))
......@@ -634,8 +630,7 @@ static int olympic_open(struct net_device *dev)
if (i==0) {
printk(KERN_WARNING "%s: Not enough memory to allocate rx buffers. Adapter disabled\n",dev->name);
free_irq(dev->irq, dev);
return -EIO;
goto out;
}
olympic_priv->rx_ring_dma_addr = pci_map_single(olympic_priv->pdev,olympic_priv->olympic_rx_ring,
......@@ -738,6 +733,9 @@ static int olympic_open(struct net_device *dev)
netif_start_queue(dev);
return 0;
out:
free_irq(dev->irq, dev);
return -EIO;
}
/*
......
......@@ -970,7 +970,7 @@ typedef struct {
* Host receive descriptor
*/
typedef struct {
unsigned char *card_ram_off; /* offset into card memory of the
unsigned char __iomem *card_ram_off; /* offset into card memory of the
desc */
RxFid rx_desc; /* card receive descriptor */
char *virtual_host_addr; /* virtual address of host receive
......@@ -982,7 +982,7 @@ typedef struct {
* Host transmit descriptor
*/
typedef struct {
unsigned char *card_ram_off; /* offset into card memory of the
unsigned char __iomem *card_ram_off; /* offset into card memory of the
desc */
TxFid tx_desc; /* card transmit descriptor */
char *virtual_host_addr; /* virtual address of host receive
......@@ -994,7 +994,7 @@ typedef struct {
* Host RID descriptor
*/
typedef struct {
unsigned char *card_ram_off; /* offset into card memory of the
unsigned char __iomem *card_ram_off; /* offset into card memory of the
descriptor */
Rid rid_desc; /* card RID descriptor */
char *virtual_host_addr; /* virtual address of host receive
......@@ -1203,8 +1203,8 @@ struct airo_info {
unsigned long ridbus; // phys addr of config_desc
struct sk_buff_head txq;// tx queue used by mpi350 code
struct pci_dev *pci;
unsigned char *pcimem;
unsigned char *pciaux;
unsigned char __iomem *pcimem;
unsigned char __iomem *pciaux;
unsigned char *shared;
dma_addr_t shared_dma;
int power;
......@@ -2029,8 +2029,8 @@ static int mpi_send_packet (struct net_device *dev)
memcpy(sendbuf, buffer, len);
}
memcpy((char *)ai->txfids[0].card_ram_off,
(char *)&ai->txfids[0].tx_desc, sizeof(TxFid));
memcpy_toio(ai->txfids[0].card_ram_off,
&ai->txfids[0].tx_desc, sizeof(TxFid));
OUT4500(ai, EVACK, 8);
......@@ -2460,7 +2460,7 @@ static int mpi_init_descriptors (struct airo_info *ai)
}
for (i=0; i<MPI_MAX_FIDS; i++) {
memcpy(ai->rxfids[i].card_ram_off,
memcpy_toio(ai->rxfids[i].card_ram_off,
&ai->rxfids[i].rx_desc, sizeof(RxFid));
}
......@@ -2476,7 +2476,7 @@ static int mpi_init_descriptors (struct airo_info *ai)
for (i=0; i<MPI_MAX_FIDS; i++) {
ai->txfids[i].tx_desc.valid = 1;
memcpy((char *)ai->txfids[i].card_ram_off,
memcpy_toio(ai->txfids[i].card_ram_off,
&ai->txfids[i].tx_desc, sizeof(TxFid));
}
ai->txfids[i-1].tx_desc.eoc = 1; /* Last descriptor has EOC set */
......@@ -2501,8 +2501,8 @@ static int mpi_init_descriptors (struct airo_info *ai)
return rc;
}
memcpy((char *)ai->config_desc.card_ram_off,
(char *)&ai->config_desc.rid_desc, sizeof(Rid));
memcpy_toio(ai->config_desc.card_ram_off,
&ai->config_desc.rid_desc, sizeof(Rid));
return rc;
}
......@@ -2520,7 +2520,7 @@ static int mpi_map_card(struct airo_info *ai, struct pci_dev *pci,
int rc = -1;
int i;
unsigned char *busaddroff,*vpackoff;
unsigned char *pciaddroff;
unsigned char __iomem *pciaddroff;
mem_start = pci_resource_start(pci, 1);
mem_len = pci_resource_len(pci, 1);
......@@ -3441,7 +3441,7 @@ static void mpi_receive_802_3(struct airo_info *ai)
MICBuffer micbuf;
#endif
memcpy ((char *)&rxd, ai->rxfids[0].card_ram_off, sizeof(rxd));
memcpy_fromio(&rxd, ai->rxfids[0].card_ram_off, sizeof(rxd));
/* Make sure we got something */
if (rxd.rdy && rxd.valid == 0) {
len = rxd.len + 12;
......@@ -3504,7 +3504,7 @@ static void mpi_receive_802_3(struct airo_info *ai)
rxd.valid = 1;
rxd.rdy = 0;
rxd.len = PKTSIZE;
memcpy (ai->rxfids[0].card_ram_off, (char *)&rxd, sizeof(rxd));
memcpy_toio(ai->rxfids[0].card_ram_off, &rxd, sizeof(rxd));
}
}
......@@ -3526,7 +3526,7 @@ void mpi_receive_802_11 (struct airo_info *ai)
u16 *buffer;
char *ptr = ai->rxfids[0].virtual_host_addr+4;
memcpy ((char *)&rxd, ai->rxfids[0].card_ram_off, sizeof(rxd));
memcpy_fromio(&rxd, ai->rxfids[0].card_ram_off, sizeof(rxd));
memcpy ((char *)&hdr, ptr, sizeof(hdr));
ptr += sizeof(hdr);
/* Bad CRC. Ignore packet */
......@@ -3610,7 +3610,7 @@ void mpi_receive_802_11 (struct airo_info *ai)
rxd.valid = 1;
rxd.rdy = 0;
rxd.len = PKTSIZE;
memcpy (ai->rxfids[0].card_ram_off, (char *)&rxd, sizeof(rxd));
memcpy_toio(ai->rxfids[0].card_ram_off, &rxd, sizeof(rxd));
}
}
......@@ -3990,8 +3990,8 @@ static int PC4500_readrid(struct airo_info *ai, u16 rid, void *pBuf, int len, in
cmd.cmd = CMD_ACCESS;
cmd.parm0 = rid;
memcpy((char *)ai->config_desc.card_ram_off,
(char *)&ai->config_desc.rid_desc, sizeof(Rid));
memcpy_toio(ai->config_desc.card_ram_off,
&ai->config_desc.rid_desc, sizeof(Rid));
rc = issuecommand(ai, &cmd, &rsp);
......@@ -4062,8 +4062,8 @@ static int PC4500_writerid(struct airo_info *ai, u16 rid,
cmd.cmd = CMD_WRITERID;
cmd.parm0 = rid;
memcpy((char *)ai->config_desc.card_ram_off,
(char *)&ai->config_desc.rid_desc, sizeof(Rid));
memcpy_toio(ai->config_desc.card_ram_off,
&ai->config_desc.rid_desc, sizeof(Rid));
if (len < 4 || len > 2047) {
printk(KERN_ERR "%s: len=%d\n",__FUNCTION__,len);
......@@ -7591,7 +7591,7 @@ int flashputbuf(struct airo_info *ai){
/* Write stuff */
if (test_bit(FLAG_MPI,&ai->flags))
memcpy(ai->pciaux + 0x8000, ai->flash, FLASHSIZE);
memcpy_toio(ai->pciaux + 0x8000, ai->flash, FLASHSIZE);
else {
OUT4500(ai,AUXPAGE,0x100);
OUT4500(ai,AUXOFF,0);
......
This diff is collapsed.
......@@ -58,7 +58,8 @@
static const char *arlan_diagnostic_info_string(struct net_device *dev)
{
volatile struct arlan_shmem *arlan = ((struct arlan_private *) dev->priv)->card;
struct arlan_private *priv = netdev_priv(dev);
volatile struct arlan_shmem __iomem *arlan = priv->card;
u_char diagnosticInfo;
READSHM(diagnosticInfo, arlan->diagnosticInfo, u_char);
......@@ -113,7 +114,8 @@ static const char *arlan_diagnostic_info_string(struct net_device *dev)
static const char *arlan_hardware_type_string(struct net_device *dev)
{
u_char hardwareType;
volatile struct arlan_shmem *arlan = ((struct arlan_private *) dev->priv)->card;
struct arlan_private *priv = netdev_priv(dev);
volatile struct arlan_shmem __iomem *arlan = priv->card;
READSHM(hardwareType, arlan->hardwareType, u_char);
switch (hardwareType)
......@@ -189,7 +191,8 @@ static void arlan_print_diagnostic_info(struct net_device *dev)
u_char diagnosticInfo;
u_short diagnosticOffset;
u_char hardwareType;
volatile struct arlan_shmem *arlan = ((struct arlan_private *) dev->priv)->card;
struct arlan_private *priv = netdev_priv(dev);
volatile struct arlan_shmem __iomem *arlan = priv->card;
// ARLAN_DEBUG_ENTRY("arlan_print_diagnostic_info");
......@@ -254,7 +257,8 @@ static int arlan_hw_test_memory(struct net_device *dev)
int i;
int memlen = sizeof(struct arlan_shmem) - 0xF; /* avoid control register */
volatile char *arlan_mem = (char *) (dev->mem_start);
volatile struct arlan_shmem *arlan = ((struct arlan_private *) dev->priv)->card;
struct arlan_private *priv = netdev_priv(dev);
volatile struct arlan_shmem __iomem *arlan = priv->card;
char pattern;
ptr = NULL;
......@@ -319,7 +323,8 @@ static int arlan_hw_test_memory(struct net_device *dev)
static int arlan_setup_card_by_book(struct net_device *dev)
{
u_char irqLevel, configuredStatusFlag;
volatile struct arlan_shmem *arlan = ((struct arlan_private *) dev->priv)->card;
struct arlan_private *priv = netdev_priv(dev);
volatile struct arlan_shmem __iomem *arlan = priv->card;
// ARLAN_DEBUG_ENTRY("arlan_setup_card");
......
......@@ -332,7 +332,7 @@ struct TxParam
/* Information that need to be kept for each board. */
struct arlan_private {
struct net_device_stats stats;
struct arlan_shmem * card;
struct arlan_shmem __iomem * card;
struct arlan_shmem * conf;
struct arlan_conf_stru * Conf;
......@@ -403,14 +403,12 @@ struct arlan_private {
#define ARLAN_COM_INT 0x80
#define TXLAST(dev) (((struct arlan_private *)dev->priv)->txRing[((struct arlan_private *)dev->priv)->txLast])
#define TXHEAD(dev) (((struct arlan_private *)dev->priv)->txRing[0])
#define TXTAIL(dev) (((struct arlan_private *)dev->priv)->txRing[1])
#define TXLAST(dev) (((struct arlan_private *)netdev_priv(dev))->txRing[((struct arlan_private *)netdev_priv(dev))->txLast])
#define TXHEAD(dev) (((struct arlan_private *)netdev_priv(dev))->txRing[0])
#define TXTAIL(dev) (((struct arlan_private *)netdev_priv(dev))->txRing[1])
#define TXBuffStart(dev) \
((int)(((struct arlan_private *)dev->priv)->card)->txBuffer) - ((int)(((struct arlan_private *)dev->priv)->card) )
#define TXBuffEnd(dev) \
((int)(((struct arlan_private *)dev->priv)->card)->rxBuffer) - ((int)(((struct arlan_private *)dev->priv)->card)
#define TXBuffStart(dev) offsetof(struct arlan_shmem, txBuffer)
#define TXBuffEnd(dev) offsetof(struct arlan_shmem, xxBuffer)
#define READSHM(to,from,atype) {\
atype tmp;\
......@@ -451,16 +449,16 @@ struct arlan_private {
#define registrationBad(dev)\
( ( READSHMB(((struct arlan_private *)dev->priv)->card->registrationMode) > 0) && \
( READSHMB(((struct arlan_private *)dev->priv)->card->registrationStatus) == 0) )
( ( READSHMB(((struct arlan_private *)netdev_priv(dev))->card->registrationMode) > 0) && \
( READSHMB(((struct arlan_private *)netdev_priv(dev))->card->registrationStatus) == 0) )
#define readControlRegister(dev)\
READSHMB(((struct arlan_private *)dev->priv)->card->cntrlRegImage)
READSHMB(((struct arlan_private *)netdev_priv(dev))->card->cntrlRegImage)
#define writeControlRegister(dev, v){\
WRITESHMB(((struct arlan_private *)dev->priv)->card->cntrlRegImage ,((v) &0xF) );\
WRITESHMB(((struct arlan_private *)dev->priv)->card->controlRegister ,(v) );}
WRITESHMB(((struct arlan_private *)netdev_priv(dev))->card->cntrlRegImage ,((v) &0xF) );\
WRITESHMB(((struct arlan_private *)netdev_priv(dev))->card->controlRegister ,(v) );}
#define arlan_interrupt_lancpu(dev) {\
......
......@@ -213,7 +213,7 @@ static dev_link_t *netwave_attach(void); /* Create instance */
static void netwave_detach(dev_link_t *); /* Destroy instance */
/* Hardware configuration */
static void netwave_doreset(ioaddr_t iobase, u_char* ramBase);
static void netwave_doreset(ioaddr_t iobase, u_char __iomem *ramBase);
static void netwave_reset(struct net_device *dev);
/* Misc device stuff */
......@@ -321,7 +321,7 @@ typedef struct netwave_private {
dev_link_t link;
spinlock_t spinlock; /* Serialize access to the hardware (SMP) */
dev_node_t node;
u_char *ramBase;
u_char __iomem *ramBase;
int timeoutCounter;
int lastExec;
struct timer_list watchdog; /* To avoid blocking state */
......@@ -340,12 +340,12 @@ static struct net_device_stats *netwave_get_stats(struct net_device *dev);
* The Netwave card is little-endian, so won't work for big endian
* systems.
*/
static inline unsigned short get_uint16(u_char* staddr)
static inline unsigned short get_uint16(u_char __iomem *staddr)
{
return readw(staddr); /* Return only 16 bits */
}
static inline short get_int16(u_char* staddr)
static inline short get_int16(u_char __iomem * staddr)
{
return readw(staddr);
}
......@@ -362,7 +362,7 @@ static inline void wait_WOC(unsigned int iobase)
}
#ifdef WIRELESS_EXT
static void netwave_snapshot(netwave_private *priv, u_char *ramBase,
static void netwave_snapshot(netwave_private *priv, u_char __iomem *ramBase,
ioaddr_t iobase) {
u_short resultBuffer;
......@@ -397,8 +397,8 @@ static struct iw_statistics *netwave_get_wireless_stats(struct net_device *dev)
{
unsigned long flags;
ioaddr_t iobase = dev->base_addr;
netwave_private *priv = (netwave_private *) dev->priv;
u_char *ramBase = priv->ramBase;
netwave_private *priv = netdev_priv(dev);
u_char __iomem *ramBase = priv->ramBase;
struct iw_statistics* wstats;
wstats = &priv->iw_stats;
......@@ -446,7 +446,7 @@ static dev_link_t *netwave_attach(void)
dev = alloc_etherdev(sizeof(netwave_private));
if (!dev)
return NULL;
priv = dev->priv;
priv = netdev_priv(dev);
link = &priv->link;
link->priv = dev;
......@@ -589,8 +589,8 @@ static int netwave_set_nwid(struct net_device *dev,
{
unsigned long flags;
ioaddr_t iobase = dev->base_addr;
netwave_private *priv = (netwave_private *) dev->priv;
u_char *ramBase = priv->ramBase;
netwave_private *priv = netdev_priv(dev);
u_char __iomem *ramBase = priv->ramBase;
/* Disable interrupts & save flags */
spin_lock_irqsave(&priv->spinlock, flags);
......@@ -647,8 +647,8 @@ static int netwave_set_scramble(struct net_device *dev,
{
unsigned long flags;
ioaddr_t iobase = dev->base_addr;
netwave_private *priv = (netwave_private *) dev->priv;
u_char *ramBase = priv->ramBase;
netwave_private *priv = netdev_priv(dev);
u_char __iomem *ramBase = priv->ramBase;
/* Disable interrupts & save flags */
spin_lock_irqsave(&priv->spinlock, flags);
......@@ -763,8 +763,8 @@ static int netwave_get_snap(struct net_device *dev,
{
unsigned long flags;
ioaddr_t iobase = dev->base_addr;
netwave_private *priv = (netwave_private *) dev->priv;
u_char *ramBase = priv->ramBase;
netwave_private *priv = netdev_priv(dev);
u_char __iomem *ramBase = priv->ramBase;
/* Disable interrupts & save flags */
spin_lock_irqsave(&priv->spinlock, flags);
......@@ -996,14 +996,14 @@ do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0)
static void netwave_pcmcia_config(dev_link_t *link) {
client_handle_t handle = link->handle;
struct net_device *dev = link->priv;
netwave_private *priv = dev->priv;
netwave_private *priv = netdev_priv(dev);
tuple_t tuple;
cisparse_t parse;
int i, j, last_ret, last_fn;
u_char buf[64];
win_req_t req;
memreq_t mem;
u_char *ramBase = NULL;
u_char __iomem *ramBase = NULL;
DEBUG(0, "netwave_pcmcia_config(0x%p)\n", link);
......@@ -1069,7 +1069,7 @@ static void netwave_pcmcia_config(dev_link_t *link) {
/* Store base address of the common window frame */
ramBase = ioremap(req.Base, 0x8000);
((netwave_private*)dev->priv)->ramBase = ramBase;
priv->ramBase = ramBase;
dev->irq = link->irq.AssignedIRQ;
dev->base_addr = link->io.BasePort1;
......@@ -1118,7 +1118,7 @@ static void netwave_pcmcia_config(dev_link_t *link) {
static void netwave_release(dev_link_t *link)
{
struct net_device *dev = link->priv;
netwave_private *priv = dev->priv;
netwave_private *priv = netdev_priv(dev);
DEBUG(0, "netwave_release(0x%p)\n", link);
......@@ -1149,7 +1149,8 @@ static void netwave_release(dev_link_t *link)
*
*/
static int netwave_event(event_t event, int priority,
event_callback_args_t *args) {
event_callback_args_t *args)
{
dev_link_t *link = args->client_data;
struct net_device *dev = link->priv;
......@@ -1202,7 +1203,8 @@ static int netwave_event(event_t event, int priority,
*
* Proper hardware reset of the card.
*/
static void netwave_doreset(ioaddr_t ioBase, u_char* ramBase) {
static void netwave_doreset(ioaddr_t ioBase, u_char __iomem *ramBase)
{
/* Reset card */
wait_WOC(ioBase);
outb(0x80, ioBase + NETWAVE_REG_PMR);
......@@ -1217,8 +1219,8 @@ static void netwave_doreset(ioaddr_t ioBase, u_char* ramBase) {
*/
static void netwave_reset(struct net_device *dev) {
/* u_char state; */
netwave_private *priv = (netwave_private*) dev->priv;
u_char *ramBase = priv->ramBase;
netwave_private *priv = netdev_priv(dev);
u_char __iomem *ramBase = priv->ramBase;
ioaddr_t iobase = dev->base_addr;
DEBUG(0, "netwave_reset: Done with hardware reset\n");
......@@ -1298,8 +1300,8 @@ static int netwave_hw_xmit(unsigned char* data, int len,
DataOffset;
int tmpcount;
netwave_private *priv = (netwave_private *) dev->priv;
u_char* ramBase = priv->ramBase;
netwave_private *priv = netdev_priv(dev);
u_char __iomem * ramBase = priv->ramBase;
ioaddr_t iobase = dev->base_addr;
/* Disable interrupts & save flags */
......@@ -1390,11 +1392,12 @@ static int netwave_start_xmit(struct sk_buff *skb, struct net_device *dev) {
* ready to transmit another packet.
* 3. A command has completed execution.
*/
static irqreturn_t netwave_interrupt(int irq, void* dev_id, struct pt_regs *regs) {
static irqreturn_t netwave_interrupt(int irq, void* dev_id, struct pt_regs *regs)
{
ioaddr_t iobase;
u_char *ramBase;
u_char __iomem *ramBase;
struct net_device *dev = (struct net_device *)dev_id;
struct netwave_private *priv = dev->priv;
struct netwave_private *priv = netdev_priv(dev);
dev_link_t *link = &priv->link;
int i;
......@@ -1524,7 +1527,7 @@ static void netwave_watchdog(struct net_device *dev) {
} /* netwave_watchdog */
static struct net_device_stats *netwave_get_stats(struct net_device *dev) {
netwave_private *priv = (netwave_private*)dev->priv;
netwave_private *priv = netdev_priv(dev);
update_stats(dev);
......@@ -1547,7 +1550,7 @@ static struct net_device_stats *netwave_get_stats(struct net_device *dev) {
static void update_stats(struct net_device *dev) {
//unsigned long flags;
/* netwave_private *priv = (netwave_private*) dev->priv; */
/* netwave_private *priv = netdev_priv(dev); */
//spin_lock_irqsave(&priv->spinlock, flags);
......@@ -1557,9 +1560,10 @@ static void update_stats(struct net_device *dev) {
//spin_unlock_irqrestore(&priv->spinlock, flags);
}
static int netwave_rx(struct net_device *dev) {
netwave_private *priv = (netwave_private*)(dev->priv);
u_char *ramBase = priv->ramBase;
static int netwave_rx(struct net_device *dev)
{
netwave_private *priv = netdev_priv(dev);
u_char __iomem *ramBase = priv->ramBase;
ioaddr_t iobase = dev->base_addr;
u_char rxStatus;
struct sk_buff *skb = NULL;
......@@ -1647,7 +1651,7 @@ static int netwave_rx(struct net_device *dev) {
}
static int netwave_open(struct net_device *dev) {
netwave_private *priv = dev->priv;
netwave_private *priv = netdev_priv(dev);
dev_link_t *link = &priv->link;
DEBUG(1, "netwave_open: starting.\n");
......@@ -1664,7 +1668,7 @@ static int netwave_open(struct net_device *dev) {
}
static int netwave_close(struct net_device *dev) {
netwave_private *priv = (netwave_private *)dev->priv;
netwave_private *priv = netdev_priv(dev);
dev_link_t *link = &priv->link;
DEBUG(1, "netwave_close: finishing.\n");
......@@ -1709,7 +1713,8 @@ module_exit(exit_netwave_cs);
static void set_multicast_list(struct net_device *dev)
{
ioaddr_t iobase = dev->base_addr;
u_char* ramBase = ((netwave_private*) dev->priv)->ramBase;
netwave_private *priv = netdev_priv(dev);
u_char __iomem * ramBase = priv->ramBase;
u_char rcvMode = 0;
#ifdef PCMCIA_DEBUG
......
......@@ -136,7 +136,8 @@ psa_read(struct net_device * dev,
u_char * b, /* buffer to fill */
int n) /* size to read */
{
u_char * ptr = ((u_char *)dev->mem_start) + PSA_ADDR + (o << 1);
net_local *lp = netdev_priv(dev);
u_char __iomem *ptr = lp->mem + PSA_ADDR + (o << 1);
while(n-- > 0)
{
......@@ -160,12 +161,13 @@ psa_write(struct net_device * dev,
u_char * b, /* Buffer in memory */
int n) /* Length of buffer */
{
u_char * ptr = ((u_char *) dev->mem_start) + PSA_ADDR + (o << 1);
net_local *lp = netdev_priv(dev);
u_char __iomem *ptr = lp->mem + PSA_ADDR + (o << 1);
int count = 0;
ioaddr_t base = dev->base_addr;
/* As there seem to have no flag PSA_BUSY as in the ISA model, we are
* oblige to verify this address to know when the PSA is ready... */
volatile u_char * verify = ((u_char *) dev->mem_start) + PSA_ADDR +
volatile u_char __iomem *verify = lp->mem + PSA_ADDR +
(psaoff(0, psa_comp_number) << 1);
/* Authorize writting to PSA */
......@@ -3948,17 +3950,16 @@ wv_hw_reset(struct net_device * dev)
static inline int
wv_pcmcia_config(dev_link_t * link)
{
client_handle_t handle;
client_handle_t handle = link->handle;
tuple_t tuple;
cisparse_t parse;
struct net_device * dev;
struct net_device * dev = (struct net_device *) link->priv;
int i;
u_char buf[64];
win_req_t req;
memreq_t mem;
net_local * lp = netdev_priv(dev);
handle = link->handle;
dev = (struct net_device *) link->priv;
#ifdef DEBUG_CONFIG_TRACE
printk(KERN_DEBUG "->wv_pcmcia_config(0x%p)\n", link);
......@@ -4045,7 +4046,8 @@ wv_pcmcia_config(dev_link_t * link)
break;
}
dev->mem_start = (u_long)ioremap(req.Base, req.Size);
lp->mem = ioremap(req.Base, req.Size);
dev->mem_start = (u_long)lp->mem;
dev->mem_end = dev->mem_start + req.Size;
mem.CardOffset = 0; mem.Page = 0;
......@@ -4062,8 +4064,8 @@ wv_pcmcia_config(dev_link_t * link)
netif_start_queue(dev);
#ifdef DEBUG_CONFIG_INFO
printk(KERN_DEBUG "wv_pcmcia_config: MEMSTART 0x%x IRQ %d IOPORT 0x%x\n",
(u_int) dev->mem_start, dev->irq, (u_int) dev->base_addr);
printk(KERN_DEBUG "wv_pcmcia_config: MEMSTART %p IRQ %d IOPORT 0x%x\n",
lp->mem, dev->irq, (u_int) dev->base_addr);
#endif
i = register_netdev(dev);
......@@ -4104,13 +4106,14 @@ static void
wv_pcmcia_release(dev_link_t *link)
{
struct net_device * dev = (struct net_device *) link->priv;
net_local * lp = netdev_priv(dev);
#ifdef DEBUG_CONFIG_TRACE
printk(KERN_DEBUG "%s: -> wv_pcmcia_release(0x%p)\n", dev->name, link);
#endif
/* Don't bother checking to see if these succeed or not */
iounmap((u_char *)dev->mem_start);
iounmap(lp->mem);
pcmcia_release_window(link->win);
pcmcia_release_configuration(link->handle);
pcmcia_release_io(link->handle, &link->io);
......
......@@ -645,6 +645,7 @@ struct net_local
int cell_search; /* Searching for new cell? */
struct timer_list cell_timer; /* Garbage collection */
#endif /* WAVELAN_ROAMING */
void __iomem *mem;
};
/**************************** PROTOTYPES ****************************/
......
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