* drivers/net/r6040.c warnings on x86_64 @ 2007-11-28 4:45 Andrew Morton 2007-11-28 7:06 ` Andrew Morton 0 siblings, 1 reply; 9+ messages in thread From: Andrew Morton @ 2007-11-28 4:45 UTC (permalink / raw) To: Sten Wang; +Cc: netdev drivers/net/r6040.c: In function 'rx_buf_alloc': drivers/net/r6040.c:262: warning: passing argument 2 of 'pci_map_single' makes pointer from integer without a cast drivers/net/r6040.c: In function 'r6040_up': drivers/net/r6040.c:631: warning: cast from pointer to integer of different size drivers/net/r6040.c:632: warning: cast to pointer from integer of different size drivers/net/r6040.c:637: warning: cast from pointer to integer of different size drivers/net/r6040.c:638: warning: cast to pointer from integer of different size can we fix these please? ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: drivers/net/r6040.c warnings on x86_64 2007-11-28 4:45 drivers/net/r6040.c warnings on x86_64 Andrew Morton @ 2007-11-28 7:06 ` Andrew Morton 2007-11-28 22:08 ` Pull request for 'r6040' branch Francois Romieu 0 siblings, 1 reply; 9+ messages in thread From: Andrew Morton @ 2007-11-28 7:06 UTC (permalink / raw) To: Sten Wang, netdev On Tue, 27 Nov 2007 20:45:36 -0800 Andrew Morton <akpm@google.com> wrote: > drivers/net/r6040.c: In function 'rx_buf_alloc': > drivers/net/r6040.c:262: warning: passing argument 2 of 'pci_map_single' makes pointer from integer without a cast > drivers/net/r6040.c: In function 'r6040_up': > drivers/net/r6040.c:631: warning: cast from pointer to integer of different size > drivers/net/r6040.c:632: warning: cast to pointer from integer of different size > drivers/net/r6040.c:637: warning: cast from pointer to integer of different size > drivers/net/r6040.c:638: warning: cast to pointer from integer of different size > > can we fix these please? it breaks the sparc64 build too drivers/net/r6040.c: In function `rx_buf_alloc': drivers/net/r6040.c:262: warning: passing arg 2 of `pci_map_single' makes pointer from integer without a cast drivers/net/r6040.c:262: warning: passing arg 2 of `pci_map_single' makes pointer from integer without a cast drivers/net/r6040.c:262: warning: passing arg 2 of `pci_map_single' makes pointer from integer without a cast drivers/net/r6040.c:262: warning: passing arg 2 of `pci_map_single' makes pointer from integer without a cast drivers/net/r6040.c:262: warning: passing arg 2 of `pci_map_single' makes pointer from integer without a cast drivers/net/r6040.c:262: warning: passing arg 2 of `pci_map_single' makes pointer from integer without a cast drivers/net/r6040.c: In function `r6040_up': drivers/net/r6040.c:631: warning: cast from pointer to integer of different size drivers/net/r6040.c:631: warning: cast from pointer to integer of different size drivers/net/r6040.c:631: warning: cast from pointer to integer of different size drivers/net/r6040.c:631: warning: cast from pointer to integer of different size drivers/net/r6040.c:631: warning: cast from pointer to integer of different size drivers/net/r6040.c:631: warning: cast from pointer to integer of different size drivers/net/r6040.c:632: error: implicit declaration of function `virt_to_bus' drivers/net/r6040.c:632: warning: cast to pointer from integer of different size drivers/net/r6040.c:637: warning: cast from pointer to integer of different size drivers/net/r6040.c:637: warning: cast from pointer to integer of different size drivers/net/r6040.c:637: warning: cast from pointer to integer of different size drivers/net/r6040.c:637: warning: cast from pointer to integer of different size drivers/net/r6040.c:637: warning: cast from pointer to integer of different size drivers/net/r6040.c:637: warning: cast from pointer to integer of different size drivers/net/r6040.c:638: warning: cast to pointer from integer of different size ^ permalink raw reply [flat|nested] 9+ messages in thread
* Pull request for 'r6040' branch 2007-11-28 7:06 ` Andrew Morton @ 2007-11-28 22:08 ` Francois Romieu 2007-11-28 22:09 ` [PATCH 1/4] r6040: compile error Francois Romieu ` (4 more replies) 0 siblings, 5 replies; 9+ messages in thread From: Francois Romieu @ 2007-11-28 22:08 UTC (permalink / raw) To: jeff; +Cc: Andrew Morton, Sten Wang, netdev Please pull from branch 'r6040' in repository git://git.kernel.org/pub/scm/linux/kernel/git/romieu/netdev-2.6.git r6040 to get the changes below. Distance from 'netdev-2.6-upstream' (02e063b58b7c7084bae3d599c54dcf26c8efa9b7) ------------------------------------------------------------------------------ 8dd657d2d82657c1d70219a704ccfe4fecfc55be f00c12227fe587b6c1bbb6b459394db29dc5fac0 c7eaa9bde00c778b53f778d49617353d3b9b0c21 cc27eeb9474a87b2073488f37d9e90e6a3557664 Diffstat -------- drivers/net/r6040.c | 138 ++++++++++++++++++++++------------------------- include/linux/pci_ids.h | 1 - 2 files changed, 64 insertions(+), 75 deletions(-) Shortlog -------- Francois Romieu (4): r6040: compile error r6040: remove virt_to_bus r6040: erroneous dev->priv r6040: cleanups Patch ----- diff --git a/drivers/net/r6040.c b/drivers/net/r6040.c index 1d7efa2..2334f4e 100644 --- a/drivers/net/r6040.c +++ b/drivers/net/r6040.c @@ -3,7 +3,7 @@ * * Copyright (C) 2004 Sten Wang <sten.wang@rdc.com.tw> * Copyright (C) 2007 - * Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us> + * Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us> * Florian Fainelli <florian@openwrt.org> * * This program is free software; you can redistribute it and/or @@ -60,7 +60,7 @@ #define PHY_CAP 0x01E1 /* PHY CHIP Register 4 */ /* Time in jiffies before concluding the transmitter is hung. */ -#define TX_TIMEOUT (6000 * HZ / 1000) +#define TX_TIMEOUT (6000 * HZ / 1000) #define TIMER_WUT (jiffies + HZ * 1)/* timer wakeup time : 1 second */ /* RDC MAC I/O Size */ @@ -126,8 +126,8 @@ #define TX_DCNT 0x80 /* TX descriptor count */ #define RX_DCNT 0x80 /* RX descriptor count */ #define MAX_BUF_SIZE 0x600 -#define ALLOC_DESC_SIZE ((TX_DCNT+RX_DCNT) * \ - sizeof(struct r6040_descriptor) + 0x10) +#define RX_DESC_SIZE (RX_DCNT * sizeof(struct r6040_descriptor)) +#define TX_DESC_SIZE (TX_DCNT * sizeof(struct r6040_descriptor)) #define MBCR_DEFAULT 0x012A /* MAC Bus Control Register */ #define MCAST_MAX 4 /* Max number multicast addresses to filter */ @@ -164,10 +164,12 @@ struct r6040_private { struct r6040_descriptor *rx_remove_ptr; struct r6040_descriptor *tx_insert_ptr; struct r6040_descriptor *tx_remove_ptr; + struct r6040_descriptor *rx_ring; + struct r6040_descriptor *tx_ring; + dma_addr_t rx_ring_dma; + dma_addr_t tx_ring_dma; u16 tx_free_desc, rx_free_desc, phy_addr, phy_mode; u16 mcr0, mcr1; - dma_addr_t desc_dma; - char *desc_pool; u16 switch_sig; struct net_device *dev; struct mii_if_info mii_if; @@ -233,8 +235,7 @@ static void mdio_write(struct net_device *dev, int mii_id, int reg, int val) phy_write(ioaddr, lp->phy_addr, reg, val); } -static void -r6040_tx_timeout(struct net_device *dev) +static void r6040_tx_timeout(struct net_device *dev) { struct r6040_private *priv = netdev_priv(dev); @@ -260,7 +261,7 @@ static void rx_buf_alloc(struct r6040_private *lp, struct net_device *dev) if (!descptr->skb_ptr) break; descptr->buf = cpu_to_le32(pci_map_single(lp->pdev, - descptr->skb_ptr->tail, + descptr->skb_ptr->data, MAX_BUF_SIZE, PCI_DMA_FROMDEVICE)); descptr->status = 0x8000; descptr = descptr->vndescp; @@ -291,6 +292,7 @@ static void r6040_down(struct net_device *dev) { struct r6040_private *lp = netdev_priv(dev); void __iomem *ioaddr = lp->base; + struct pci_dev *pdev = lp->pdev; int i; int limit = 2048; u16 *adrp; @@ -334,12 +336,11 @@ static void r6040_down(struct net_device *dev) } /* Free Descriptor memory */ - pci_free_consistent(lp->pdev, ALLOC_DESC_SIZE, - lp->desc_pool, lp->desc_dma); + pci_free_consistent(pdev, RX_DESC_SIZE, lp->rx_ring, lp->rx_ring_dma); + pci_free_consistent(pdev, TX_DESC_SIZE, lp->tx_ring, lp->tx_ring_dma); } -static int -r6040_close(struct net_device *dev) +static int r6040_close(struct net_device *dev) { struct r6040_private *lp = netdev_priv(dev); @@ -402,7 +403,7 @@ static void r6040_set_carrier(struct mii_if_info *mii) static int r6040_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) { struct r6040_private *lp = netdev_priv(dev); - struct mii_ioctl_data *data = (struct mii_ioctl_data *) &rq->ifr_data; + struct mii_ioctl_data *data = if_mii(rq); int rc; if (!netif_running(dev)) @@ -571,73 +572,58 @@ static irqreturn_t r6040_interrupt(int irq, void *dev_id) static void r6040_poll_controller(struct net_device *dev) { disable_irq(dev->irq); - r6040_interrupt(dev->irq, (void *)dev); + r6040_interrupt(dev->irq, dev); enable_irq(dev->irq); } #endif +static void r6040_init_ring_desc(struct r6040_descriptor *desc_ring, + dma_addr_t desc_dma, int size) +{ + struct r6040_descriptor *desc = desc_ring; + dma_addr_t mapping = desc_dma; + + while (size-- > 0) { + mapping += sizeof(sizeof(*desc)); + desc->ndesc = cpu_to_le32(mapping); + desc->vndescp = desc + 1; + desc++; + } + desc--; + desc->ndesc = cpu_to_le32(desc_dma); + desc->vndescp = desc_ring; +} /* Init RDC MAC */ static void r6040_up(struct net_device *dev) { struct r6040_private *lp = netdev_priv(dev); - struct r6040_descriptor *descptr; void __iomem *ioaddr = lp->base; - int i; - __le32 tmp_addr; - dma_addr_t desc_dma, start_dma; /* Initialize */ lp->tx_free_desc = TX_DCNT; lp->rx_free_desc = 0; /* Init descriptor */ - memset(lp->desc_pool, 0, ALLOC_DESC_SIZE); /* Let all descriptor = 0 */ - lp->tx_insert_ptr = (struct r6040_descriptor *)lp->desc_pool; - lp->tx_remove_ptr = lp->tx_insert_ptr; - lp->rx_insert_ptr = (struct r6040_descriptor *)lp->tx_insert_ptr + - TX_DCNT; - lp->rx_remove_ptr = lp->rx_insert_ptr; + lp->tx_remove_ptr = lp->tx_insert_ptr = lp->tx_ring; + lp->rx_remove_ptr = lp->rx_insert_ptr = lp->rx_ring; /* Init TX descriptor */ - descptr = lp->tx_insert_ptr; - desc_dma = lp->desc_dma; - start_dma = desc_dma; - for (i = 0; i < TX_DCNT; i++) { - descptr->ndesc = cpu_to_le32(desc_dma + - sizeof(struct r6040_descriptor)); - descptr->vndescp = (descptr + 1); - descptr = (descptr + 1); - desc_dma += sizeof(struct r6040_descriptor); - } - (descptr - 1)->ndesc = cpu_to_le32(start_dma); - (descptr - 1)->vndescp = lp->tx_insert_ptr; + r6040_init_ring_desc(lp->tx_ring, lp->tx_ring_dma, TX_DCNT); /* Init RX descriptor */ - start_dma = desc_dma; - descptr = lp->rx_insert_ptr; - for (i = 0; i < RX_DCNT; i++) { - descptr->ndesc = cpu_to_le32(desc_dma + - sizeof(struct r6040_descriptor)); - descptr->vndescp = (descptr + 1); - descptr = (descptr + 1); - desc_dma += sizeof(struct r6040_descriptor); - } - (descptr - 1)->ndesc = cpu_to_le32(start_dma); - (descptr - 1)->vndescp = lp->rx_insert_ptr; + r6040_init_ring_desc(lp->rx_ring, lp->rx_ring_dma, RX_DCNT); /* Allocate buffer for RX descriptor */ rx_buf_alloc(lp, dev); - /* TX and RX descriptor start Register */ - tmp_addr = cpu_to_le32((u32)lp->tx_insert_ptr); - tmp_addr = virt_to_bus((volatile void *)tmp_addr); - /* Lower 16-bits to MTD_SA0 */ - iowrite16(tmp_addr, ioaddr + MTD_SA0); - /* Higher 16-bits to MTD_SA1 */ - iowrite16((u16)(tmp_addr >> 16), ioaddr + MTD_SA1); - tmp_addr = cpu_to_le32((u32)lp->rx_insert_ptr); - tmp_addr = virt_to_bus((volatile void *)tmp_addr); - iowrite16(tmp_addr, ioaddr + MRD_SA0); - iowrite16((u16)(tmp_addr >> 16), ioaddr + MRD_SA1); + /* + * TX and RX descriptor start registers. + * Lower 16-bits to MxD_SA0. Higher 16-bits to MxD_SA1. + */ + iowrite16(lp->tx_ring_dma, ioaddr + MTD_SA0); + iowrite16(lp->tx_ring_dma >> 16, ioaddr + MTD_SA1); + + iowrite16(lp->rx_ring_dma, ioaddr + MRD_SA0); + iowrite16(lp->rx_ring_dma >> 16, ioaddr + MRD_SA1); /* Buffer Size Register */ iowrite16(MAX_BUF_SIZE, ioaddr + MR_BSR); @@ -685,7 +671,7 @@ static void r6040_up(struct net_device *dev) static void r6040_timer(unsigned long data) { struct net_device *dev = (struct net_device *)data; - struct r6040_private *lp = netdev_priv(dev->priv); + struct r6040_private *lp = netdev_priv(dev); void __iomem *ioaddr = lp->base; u16 phy_mode; @@ -727,10 +713,9 @@ static void r6040_mac_address(struct net_device *dev) iowrite16(adrp[2], ioaddr + MID_0H); } -static int -r6040_open(struct net_device *dev) +static int r6040_open(struct net_device *dev) { - struct r6040_private *lp = dev->priv; + struct r6040_private *lp = netdev_priv(dev); int ret; /* Request IRQ and Register interrupt handler */ @@ -743,11 +728,19 @@ r6040_open(struct net_device *dev) r6040_mac_address(dev); /* Allocate Descriptor memory */ - lp->desc_pool = pci_alloc_consistent(lp->pdev, - ALLOC_DESC_SIZE, &lp->desc_dma); - if (!lp->desc_pool) + lp->rx_ring = + pci_alloc_consistent(lp->pdev, RX_DESC_SIZE, &lp->rx_ring_dma); + if (!lp->rx_ring) return -ENOMEM; + lp->tx_ring = + pci_alloc_consistent(lp->pdev, TX_DESC_SIZE, &lp->tx_ring_dma); + if (!lp->tx_ring) { + pci_free_consistent(lp->pdev, RX_DESC_SIZE, lp->rx_ring, + lp->rx_ring_dma); + return -ENOMEM; + } + r6040_up(dev); napi_enable(&lp->napi); @@ -764,8 +757,7 @@ r6040_open(struct net_device *dev) return 0; } -static int -r6040_start_xmit(struct sk_buff *skb, struct net_device *dev) +static int r6040_start_xmit(struct sk_buff *skb, struct net_device *dev) { struct r6040_private *lp = netdev_priv(dev); struct r6040_descriptor *descptr; @@ -813,8 +805,7 @@ r6040_start_xmit(struct sk_buff *skb, struct net_device *dev) return ret; } -static void -r6040_multicast_list(struct net_device *dev) +static void r6040_multicast_list(struct net_device *dev) { struct r6040_private *lp = netdev_priv(dev); void __iomem *ioaddr = lp->base; @@ -941,7 +932,6 @@ static struct ethtool_ops netdev_ethtool_ops = { .get_link = netdev_get_link, }; - static int __devinit r6040_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) { @@ -1078,13 +1068,13 @@ static void __devexit r6040_remove_one(struct pci_dev *pdev) static struct pci_device_id r6040_pci_tbl[] = { - { PCI_DEVICE(PCI_VENDOR_ID_RDC, PCI_DEVICE_ID_RDC_R6040) }, - {0 } + { PCI_DEVICE(PCI_VENDOR_ID_RDC, 0x6040) }, + { 0 } }; MODULE_DEVICE_TABLE(pci, r6040_pci_tbl); static struct pci_driver r6040_driver = { - .name = "r6040", + .name = DRV_NAME, .id_table = r6040_pci_tbl, .probe = r6040_init_one, .remove = __devexit_p(r6040_remove_one), diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index e148e02..290f84c 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h @@ -2108,7 +2108,6 @@ #define PCI_DEVICE_ID_HERC_UNI 0x5832 #define PCI_VENDOR_ID_RDC 0x17f3 -#define PCI_DEVICE_ID_RDC_R6040 0x6040 #define PCI_VENDOR_ID_SITECOM 0x182d #define PCI_DEVICE_ID_SITECOM_DC105V2 0x3069 -- Ueimor ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 1/4] r6040: compile error 2007-11-28 22:08 ` Pull request for 'r6040' branch Francois Romieu @ 2007-11-28 22:09 ` Francois Romieu 2007-11-28 22:09 ` [PATCH 2/4] r6040: remove virt_to_bus Francois Romieu ` (3 subsequent siblings) 4 siblings, 0 replies; 9+ messages in thread From: Francois Romieu @ 2007-11-28 22:09 UTC (permalink / raw) To: jeff; +Cc: Andrew Morton, Sten Wang, netdev drivers/net/r6040.c: In function 'rx_buf_alloc': drivers/net/r6040.c:262: warning: passing argument 2 of 'pci_map_single' makes pointer from integer without a cast Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> --- drivers/net/r6040.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/net/r6040.c b/drivers/net/r6040.c index 1d7efa2..6a6329e 100644 --- a/drivers/net/r6040.c +++ b/drivers/net/r6040.c @@ -260,7 +260,7 @@ static void rx_buf_alloc(struct r6040_private *lp, struct net_device *dev) if (!descptr->skb_ptr) break; descptr->buf = cpu_to_le32(pci_map_single(lp->pdev, - descptr->skb_ptr->tail, + descptr->skb_ptr->data, MAX_BUF_SIZE, PCI_DMA_FROMDEVICE)); descptr->status = 0x8000; descptr = descptr->vndescp; -- 1.5.3.3 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/4] r6040: remove virt_to_bus 2007-11-28 22:08 ` Pull request for 'r6040' branch Francois Romieu 2007-11-28 22:09 ` [PATCH 1/4] r6040: compile error Francois Romieu @ 2007-11-28 22:09 ` Francois Romieu 2007-11-28 22:10 ` [PATCH 3/4] r6040: erroneous dev->priv Francois Romieu ` (2 subsequent siblings) 4 siblings, 0 replies; 9+ messages in thread From: Francois Romieu @ 2007-11-28 22:09 UTC (permalink / raw) To: jeff; +Cc: Andrew Morton, Sten Wang, netdev Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> --- drivers/net/r6040.c | 103 +++++++++++++++++++++++++-------------------------- 1 files changed, 50 insertions(+), 53 deletions(-) diff --git a/drivers/net/r6040.c b/drivers/net/r6040.c index 6a6329e..a106add 100644 --- a/drivers/net/r6040.c +++ b/drivers/net/r6040.c @@ -126,8 +126,8 @@ #define TX_DCNT 0x80 /* TX descriptor count */ #define RX_DCNT 0x80 /* RX descriptor count */ #define MAX_BUF_SIZE 0x600 -#define ALLOC_DESC_SIZE ((TX_DCNT+RX_DCNT) * \ - sizeof(struct r6040_descriptor) + 0x10) +#define RX_DESC_SIZE (RX_DCNT * sizeof(struct r6040_descriptor)) +#define TX_DESC_SIZE (TX_DCNT * sizeof(struct r6040_descriptor)) #define MBCR_DEFAULT 0x012A /* MAC Bus Control Register */ #define MCAST_MAX 4 /* Max number multicast addresses to filter */ @@ -164,10 +164,12 @@ struct r6040_private { struct r6040_descriptor *rx_remove_ptr; struct r6040_descriptor *tx_insert_ptr; struct r6040_descriptor *tx_remove_ptr; + struct r6040_descriptor *rx_ring; + struct r6040_descriptor *tx_ring; + dma_addr_t rx_ring_dma; + dma_addr_t tx_ring_dma; u16 tx_free_desc, rx_free_desc, phy_addr, phy_mode; u16 mcr0, mcr1; - dma_addr_t desc_dma; - char *desc_pool; u16 switch_sig; struct net_device *dev; struct mii_if_info mii_if; @@ -291,6 +293,7 @@ static void r6040_down(struct net_device *dev) { struct r6040_private *lp = netdev_priv(dev); void __iomem *ioaddr = lp->base; + struct pci_dev *pdev = lp->pdev; int i; int limit = 2048; u16 *adrp; @@ -334,8 +337,8 @@ static void r6040_down(struct net_device *dev) } /* Free Descriptor memory */ - pci_free_consistent(lp->pdev, ALLOC_DESC_SIZE, - lp->desc_pool, lp->desc_dma); + pci_free_consistent(pdev, RX_DESC_SIZE, lp->rx_ring, lp->rx_ring_dma); + pci_free_consistent(pdev, TX_DESC_SIZE, lp->tx_ring, lp->tx_ring_dma); } static int @@ -577,67 +580,53 @@ static void r6040_poll_controller(struct net_device *dev) #endif +static void r6040_init_ring_desc(struct r6040_descriptor *desc_ring, + dma_addr_t desc_dma, int size) +{ + struct r6040_descriptor *desc = desc_ring; + dma_addr_t mapping = desc_dma; + + while (size-- > 0) { + mapping += sizeof(sizeof(*desc)); + desc->ndesc = cpu_to_le32(mapping); + desc->vndescp = desc + 1; + desc++; + } + desc--; + desc->ndesc = cpu_to_le32(desc_dma); + desc->vndescp = desc_ring; +} + /* Init RDC MAC */ static void r6040_up(struct net_device *dev) { struct r6040_private *lp = netdev_priv(dev); - struct r6040_descriptor *descptr; void __iomem *ioaddr = lp->base; - int i; - __le32 tmp_addr; - dma_addr_t desc_dma, start_dma; /* Initialize */ lp->tx_free_desc = TX_DCNT; lp->rx_free_desc = 0; /* Init descriptor */ - memset(lp->desc_pool, 0, ALLOC_DESC_SIZE); /* Let all descriptor = 0 */ - lp->tx_insert_ptr = (struct r6040_descriptor *)lp->desc_pool; - lp->tx_remove_ptr = lp->tx_insert_ptr; - lp->rx_insert_ptr = (struct r6040_descriptor *)lp->tx_insert_ptr + - TX_DCNT; - lp->rx_remove_ptr = lp->rx_insert_ptr; + lp->tx_remove_ptr = lp->tx_insert_ptr = lp->tx_ring; + lp->rx_remove_ptr = lp->rx_insert_ptr = lp->rx_ring; /* Init TX descriptor */ - descptr = lp->tx_insert_ptr; - desc_dma = lp->desc_dma; - start_dma = desc_dma; - for (i = 0; i < TX_DCNT; i++) { - descptr->ndesc = cpu_to_le32(desc_dma + - sizeof(struct r6040_descriptor)); - descptr->vndescp = (descptr + 1); - descptr = (descptr + 1); - desc_dma += sizeof(struct r6040_descriptor); - } - (descptr - 1)->ndesc = cpu_to_le32(start_dma); - (descptr - 1)->vndescp = lp->tx_insert_ptr; + r6040_init_ring_desc(lp->tx_ring, lp->tx_ring_dma, TX_DCNT); /* Init RX descriptor */ - start_dma = desc_dma; - descptr = lp->rx_insert_ptr; - for (i = 0; i < RX_DCNT; i++) { - descptr->ndesc = cpu_to_le32(desc_dma + - sizeof(struct r6040_descriptor)); - descptr->vndescp = (descptr + 1); - descptr = (descptr + 1); - desc_dma += sizeof(struct r6040_descriptor); - } - (descptr - 1)->ndesc = cpu_to_le32(start_dma); - (descptr - 1)->vndescp = lp->rx_insert_ptr; + r6040_init_ring_desc(lp->rx_ring, lp->rx_ring_dma, RX_DCNT); /* Allocate buffer for RX descriptor */ rx_buf_alloc(lp, dev); - /* TX and RX descriptor start Register */ - tmp_addr = cpu_to_le32((u32)lp->tx_insert_ptr); - tmp_addr = virt_to_bus((volatile void *)tmp_addr); - /* Lower 16-bits to MTD_SA0 */ - iowrite16(tmp_addr, ioaddr + MTD_SA0); - /* Higher 16-bits to MTD_SA1 */ - iowrite16((u16)(tmp_addr >> 16), ioaddr + MTD_SA1); - tmp_addr = cpu_to_le32((u32)lp->rx_insert_ptr); - tmp_addr = virt_to_bus((volatile void *)tmp_addr); - iowrite16(tmp_addr, ioaddr + MRD_SA0); - iowrite16((u16)(tmp_addr >> 16), ioaddr + MRD_SA1); + /* + * TX and RX descriptor start registers. + * Lower 16-bits to MxD_SA0. Higher 16-bits to MxD_SA1. + */ + iowrite16(lp->tx_ring_dma, ioaddr + MTD_SA0); + iowrite16(lp->tx_ring_dma >> 16, ioaddr + MTD_SA1); + + iowrite16(lp->rx_ring_dma, ioaddr + MRD_SA0); + iowrite16(lp->rx_ring_dma >> 16, ioaddr + MRD_SA1); /* Buffer Size Register */ iowrite16(MAX_BUF_SIZE, ioaddr + MR_BSR); @@ -743,10 +732,18 @@ r6040_open(struct net_device *dev) r6040_mac_address(dev); /* Allocate Descriptor memory */ - lp->desc_pool = pci_alloc_consistent(lp->pdev, - ALLOC_DESC_SIZE, &lp->desc_dma); - if (!lp->desc_pool) + lp->rx_ring = + pci_alloc_consistent(lp->pdev, RX_DESC_SIZE, &lp->rx_ring_dma); + if (!lp->rx_ring) + return -ENOMEM; + + lp->tx_ring = + pci_alloc_consistent(lp->pdev, TX_DESC_SIZE, &lp->tx_ring_dma); + if (!lp->tx_ring) { + pci_free_consistent(lp->pdev, RX_DESC_SIZE, lp->rx_ring, + lp->rx_ring_dma); return -ENOMEM; + } r6040_up(dev); -- 1.5.3.3 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/4] r6040: erroneous dev->priv 2007-11-28 22:08 ` Pull request for 'r6040' branch Francois Romieu 2007-11-28 22:09 ` [PATCH 1/4] r6040: compile error Francois Romieu 2007-11-28 22:09 ` [PATCH 2/4] r6040: remove virt_to_bus Francois Romieu @ 2007-11-28 22:10 ` Francois Romieu 2007-11-28 22:11 ` [PATCH 4/4] r6040: cleanups Francois Romieu 2007-12-01 21:57 ` Pull request for 'r6040' branch Jeff Garzik 4 siblings, 0 replies; 9+ messages in thread From: Francois Romieu @ 2007-11-28 22:10 UTC (permalink / raw) To: jeff; +Cc: Andrew Morton, Sten Wang, netdev Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> --- drivers/net/r6040.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/net/r6040.c b/drivers/net/r6040.c index a106add..71aa478 100644 --- a/drivers/net/r6040.c +++ b/drivers/net/r6040.c @@ -674,7 +674,7 @@ static void r6040_up(struct net_device *dev) static void r6040_timer(unsigned long data) { struct net_device *dev = (struct net_device *)data; - struct r6040_private *lp = netdev_priv(dev->priv); + struct r6040_private *lp = netdev_priv(dev); void __iomem *ioaddr = lp->base; u16 phy_mode; -- 1.5.3.3 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 4/4] r6040: cleanups 2007-11-28 22:08 ` Pull request for 'r6040' branch Francois Romieu ` (2 preceding siblings ...) 2007-11-28 22:10 ` [PATCH 3/4] r6040: erroneous dev->priv Francois Romieu @ 2007-11-28 22:11 ` Francois Romieu 2007-12-01 21:57 ` Pull request for 'r6040' branch Jeff Garzik 4 siblings, 0 replies; 9+ messages in thread From: Francois Romieu @ 2007-11-28 22:11 UTC (permalink / raw) To: jeff; +Cc: Andrew Morton, Sten Wang, netdev - whitespaces vs tabs - use 80 cols - use if_mii - use netdev_priv - remove useless cast to void * - PCI device id does not need to be globally available Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> --- drivers/net/r6040.c | 33 +++++++++++++-------------------- include/linux/pci_ids.h | 1 - 2 files changed, 13 insertions(+), 21 deletions(-) diff --git a/drivers/net/r6040.c b/drivers/net/r6040.c index 71aa478..2334f4e 100644 --- a/drivers/net/r6040.c +++ b/drivers/net/r6040.c @@ -3,7 +3,7 @@ * * Copyright (C) 2004 Sten Wang <sten.wang@rdc.com.tw> * Copyright (C) 2007 - * Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us> + * Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us> * Florian Fainelli <florian@openwrt.org> * * This program is free software; you can redistribute it and/or @@ -60,7 +60,7 @@ #define PHY_CAP 0x01E1 /* PHY CHIP Register 4 */ /* Time in jiffies before concluding the transmitter is hung. */ -#define TX_TIMEOUT (6000 * HZ / 1000) +#define TX_TIMEOUT (6000 * HZ / 1000) #define TIMER_WUT (jiffies + HZ * 1)/* timer wakeup time : 1 second */ /* RDC MAC I/O Size */ @@ -235,8 +235,7 @@ static void mdio_write(struct net_device *dev, int mii_id, int reg, int val) phy_write(ioaddr, lp->phy_addr, reg, val); } -static void -r6040_tx_timeout(struct net_device *dev) +static void r6040_tx_timeout(struct net_device *dev) { struct r6040_private *priv = netdev_priv(dev); @@ -341,8 +340,7 @@ static void r6040_down(struct net_device *dev) pci_free_consistent(pdev, TX_DESC_SIZE, lp->tx_ring, lp->tx_ring_dma); } -static int -r6040_close(struct net_device *dev) +static int r6040_close(struct net_device *dev) { struct r6040_private *lp = netdev_priv(dev); @@ -405,7 +403,7 @@ static void r6040_set_carrier(struct mii_if_info *mii) static int r6040_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) { struct r6040_private *lp = netdev_priv(dev); - struct mii_ioctl_data *data = (struct mii_ioctl_data *) &rq->ifr_data; + struct mii_ioctl_data *data = if_mii(rq); int rc; if (!netif_running(dev)) @@ -574,12 +572,11 @@ static irqreturn_t r6040_interrupt(int irq, void *dev_id) static void r6040_poll_controller(struct net_device *dev) { disable_irq(dev->irq); - r6040_interrupt(dev->irq, (void *)dev); + r6040_interrupt(dev->irq, dev); enable_irq(dev->irq); } #endif - static void r6040_init_ring_desc(struct r6040_descriptor *desc_ring, dma_addr_t desc_dma, int size) { @@ -716,10 +713,9 @@ static void r6040_mac_address(struct net_device *dev) iowrite16(adrp[2], ioaddr + MID_0H); } -static int -r6040_open(struct net_device *dev) +static int r6040_open(struct net_device *dev) { - struct r6040_private *lp = dev->priv; + struct r6040_private *lp = netdev_priv(dev); int ret; /* Request IRQ and Register interrupt handler */ @@ -761,8 +757,7 @@ r6040_open(struct net_device *dev) return 0; } -static int -r6040_start_xmit(struct sk_buff *skb, struct net_device *dev) +static int r6040_start_xmit(struct sk_buff *skb, struct net_device *dev) { struct r6040_private *lp = netdev_priv(dev); struct r6040_descriptor *descptr; @@ -810,8 +805,7 @@ r6040_start_xmit(struct sk_buff *skb, struct net_device *dev) return ret; } -static void -r6040_multicast_list(struct net_device *dev) +static void r6040_multicast_list(struct net_device *dev) { struct r6040_private *lp = netdev_priv(dev); void __iomem *ioaddr = lp->base; @@ -938,7 +932,6 @@ static struct ethtool_ops netdev_ethtool_ops = { .get_link = netdev_get_link, }; - static int __devinit r6040_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) { @@ -1075,13 +1068,13 @@ static void __devexit r6040_remove_one(struct pci_dev *pdev) static struct pci_device_id r6040_pci_tbl[] = { - { PCI_DEVICE(PCI_VENDOR_ID_RDC, PCI_DEVICE_ID_RDC_R6040) }, - {0 } + { PCI_DEVICE(PCI_VENDOR_ID_RDC, 0x6040) }, + { 0 } }; MODULE_DEVICE_TABLE(pci, r6040_pci_tbl); static struct pci_driver r6040_driver = { - .name = "r6040", + .name = DRV_NAME, .id_table = r6040_pci_tbl, .probe = r6040_init_one, .remove = __devexit_p(r6040_remove_one), diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index e148e02..290f84c 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h @@ -2108,7 +2108,6 @@ #define PCI_DEVICE_ID_HERC_UNI 0x5832 #define PCI_VENDOR_ID_RDC 0x17f3 -#define PCI_DEVICE_ID_RDC_R6040 0x6040 #define PCI_VENDOR_ID_SITECOM 0x182d #define PCI_DEVICE_ID_SITECOM_DC105V2 0x3069 -- 1.5.3.3 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: Pull request for 'r6040' branch 2007-11-28 22:08 ` Pull request for 'r6040' branch Francois Romieu ` (3 preceding siblings ...) 2007-11-28 22:11 ` [PATCH 4/4] r6040: cleanups Francois Romieu @ 2007-12-01 21:57 ` Jeff Garzik 4 siblings, 0 replies; 9+ messages in thread From: Jeff Garzik @ 2007-12-01 21:57 UTC (permalink / raw) To: Francois Romieu; +Cc: Andrew Morton, Sten Wang, netdev Francois Romieu wrote: > Please pull from branch 'r6040' in repository > > git://git.kernel.org/pub/scm/linux/kernel/git/romieu/netdev-2.6.git r6040 > > to get the changes below. > > Distance from 'netdev-2.6-upstream' (02e063b58b7c7084bae3d599c54dcf26c8efa9b7) > ------------------------------------------------------------------------------ > > 8dd657d2d82657c1d70219a704ccfe4fecfc55be > f00c12227fe587b6c1bbb6b459394db29dc5fac0 > c7eaa9bde00c778b53f778d49617353d3b9b0c21 > cc27eeb9474a87b2073488f37d9e90e6a3557664 > > Diffstat > -------- > > drivers/net/r6040.c | 138 ++++++++++++++++++++++------------------------- > include/linux/pci_ids.h | 1 - > 2 files changed, 64 insertions(+), 75 deletions(-) > > Shortlog > -------- > > Francois Romieu (4): > r6040: compile error > r6040: remove virt_to_bus > r6040: erroneous dev->priv > r6040: cleanups changes pulled, thanks for helping to clean this up! ^ permalink raw reply [flat|nested] 9+ messages in thread
* RE: drivers/net/r6040.c warnings on x86_64
@ 2007-11-28 8:38 Sten Wang (王世昌)
0 siblings, 0 replies; 9+ messages in thread
From: Sten Wang (王世昌) @ 2007-11-28 8:38 UTC (permalink / raw)
To: Andrew Morton, netdev; +Cc: Tim Chen (陳文斌)
Dear Andrew:
Thanks very much for your test.
Yes, you can fix it.
If you have any problem that we can help, please feel free to mail me or Tim.
Thnaks.
Best Regards,
Sten
=========================================================
E-mail Confidentiality Notice
The information in this e-mail is confidential and may be legally privileged otherwise protected from disclosure .It is intended solely for the addressee .Access to this e-mail by anyone else is unauthorized .If you are not the intended recipient, any disclosure, copying, distribution or any action taken or omitted to be taken in reliance on it, is prohibited and maybe unlawful.Please delete the message and any attachments from your computer system; and destroy all hard copies.
ALL Intellectual Property Rights of RDC Reserved.
-----Original Message-----
From: Andrew Morton [mailto:akpm@linux-foundation.org]
Sent: Wednesday, November 28, 2007 3:06 PM
To: Sten Wang (王世昌); netdev@vger.kernel.org
Subject: Re: drivers/net/r6040.c warnings on x86_64
On Tue, 27 Nov 2007 20:45:36 -0800 Andrew Morton <akpm@google.com> wrote:
> drivers/net/r6040.c: In function 'rx_buf_alloc':
> drivers/net/r6040.c:262: warning: passing argument 2 of 'pci_map_single' makes pointer from integer without a cast
> drivers/net/r6040.c: In function 'r6040_up':
> drivers/net/r6040.c:631: warning: cast from pointer to integer of different size
> drivers/net/r6040.c:632: warning: cast to pointer from integer of different size
> drivers/net/r6040.c:637: warning: cast from pointer to integer of different size
> drivers/net/r6040.c:638: warning: cast to pointer from integer of different size
>
> can we fix these please?
it breaks the sparc64 build too
drivers/net/r6040.c: In function `rx_buf_alloc':
drivers/net/r6040.c:262: warning: passing arg 2 of `pci_map_single' makes pointer from integer without a cast
drivers/net/r6040.c:262: warning: passing arg 2 of `pci_map_single' makes pointer from integer without a cast
drivers/net/r6040.c:262: warning: passing arg 2 of `pci_map_single' makes pointer from integer without a cast
drivers/net/r6040.c:262: warning: passing arg 2 of `pci_map_single' makes pointer from integer without a cast
drivers/net/r6040.c:262: warning: passing arg 2 of `pci_map_single' makes pointer from integer without a cast
drivers/net/r6040.c:262: warning: passing arg 2 of `pci_map_single' makes pointer from integer without a cast
drivers/net/r6040.c: In function `r6040_up':
drivers/net/r6040.c:631: warning: cast from pointer to integer of different size
drivers/net/r6040.c:631: warning: cast from pointer to integer of different size
drivers/net/r6040.c:631: warning: cast from pointer to integer of different size
drivers/net/r6040.c:631: warning: cast from pointer to integer of different size
drivers/net/r6040.c:631: warning: cast from pointer to integer of different size
drivers/net/r6040.c:631: warning: cast from pointer to integer of different size
drivers/net/r6040.c:632: error: implicit declaration of function `virt_to_bus'
drivers/net/r6040.c:632: warning: cast to pointer from integer of different size
drivers/net/r6040.c:637: warning: cast from pointer to integer of different size
drivers/net/r6040.c:637: warning: cast from pointer to integer of different size
drivers/net/r6040.c:637: warning: cast from pointer to integer of different size
drivers/net/r6040.c:637: warning: cast from pointer to integer of different size
drivers/net/r6040.c:637: warning: cast from pointer to integer of different size
drivers/net/r6040.c:637: warning: cast from pointer to integer of different size
drivers/net/r6040.c:638: warning: cast to pointer from integer of different size
^ permalink raw reply [flat|nested] 9+ messages in threadend of thread, other threads:[~2007-12-01 21:58 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2007-11-28 4:45 drivers/net/r6040.c warnings on x86_64 Andrew Morton 2007-11-28 7:06 ` Andrew Morton 2007-11-28 22:08 ` Pull request for 'r6040' branch Francois Romieu 2007-11-28 22:09 ` [PATCH 1/4] r6040: compile error Francois Romieu 2007-11-28 22:09 ` [PATCH 2/4] r6040: remove virt_to_bus Francois Romieu 2007-11-28 22:10 ` [PATCH 3/4] r6040: erroneous dev->priv Francois Romieu 2007-11-28 22:11 ` [PATCH 4/4] r6040: cleanups Francois Romieu 2007-12-01 21:57 ` Pull request for 'r6040' branch Jeff Garzik -- strict thread matches above, loose matches on Subject: below -- 2007-11-28 8:38 drivers/net/r6040.c warnings on x86_64 Sten Wang (王世昌)
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).