* [PATCH 1/6] Staging: Octeon: Fix compile error in drivers/staging/octeon/ethernet-mdio.c
2009-11-05 15:25 [PATCH 0/6] Misc driver fixes for 2.6.32 Ralf Baechle
@ 2009-11-05 15:25 ` Ralf Baechle
2009-11-05 15:25 ` [PATCH 2/6] Staging: Octeon: Use symbolic values for irq numbers Ralf Baechle
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Ralf Baechle @ 2009-11-05 15:25 UTC (permalink / raw)
To: Linus Torvalds
Cc: David Daney, Greg Kroah-Hartman, devel, linux-kernel, linux-mips,
netdev
[-- Attachment #1: 0002.patch --]
[-- Type: text/plain, Size: 960 bytes --]
From: David Daney <ddaney@caviumnetworks.com>
Signed-off-by: David Daney <ddaney@caviumnetworks.com>
Cc: Greg Kroah-Hartman <gregkh@suse.de>
Cc: devel@driverdev.osuosl.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-mips@linux-mips.org
Cc: netdev@vger.kernel.org
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
drivers/staging/octeon/ethernet-mdio.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: upstream-linus/drivers/staging/octeon/ethernet-mdio.c
===================================================================
--- upstream-linus.orig/drivers/staging/octeon/ethernet-mdio.c
+++ upstream-linus/drivers/staging/octeon/ethernet-mdio.c
@@ -170,7 +170,7 @@ static u32 cvm_oct_get_link(struct net_d
return ret;
}
-struct const ethtool_ops cvm_oct_ethtool_ops = {
+const struct ethtool_ops cvm_oct_ethtool_ops = {
.get_drvinfo = cvm_oct_get_drvinfo,
.get_settings = cvm_oct_get_settings,
.set_settings = cvm_oct_set_settings,
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH 2/6] Staging: Octeon: Use symbolic values for irq numbers.
2009-11-05 15:25 [PATCH 0/6] Misc driver fixes for 2.6.32 Ralf Baechle
2009-11-05 15:25 ` [PATCH 1/6] Staging: Octeon: Fix compile error in drivers/staging/octeon/ethernet-mdio.c Ralf Baechle
@ 2009-11-05 15:25 ` Ralf Baechle
2009-11-05 15:25 ` [PATCH 3/6] Staging: octeon-ethernet: Assign proper MAC addresses Ralf Baechle
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Ralf Baechle @ 2009-11-05 15:25 UTC (permalink / raw)
To: Linus Torvalds
Cc: David Daney, Greg Kroah-Hartman, devel, linux-kernel, linux-mips,
netdev
[-- Attachment #1: 0003.patch --]
[-- Type: text/plain, Size: 1062 bytes --]
From: David Daney <ddaney@caviumnetworks.com>
In addition to being magic numbers, the irq number passed to free_irq
is incorrect. We need to use the correct symbolic value instead.
Signed-off-by: David Daney <ddaney@caviumnetworks.com>
Cc: Greg Kroah-Hartman <gregkh@suse.de>
Cc: devel@driverdev.osuosl.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-mips@linux-mips.org
Cc: netdev@vger.kernel.org
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
drivers/staging/octeon/ethernet-spi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: upstream-linus/drivers/staging/octeon/ethernet-spi.c
===================================================================
--- upstream-linus.orig/drivers/staging/octeon/ethernet-spi.c
+++ upstream-linus/drivers/staging/octeon/ethernet-spi.c
@@ -317,6 +317,6 @@ void cvm_oct_spi_uninit(struct net_devic
cvmx_write_csr(CVMX_SPXX_INT_MSK(interface), 0);
cvmx_write_csr(CVMX_STXX_INT_MSK(interface), 0);
}
- free_irq(8 + 46, &number_spi_ports);
+ free_irq(OCTEON_IRQ_RML, &number_spi_ports);
}
}
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH 3/6] Staging: octeon-ethernet: Assign proper MAC addresses.
2009-11-05 15:25 [PATCH 0/6] Misc driver fixes for 2.6.32 Ralf Baechle
2009-11-05 15:25 ` [PATCH 1/6] Staging: Octeon: Fix compile error in drivers/staging/octeon/ethernet-mdio.c Ralf Baechle
2009-11-05 15:25 ` [PATCH 2/6] Staging: Octeon: Use symbolic values for irq numbers Ralf Baechle
@ 2009-11-05 15:25 ` Ralf Baechle
2009-11-05 15:26 ` [PATCH 5/6] VIDEO: Correct use of request_region/request_mem_region Ralf Baechle
2009-11-05 15:26 ` [PATCH 6/6] SERIAL: BCM63xx: Fix serial driver compile breakage Ralf Baechle
4 siblings, 0 replies; 6+ messages in thread
From: Ralf Baechle @ 2009-11-05 15:25 UTC (permalink / raw)
To: Linus Torvalds
Cc: David Daney, Greg Kroah-Hartman, devel, linux-kernel, linux-mips,
netdev
[-- Attachment #1: 0004.patch --]
[-- Type: text/plain, Size: 4018 bytes --]
From: David Daney <ddaney@caviumnetworks.com>
Allocate MAC addresses using the same method as the bootloader. This
avoids changing the MAC between bootloader and kernel operation as
well as avoiding duplicates and use of addresses outside of the
assigned range.
Signed-off-by: David Daney <ddaney@caviumnetworks.com>
Cc: Greg Kroah-Hartman <gregkh@suse.de>
Cc: devel@driverdev.osuosl.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-mips@linux-mips.org
Cc: netdev@vger.kernel.org
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
drivers/staging/octeon/ethernet.c | 53 +++++++++++++++++++++++++++++---------
1 file changed, 41 insertions(+), 12 deletions(-)
Index: upstream-linus/drivers/staging/octeon/ethernet.c
===================================================================
--- upstream-linus.orig/drivers/staging/octeon/ethernet.c
+++ upstream-linus/drivers/staging/octeon/ethernet.c
@@ -111,6 +111,16 @@ MODULE_PARM_DESC(disable_core_queueing,
"\tallows packets to be sent without lock contention in the packet\n"
"\tscheduler resulting in some cases in improved throughput.\n");
+
+/*
+ * The offset from mac_addr_base that should be used for the next port
+ * that is configured. By convention, if any mgmt ports exist on the
+ * chip, they get the first mac addresses, The ports controlled by
+ * this driver are numbered sequencially following any mgmt addresses
+ * that may exist.
+ */
+static unsigned int cvm_oct_mac_addr_offset;
+
/**
* Periodic timer to check auto negotiation
*/
@@ -474,16 +484,30 @@ static int cvm_oct_common_set_mac_addres
*/
int cvm_oct_common_init(struct net_device *dev)
{
- static int count;
- char mac[8] = { 0x00, 0x00,
- octeon_bootinfo->mac_addr_base[0],
- octeon_bootinfo->mac_addr_base[1],
- octeon_bootinfo->mac_addr_base[2],
- octeon_bootinfo->mac_addr_base[3],
- octeon_bootinfo->mac_addr_base[4],
- octeon_bootinfo->mac_addr_base[5] + count
- };
struct octeon_ethernet *priv = netdev_priv(dev);
+ struct sockaddr sa;
+ u64 mac = ((u64)(octeon_bootinfo->mac_addr_base[0] & 0xff) << 40) |
+ ((u64)(octeon_bootinfo->mac_addr_base[1] & 0xff) << 32) |
+ ((u64)(octeon_bootinfo->mac_addr_base[2] & 0xff) << 24) |
+ ((u64)(octeon_bootinfo->mac_addr_base[3] & 0xff) << 16) |
+ ((u64)(octeon_bootinfo->mac_addr_base[4] & 0xff) << 8) |
+ (u64)(octeon_bootinfo->mac_addr_base[5] & 0xff);
+
+ mac += cvm_oct_mac_addr_offset;
+ sa.sa_data[0] = (mac >> 40) & 0xff;
+ sa.sa_data[1] = (mac >> 32) & 0xff;
+ sa.sa_data[2] = (mac >> 24) & 0xff;
+ sa.sa_data[3] = (mac >> 16) & 0xff;
+ sa.sa_data[4] = (mac >> 8) & 0xff;
+ sa.sa_data[5] = mac & 0xff;
+
+ if (cvm_oct_mac_addr_offset >= octeon_bootinfo->mac_addr_count)
+ printk(KERN_DEBUG "%s: Using MAC outside of the assigned range:"
+ " %02x:%02x:%02x:%02x:%02x:%02x\n", dev->name,
+ sa.sa_data[0] & 0xff, sa.sa_data[1] & 0xff,
+ sa.sa_data[2] & 0xff, sa.sa_data[3] & 0xff,
+ sa.sa_data[4] & 0xff, sa.sa_data[5] & 0xff);
+ cvm_oct_mac_addr_offset++;
/*
* Force the interface to use the POW send if always_use_pow
@@ -496,14 +520,12 @@ int cvm_oct_common_init(struct net_devic
if (priv->queue != -1 && USE_HW_TCPUDP_CHECKSUM)
dev->features |= NETIF_F_IP_CSUM;
- count++;
-
/* We do our own locking, Linux doesn't need to */
dev->features |= NETIF_F_LLTX;
SET_ETHTOOL_OPS(dev, &cvm_oct_ethtool_ops);
cvm_oct_mdio_setup_device(dev);
- dev->netdev_ops->ndo_set_mac_address(dev, mac);
+ dev->netdev_ops->ndo_set_mac_address(dev, &sa);
dev->netdev_ops->ndo_change_mtu(dev, dev->mtu);
/*
@@ -620,6 +642,13 @@ static int __init cvm_oct_init_module(vo
pr_notice("cavium-ethernet %s\n", OCTEON_ETHERNET_VERSION);
+ if (OCTEON_IS_MODEL(OCTEON_CN52XX))
+ cvm_oct_mac_addr_offset = 2; /* First two are the mgmt ports. */
+ else if (OCTEON_IS_MODEL(OCTEON_CN56XX))
+ cvm_oct_mac_addr_offset = 1; /* First one is the mgmt port. */
+ else
+ cvm_oct_mac_addr_offset = 0;
+
cvm_oct_proc_initialize();
cvm_oct_rx_initialize();
cvm_oct_configure_common_hw();
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH 5/6] VIDEO: Correct use of request_region/request_mem_region
2009-11-05 15:25 [PATCH 0/6] Misc driver fixes for 2.6.32 Ralf Baechle
` (2 preceding siblings ...)
2009-11-05 15:25 ` [PATCH 3/6] Staging: octeon-ethernet: Assign proper MAC addresses Ralf Baechle
@ 2009-11-05 15:26 ` Ralf Baechle
2009-11-05 15:26 ` [PATCH 6/6] SERIAL: BCM63xx: Fix serial driver compile breakage Ralf Baechle
4 siblings, 0 replies; 6+ messages in thread
From: Ralf Baechle @ 2009-11-05 15:26 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Julia Lawall, linux-mips, linux-kernel
[-- Attachment #1: 0006.patch --]
[-- Type: text/plain, Size: 1986 bytes --]
From: Julia Lawall <julia@diku.dk>
Geert Uytterhoeven pointed out that in the case of drivers/video/gbefb.c,
the problem is actually the other way around; request_mem_region should be
used instead of request_region.
The semantic patch that finds/fixes this problem is as follows:
(http://coccinelle.lip6.fr/)
// <smpl>
@r1@
expression start;
@@
request_region(start,...)
@b1@
expression r1.start;
@@
request_mem_region(start,...)
@depends on !b1@
expression r1.start;
expression E;
@@
- release_mem_region
+ release_region
(start,E)
// </smpl>
Signed-off-by: Julia Lawall <julia@diku.dk>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
drivers/video/gbefb.c | 2 +-
drivers/video/tdfxfb.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
Index: upstream-linus/drivers/video/gbefb.c
===================================================================
--- upstream-linus.orig/drivers/video/gbefb.c
+++ upstream-linus/drivers/video/gbefb.c
@@ -1147,7 +1147,7 @@ static int __init gbefb_probe(struct pla
gbefb_setup(options);
#endif
- if (!request_region(GBE_BASE, sizeof(struct sgi_gbe), "GBE")) {
+ if (!request_mem_region(GBE_BASE, sizeof(struct sgi_gbe), "GBE")) {
printk(KERN_ERR "gbefb: couldn't reserve mmio region\n");
ret = -EBUSY;
goto out_release_framebuffer;
Index: upstream-linus/drivers/video/tdfxfb.c
===================================================================
--- upstream-linus.orig/drivers/video/tdfxfb.c
+++ upstream-linus/drivers/video/tdfxfb.c
@@ -1571,8 +1571,8 @@ out_err_iobase:
if (default_par->mtrr_handle >= 0)
mtrr_del(default_par->mtrr_handle, info->fix.smem_start,
info->fix.smem_len);
- release_mem_region(pci_resource_start(pdev, 2),
- pci_resource_len(pdev, 2));
+ release_region(pci_resource_start(pdev, 2),
+ pci_resource_len(pdev, 2));
out_err_screenbase:
if (info->screen_base)
iounmap(info->screen_base);
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH 6/6] SERIAL: BCM63xx: Fix serial driver compile breakage.
2009-11-05 15:25 [PATCH 0/6] Misc driver fixes for 2.6.32 Ralf Baechle
` (3 preceding siblings ...)
2009-11-05 15:26 ` [PATCH 5/6] VIDEO: Correct use of request_region/request_mem_region Ralf Baechle
@ 2009-11-05 15:26 ` Ralf Baechle
4 siblings, 0 replies; 6+ messages in thread
From: Ralf Baechle @ 2009-11-05 15:26 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Maxime Bizon, linux-mips, linux-serial, linux-kernel
[-- Attachment #1: 0009.patch --]
[-- Type: text/plain, Size: 1048 bytes --]
From: Maxime Bizon <mbizon@freebox.fr>
The driver missed an API change.
Signed-off-by: Maxime Bizon <mbizon@freebox.fr>
Cc: linux-mips@linux-mips.org
Cc: linux-serial@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
drivers/serial/bcm63xx_uart.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: upstream-linus/drivers/serial/bcm63xx_uart.c
===================================================================
--- upstream-linus.orig/drivers/serial/bcm63xx_uart.c
+++ upstream-linus/drivers/serial/bcm63xx_uart.c
@@ -242,7 +242,7 @@ static void bcm_uart_do_rx(struct uart_p
* higher than fifo size anyway since we're much faster than
* serial port */
max_count = 32;
- tty = port->info->port.tty;
+ tty = port->state->port.tty;
do {
unsigned int iestat, c, cstat;
char flag;
@@ -318,7 +318,7 @@ static void bcm_uart_do_tx(struct uart_p
return;
}
- xmit = &port->info->xmit;
+ xmit = &port->state->xmit;
if (uart_circ_empty(xmit))
goto txq_empty;
^ permalink raw reply [flat|nested] 6+ messages in thread