|
View:
New views
6 Messages
—
Rating Filter:
Alert me
|
|
|
[PATCH 0/6] Misc driver fixes for 2.6.32This is a series of patches which
o 1/6, 2/6, 3/6: Fixes for the Octeon ethernet driver in drivers/staging. The Octeon is a MIPS-based SOC so with permisson from Greg I'm merging these via the MIPS tree. o 4/6: A fix to a MIPS-specific SPI driver. Posted before, no comments were received. o 5/6: A fix to the resource allocation to the framebuffer of the MIPS- based SGI O2 and i686-based Visual Workstation. Also posted before, no comments were received. o 6/6: A fix to the serial driver for the BCM63xx which is a MIPS-based SOC. Ralf |
|
|
[PATCH 1/6] Staging: Octeon: Fix compile error in drivers/staging/octeon/etherne |
|
|
[PATCH 2/6] Staging: Octeon: Use symbolic values for irq numbers.From: David Daney <ddaney@...>
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@...> Cc: Greg Kroah-Hartman <gregkh@...> Cc: devel@... Cc: linux-kernel@... Cc: linux-mips@... Cc: netdev@... Signed-off-by: Ralf Baechle <ralf@...> 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); } } |
|
|
[PATCH 3/6] Staging: octeon-ethernet: Assign proper MAC addresses.From: David Daney <ddaney@...>
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@...> Cc: Greg Kroah-Hartman <gregkh@...> Cc: devel@... Cc: linux-kernel@... Cc: linux-mips@... Cc: netdev@... Signed-off-by: Ralf Baechle <ralf@...> 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(); |
|
|
[PATCH 5/6] VIDEO: Correct use of request_region/request_mem_reg |
|
|
[PATCH 6/6] SERIAL: BCM63xx: Fix serial driver compile breakage.From: Maxime Bizon <mbizon@...>
The driver missed an API change. Signed-off-by: Maxime Bizon <mbizon@...> Cc: linux-mips@... Cc: linux-serial@... Cc: linux-kernel@... Signed-off-by: Ralf Baechle <ralf@...> 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; |
| Free embeddable forum powered by Nabble | Forum Help |