sfrench/cifs-2.6.git
14 years agommc: don't use weight32()
Nicolas Pitre [Thu, 11 Oct 2007 05:06:03 +0000 (01:06 -0400)]
mmc: don't use weight32()

Using weight32() to determine if a value is a power of 2 is a rather
heavi weight solution.  The classic idiom is (x & (x - 1)) == 0, but
the kernel already provide a is_power_of_2 function for it.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agopxamci: support arbitrary block size
Nicolas Pitre [Tue, 9 Oct 2007 21:07:58 +0000 (17:07 -0400)]
pxamci: support arbitrary block size

The PXA has two transmit FIFOes, each32 byte deep.  when one FIFO is
full and the other one has been transmitted, they are automatically
swapped and DMA is triggered for another 32 byte burst.  However, when
there is less than 32 bytes left to send, the FIFO swap has to be done
manually. This is required for some SDIO transfers which are not
required to be multiples of 32 bytes.

A DMA completion interrupt is set for each descriptor which length isn't
a multiple of 32 in order to force the FIFO swap.  While at it, the DMA
interrupt handler has been made a bit more resilient against errors.

Signed-off-by: Nicolas Pitre <nico@marvell.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: make the IRQ thread more resilient in the presence of bad states
Nicolas Pitre [Wed, 3 Oct 2007 19:32:57 +0000 (15:32 -0400)]
sdio: make the IRQ thread more resilient in the presence of bad states

Currently we print a message about some bad states wrt function IRQ
handlers but return 0 from process_sdio_pending_irqs() nevertheless.
This can lead to an infinite loop as nothing might have cleared the
condition for the pending card interrupt from the host controller by
the time host->ops->enable_sdio_irq(host, 1) is called.

Signed-off-by: Nicolas Pitre <nico@marvell.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: fix IRQ diagnostic message
Nicolas Pitre [Wed, 3 Oct 2007 19:32:10 +0000 (15:32 -0400)]
sdio: fix IRQ diagnostic message

If func is actually null we won't get much from sdio_func_id(func).

Signed-off-by: Nicolas Pitre <nico@marvell.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdhci: remove old dma module params
Pierre Ossman [Sun, 30 Sep 2007 10:47:05 +0000 (12:47 +0200)]
sdhci: remove old dma module params

The forcedma and nodma module parameters can be replaced with the quirks
parameter, so remove the redundancy.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdhci: add SDHCI_QUIRK_BROKEN_DMA quirk
Feng Tang [Sun, 30 Sep 2007 10:44:18 +0000 (12:44 +0200)]
sdhci: add SDHCI_QUIRK_BROKEN_DMA quirk

Some controllers like ENE712 can't work properly with DMA mode,
add this quirk to force these kinds of HW work with PIO mode

Signed-off-by: Feng Tang <feng.tang@intel.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdhci: remove DMA capability check from controller's PCI Class reg
Feng Tang [Sat, 29 Sep 2007 06:15:05 +0000 (14:15 +0800)]
sdhci: remove DMA capability check from controller's PCI Class reg

Many host controllers don't fully follow the PCI spec to claim
whether they support DMA in PCI class register. Leave the driver
to judge it from the Capability register, quirks and module parameter

Signed-off-by: Feng Tang <feng.tang@intel.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdhci: fix a typo
Nicolas Pitre [Sat, 29 Sep 2007 14:46:20 +0000 (10:46 -0400)]
sdhci: fix a typo

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: Disabler for Ricoh MMC controller
Philip Langdale [Sat, 15 Sep 2007 19:54:08 +0000 (12:54 -0700)]
mmc: Disabler for Ricoh MMC controller

Thanks to Matt Domsch and Rezwanul Kabir at Dell, we know how to disable the
MMC controller on the multi-function Ricoh R5C832. The MMC controller needs
to be disabled or it will steal MMC cards from the SD controller where they
would otherwise be supported by the Linux SDHCI driver.

Signed-off-by: Philipl Langdale <philipl@overt.org>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: adaptive interrupt polling
Pierre Ossman [Thu, 27 Sep 2007 08:48:29 +0000 (10:48 +0200)]
sdio: adaptive interrupt polling

The interrupt polling frequency is a compromise between power usage and
interrupt latency. Unfortunately, it affects throughput rather severely
for devices which require an interrupt for every chunk of data.

By making the polling frequency adaptive, we get better throughput with
those devices without sacficing too much power. Polling will quickly
increase when there is an actual interrupt, and slowly fall back to the
idle frequency when the interrupts stop coming.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: pxamci: add SDIO card interrupt reporting capability
Bridge Wu [Tue, 25 Sep 2007 17:11:00 +0000 (19:11 +0200)]
mmc: pxamci: add SDIO card interrupt reporting capability

Again, only available from PXA27x.

Signed-off-by: Bridge Wu <mingqiao.wu@gmail.com>
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: pxamci: set proper buswidth capabilities according to PXA flavor
Bridge Wu [Tue, 25 Sep 2007 17:09:19 +0000 (19:09 +0200)]
mmc: pxamci: set proper buswidth capabilities according to PXA flavor

From PXA27x, it is possible to do 4-bit data transfers.

Signed-off-by: Bridge Wu <mingqiao.wu@gmail.com>
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: pxamci: set proper block capabilities according to PXA flavor
Nicolas Pitre [Mon, 24 Sep 2007 19:47:18 +0000 (15:47 -0400)]
mmc: pxamci: set proper block capabilities according to PXA flavor

From PXA27x, it is possible to do 2048-byte block transfers.

Signed-off-by: Nicolas Pitre <nico@marvell.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: pxamci: better pending IRQ determination
Bridge Wu [Tue, 25 Sep 2007 16:59:07 +0000 (18:59 +0200)]
mmc: pxamci: better pending IRQ determination

Pending interrupts should be determined from both I_REG and I_MASK
registers.

Signed-off-by: Bridge Wu <mingqiao.wu@gmail.com>
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agoarm: i.MX/MX1 SDHC implements SD cards read-only switch read-back
Pavel Pisa [Sun, 23 Sep 2007 20:59:01 +0000 (22:59 +0200)]
arm: i.MX/MX1 SDHC implements SD cards read-only switch read-back

The patch enables to define MMC host get_ro() method through platform data.

Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: add led trigger
Pierre Ossman [Mon, 24 Sep 2007 05:15:48 +0000 (07:15 +0200)]
mmc: add led trigger

Add a led trigger for each host controller that indicates if there
is a request active on the controller.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc_spi host driver
David Brownell [Wed, 8 Aug 2007 16:12:54 +0000 (09:12 -0700)]
mmc_spi host driver

This is the latest version of the MMC-over-SPI support.  It works
on 2.6.23-rc2 plus git-mmc (from rc1-mm2), along with the preceding
patches which teach the rest of the MMC stack about SPI.

The main issue of note is that sometimes cards need to be power cycled
to recover after certain faults.  Also, it may sometimes be necessary
to disable CRCs.  ("modprobe mmc_core use_spi_crc=n")

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Cc: mikael.starvik@axis.com,
Cc: Hans-Peter Nilsson <hp@axis.com>
Cc: Jan Nikitenko <jan.nikitenko@gmail.com>
Cc: Mike Lavender <mike@steroidmicros.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agoMMC core learns about SPI
David Brownell [Wed, 8 Aug 2007 16:11:32 +0000 (09:11 -0700)]
MMC core learns about SPI

Teach the MMC/SD/SDIO core about using SPI mode.

 - Use mmc_host_is_spi() so enumeration works through SPI signaling
   and protocols, not just the native versions.

 - Provide the SPI response type flags with each request issued,
   including requests from the new lock/unlock code.

 - Understand that cmd->resp[0] and mmc_get_status() results for SPI
   return different values than for "native" MMC/SD protocol; this
   affects resetting, checking card lock status, and some others.

 - Understand that some commands act a bit differently ... notably:
     * OP_COND command doesn't return the OCR
     * APP_CMD status doesn't have an R1_APP_CMD analogue

Those changes required some new and updated primitives:

 - Provide utilities to access two SPI-only requests, and one
   request that wasn't previously needed:
     * mmc_spi_read_ocr() ... SPI only
     * mmc_spi_set_crc() ... SPI only (override by module parm)
     * mmc_send_cid() ... for use without broadcast mode

 - Updated internal routines:
     * Previous mmc_send_csd() modified into mmc_send_cxd_native();
       it uses native "R2" responses, which include 16 bytes of data.
     * Previous mmc_send_ext_csd() becomes new mmc_send_cxd_data()
       helper for command-and-data access
     * Bugfix to that mmc_send_cxd_data() code:  dma-to-stack is
       unsafe/nonportable, so kmalloc a bounce buffer instead.

 - Modified mmc_send_ext_csd() now uses mmc_send_cxd_data() helper

 - Modified mmc_send_csd(), and new mmc_spi_send_cid(), routines use
   those helper routines based on whether they're native or SPI

The newest categories of cards supported by the MMC stack aren't expected
to work yet with SPI:  MMC or SD cards with over 4GB data, and SDIO.
All those cards support SPI mode, so eventually they should work too.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agoMMC/SD card driver learns SPI
David Brownell [Wed, 8 Aug 2007 16:10:23 +0000 (09:10 -0700)]
MMC/SD card driver learns SPI

Teaching the MMC/SD block card driver about SPI.

 - Provide the SPI response type flags with each request issued.

 - Understand that multiblock SPI writes don't use STOP_TRANSMISSION.

 - Correct check for APP_CMD failure.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agoMMC headers learn about SPI
David Brownell [Wed, 8 Aug 2007 16:09:01 +0000 (09:09 -0700)]
MMC headers learn about SPI

Teach the MMC/SD/SDIO system headers that some hosts use SPI mode

 - New host capabilities and status bits
    * MMC_CAP_SPI, with mmc_host_is_spi() test
    * mmc_host.use_spi_crc flag

 - SPI-specific declarations:
    * Response types, MMC_RSP_SPI_R*
    * Two SPI-only commands
    * Status bits used native to SPI:  R1_SPI_*, R2_SPI_*

 - Fix a few (unrelated) whitespace bugs in the headers.

 - Reorder a few mmc_host fields, removing several bytes of padding

None of these changes affect current code.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: store vendor strings
Pierre Ossman [Wed, 19 Sep 2007 16:42:16 +0000 (18:42 +0200)]
sdio: store vendor strings

Store vendor strings found in CISTPL_VERS_1 so that function drivers
can access them.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: increase power up delay
Pierre Ossman [Wed, 19 Sep 2007 16:38:50 +0000 (18:38 +0200)]
mmc: increase power up delay

Increase delay for power up in order to support some slower boards.

Also add some comments about why the delays are there.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdhci: sdio interrupt support
Pierre Ossman [Tue, 4 Sep 2007 05:59:18 +0000 (07:59 +0200)]
sdhci: sdio interrupt support

Add support for relaying the sdio interrupt signal from the card.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: fix recursion issues between sdio-uart driver and tty layer
Nicolas Pitre [Mon, 20 Aug 2007 21:17:37 +0000 (17:17 -0400)]
sdio: fix recursion issues between sdio-uart driver and tty layer

In a few places, sdio_uart_irq() is called directly instead of waiting
for the actual interrupt to be raised and the SDIO IRQ thread scheduled
in order to reduce latency.  However, some interaction with the tty core
may end up calling us back (serial echo, flow control, etc.) creating
two issues:

 - the host lock gets claimed twice from the same thread causing a
   deadlock;

 - the same direct calls to sdio_uart_irq() may be performed causing
   unexpected reentrancy into the IRQ handler.

This patch handles both of those issues.

Signed-off-by: Nicolas Pitre <npitre@mvista.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: add default c_ispeed/c_ospeed values to sdio_uart driver
Nicolas Pitre [Wed, 15 Aug 2007 17:27:29 +0000 (13:27 -0400)]
sdio: add default c_ispeed/c_ospeed values to sdio_uart driver

Note that the default baudrate is 4800 instead of 9600 as a convenience
because that's what GPS devices want which is still the main use for
this driver.

Signed-off-by: Nicolas Pitre <npitre@mvista.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: add sdio_f0_readb() and sdio_f0_writeb()
David Vrabel [Fri, 10 Aug 2007 12:29:46 +0000 (13:29 +0100)]
sdio: add sdio_f0_readb() and sdio_f0_writeb()

Add sdio_f0_readb() and sdio_f0_writeb() functions to reading and
writing function 0 registers.  Writes outside the vendor specific CCCR
registers (0xF0 - 0xFF) are not permitted.

Signed-off-by: David Vrabel <david.vrabel@csr.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: replace BUG_ON with WARN_ON
Pierre Ossman [Thu, 9 Aug 2007 11:23:56 +0000 (13:23 +0200)]
mmc: replace BUG_ON with WARN_ON

Replace all cases of BUG_ON with WARN_ON where there is a chance
(with varying degrees of slim) that the kernel can continue without
incidence.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: kmalloc + memset conversion to kzalloc
Mariusz Kozlowski [Tue, 31 Jul 2007 22:05:24 +0000 (00:05 +0200)]
sdio: kmalloc + memset conversion to kzalloc

Signed-off-by: Mariusz Kozlowski <m.kozlowski@tuxland.pl>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: extend sdio_readsb() and friends to handle any length of buffer
David Vrabel [Wed, 8 Aug 2007 13:24:21 +0000 (14:24 +0100)]
sdio: extend sdio_readsb() and friends to handle any length of buffer

Extend sdio_readsb(), sdio_writesb(), sdio_memcpy_fromio(), and
sdio_memcpy_toio() to handle any length of buffer by splitting the transfer
into several IO_RW_EXTENDED commands. Typically, a transfer would be split
into a single block mode transfer followed by a byte mode transfer for the
remainder but we also handle lack of block mode support and the block size
being greater than 512 (the maximum byte mode transfer size).

host->max_seg_size <= host->max_req_size so there's no need to check both
when determining the maximum data size for a single command.

Signed-off-by: David Vrabel <david.vrabel@csr.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: set the functions' block size
David Vrabel [Wed, 8 Aug 2007 13:23:48 +0000 (14:23 +0100)]
sdio: set the functions' block size

Before a driver is probed, set the function's block size to the default so the
driver is sure the block size is something sensible and it needn't explicitly
set it.

The default block size is the largest that's supported by both the card and
the host, with a maximum of 512 to ensure aribitrarily sized transfer use the
optimal (least) number of commands.

See http://lkml.org/lkml/2007/8/7/150 for reasons for the block size choice.

Signed-off-by: David Vrabel <david.vrabel@csr.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: add SDIO_FBR_BASE(f) macro
David Vrabel [Wed, 8 Aug 2007 13:23:05 +0000 (14:23 +0100)]
sdio: add SDIO_FBR_BASE(f) macro

Signed-off-by: David Vrabel <david.vrabel@csr.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: fix sdio timeout calculation
Pierre Ossman [Tue, 7 Aug 2007 12:11:55 +0000 (14:11 +0200)]
mmc: fix sdio timeout calculation

SDIO doesn't have a CSD so it uses different timeout values than
SD memory.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: fix incorrect divisor in debug output
Pierre Ossman [Tue, 7 Aug 2007 12:06:18 +0000 (14:06 +0200)]
mmc: fix incorrect divisor in debug output

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: enable wide bus mode
Pierre Ossman [Mon, 30 Jul 2007 16:23:53 +0000 (18:23 +0200)]
sdio: enable wide bus mode

Enable 4-bit data bus mode, according to host and card
capabilities.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: change clock speed
Pierre Ossman [Mon, 30 Jul 2007 15:15:07 +0000 (17:15 +0200)]
sdio: change clock speed

Change clock speed to the highest supported by the card.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agomake struct sdio_dev_attrs[] static
Adrian Bunk [Sun, 29 Jul 2007 14:58:09 +0000 (16:58 +0200)]
make struct sdio_dev_attrs[] static

On Wed, Jul 25, 2007 at 04:03:04AM -0700, Andrew Morton wrote:
>...
> Changes since 2.6.22-rc6-mm1:
>...
>  git-mmc.patch
>...
>  git trees
>...

sdio_dev_attrs[] can become static.

Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: add interface for host side SDIO interrupt reporting
Nicolas Pitre [Tue, 24 Jul 2007 06:09:39 +0000 (02:09 -0400)]
sdio: add interface for host side SDIO interrupt reporting

Signed-off-by: Nicolas Pitre <npitre@mvista.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: support IO_RW_EXTENDED
Pierre Ossman [Fri, 6 Jul 2007 11:35:01 +0000 (13:35 +0200)]
sdio: support IO_RW_EXTENDED

Support the multi-byte transfer operation, including handlers for
common operations like writel()/readl().

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: add /proc interface to sdio_uart driver
Nicolas Pitre [Thu, 5 Jul 2007 03:40:34 +0000 (23:40 -0400)]
sdio: add /proc interface to sdio_uart driver

This mimics what the serial_core does.  Useful for diagnostics.

Signed-off-by: Nicolas Pitre <npitre@mvista.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: UART/GPS driver
Nicolas Pitre [Sat, 30 Jun 2007 06:04:21 +0000 (02:04 -0400)]
sdio: UART/GPS driver

This currently only accepts the GPS class since that's all I have for
testing.  Tested with a Matsushita GPS and gpsd version 2.34.

Signed-off-by: Nicolas Pitre <npitre@mvista.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: core support for SDIO function interrupt
Nicolas Pitre [Sat, 30 Jun 2007 14:29:41 +0000 (16:29 +0200)]
sdio: core support for SDIO function interrupt

Signed-off-by: Nicolas Pitre <npitre@mvista.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: allow for mmc_claim_host to be aborted
Nicolas Pitre [Sat, 30 Jun 2007 14:21:52 +0000 (16:21 +0200)]
sdio: allow for mmc_claim_host to be aborted

It is sometimes necessary to give up on trying to claim the host lock,
especially if that happens in a thread that has to be stopped.

While at it, fix the description for mmc_claim_host() which was wrong.

Signed-off-by: Nicolas Pitre <npitre@mvista.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: defines for some standard interface types
Nicolas Pitre [Sun, 17 Jun 2007 01:40:07 +0000 (21:40 -0400)]
sdio: defines for some standard interface types

Signed-off-by: Nicolas Pitre <npitre@mvista.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: add basic sysfs attributes
Pierre Ossman [Sun, 17 Jun 2007 09:42:21 +0000 (11:42 +0200)]
sdio: add basic sysfs attributes

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: add modalias support
Pierre Ossman [Sun, 17 Jun 2007 09:34:23 +0000 (11:34 +0200)]
sdio: add modalias support

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: whip bus uevent handler into shape
Pierre Ossman [Sun, 17 Jun 2007 09:18:46 +0000 (11:18 +0200)]
mmc: whip bus uevent handler into shape

Make the mmc bus uevent callback look like all other subsystems.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: add device id table and matching
Pierre Ossman [Sat, 16 Jun 2007 13:54:55 +0000 (15:54 +0200)]
sdio: add device id table and matching

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: initialize mmc subsystem with subsys_initcall()
Nicolas Pitre [Sat, 16 Jun 2007 06:07:53 +0000 (02:07 -0400)]
mmc: initialize mmc subsystem with subsys_initcall()

The problem is that the sdio_bus must be registered before any SDIO
drivers are registered against it otherwise the kernel sulks.  Because
the sdio_bus registration happens through module_init (equivalent to
device_initcall), then any SDIO
drivers linked before the SDIO core code in the kernel will be initialized
first.

Upcoming SDIO function drivers are likely to be located outside the
drivers/mmc directory as it is common practice to group drivers according
to their function rather than the bus they use.  SDIO drivers are therefore
likely to appear at random location in the kernel link.

To make sure the sdio_bus is always initialized before any SDIO drivers,
let's move the MMC init to the subsys_initcall level.

Signed-off-by: Nicolas Pitre <npitre@mvista.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: split up common and function CIS parsing
Pierre Ossman [Mon, 30 Jul 2007 13:15:30 +0000 (15:15 +0200)]
sdio: split up common and function CIS parsing

Add a more clean separation between global, common CIS information
and the function specific one as we need the common information in
places where no specific function is specified.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: link unknown CIS tuples to the sdio_func structure
Nicolas Pitre [Sat, 16 Jun 2007 06:06:47 +0000 (02:06 -0400)]
sdio: link unknown CIS tuples to the sdio_func structure

This way those tuples that the core cares about are consumed by the core
code, and tuples that only function drivers might make sense of are
available to drivers.

Signed-off-by: Nicolas Pitre <npitre@mvista.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: initial CIS parsing code
Nicolas Pitre [Sat, 16 Jun 2007 06:04:16 +0000 (02:04 -0400)]
sdio: initial CIS parsing code

Signed-off-by: Nicolas Pitre <npitre@mvista.com>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: basic parsing of FBR
Pierre Ossman [Mon, 11 Jun 2007 19:01:00 +0000 (21:01 +0200)]
sdio: basic parsing of FBR

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agosdio: read and decode interesting parts of the CCCR
Pierre Ossman [Mon, 11 Jun 2007 18:25:43 +0000 (20:25 +0200)]
sdio: read and decode interesting parts of the CCCR

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: enable/disable functions for SDIO
Pierre Ossman [Sun, 27 May 2007 12:22:37 +0000 (14:22 +0200)]
mmc: enable/disable functions for SDIO

Like many other buses, the devices (functions) on the SDIO bus
must be enabled before they can be used. Add functions that allow
drivers to do so.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: add basic SDIO I/O operations
Pierre Ossman [Sun, 27 May 2007 10:57:15 +0000 (12:57 +0200)]
mmc: add basic SDIO I/O operations

Add command wrappers that simplify register access from SDIO
function drivers.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: add SDIO driver handling
Pierre Ossman [Sun, 27 May 2007 10:00:02 +0000 (12:00 +0200)]
mmc: add SDIO driver handling

Add basic driver handling to the SDIO device model.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: basic SDIO device model
Pierre Ossman [Sat, 26 May 2007 11:48:18 +0000 (13:48 +0200)]
mmc: basic SDIO device model

Add the sdio bus type and basic device handling.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: implement SDIO IO_RW_DIRECT operation
Pierre Ossman [Tue, 22 May 2007 18:25:21 +0000 (20:25 +0200)]
mmc: implement SDIO IO_RW_DIRECT operation

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: detect SDIO cards
Pierre Ossman [Mon, 21 May 2007 18:23:20 +0000 (20:23 +0200)]
mmc: detect SDIO cards

Really basic init sequence for SDIO cards.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: at91_mci: disable handling of blocks with size not multiple of 4 bytes
Marc Pignat [Thu, 9 Aug 2007 11:56:29 +0000 (13:56 +0200)]
mmc: at91_mci: disable handling of blocks with size not multiple of 4 bytes

This kind of transfer is not supported, so don't advertise it and make it
fail early.

Signed-off-by: Marc Pignat <marc.pignat@hevs.ch>
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: add missing printk levels
Pierre Ossman [Tue, 24 Jul 2007 19:53:43 +0000 (21:53 +0200)]
mmc: add missing printk levels

Some printk:s were missing an explicit level.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: remove confusing flag
Pierre Ossman [Tue, 24 Jul 2007 19:11:47 +0000 (21:11 +0200)]
mmc: remove confusing flag

The MMC_DATA_MULTI flag never had a proper definition of what it
means, so remove it and let the drivers check the block count in
the request.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: remove BYTEBLOCK capability
Pierre Ossman [Tue, 24 Jul 2007 18:38:53 +0000 (20:38 +0200)]
mmc: remove BYTEBLOCK capability

Remove the BYTEBLOCK capability and let the broken hosts fail the
requests with -EINVAL instead.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: mmc_set_data_timeout() parameter write is redundant
Pierre Ossman [Tue, 24 Jul 2007 17:16:54 +0000 (19:16 +0200)]
mmc: mmc_set_data_timeout() parameter write is redundant

The write parameter in mmc_set_data_timeout() is redundant as the
data structure contains information about the direction of the
transfer.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: read ext_csd version number
Pierre Ossman [Sun, 22 Jul 2007 22:34:07 +0000 (00:34 +0200)]
mmc: read ext_csd version number

Make sure we do not try to parse a structure we do not
understand.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: improve error code feedback
Pierre Ossman [Sun, 22 Jul 2007 21:08:30 +0000 (23:08 +0200)]
mmc: improve error code feedback

Now that we use "normal" error codes, improve the reporting and response
to error codes in the core.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agommc: remove custom error codes
Pierre Ossman [Sun, 22 Jul 2007 20:18:46 +0000 (22:18 +0200)]
mmc: remove custom error codes

Convert the MMC layer to use standard error codes and not its own,
incompatible values.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
14 years agoclockevents: remove the suspend/resume workaround^Wthinko
Thomas Gleixner [Sat, 22 Sep 2007 22:29:06 +0000 (22:29 +0000)]
clockevents: remove the suspend/resume workaround^Wthinko

In a desparate attempt to fix the suspend/resume problem on Andrews
VAIO I added a workaround which enforced the broadcast of the oneshot
timer on resume. This was actually resolving the problem on the VAIO
but was just a stupid workaround, which was not tackling the root
cause: the assignement of lower idle C-States in the ACPI processor_idle
code. The cpuidle patches, which utilize the dynamic tick feature and
go faster into deeper C-states exposed the problem again. The correct
solution is the previous patch, which prevents lower C-states across
the suspend/resume.

Remove the enforcement code, including the conditional broadcast timer
arming, which helped to pamper over the real problem for quite a time.
The oneshot broadcast flag for the cpu, which runs the resume code can
never be set at the time when this code is executed. It only gets set,
when the CPU is entering a lower idle C-State.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Len Brown <lenb@kernel.org>
Cc: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Cc: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
14 years agoACPI: disable lower idle C-states across suspend/resume
Thomas Gleixner [Sat, 22 Sep 2007 22:29:05 +0000 (22:29 +0000)]
ACPI: disable lower idle C-states across suspend/resume

device_suspend() calls ACPI suspend functions, which seems to have undesired
side effects on lower idle C-states. It took me some time to realize that
especially the VAIO BIOSes (both Andrews jinxed UP and my elfstruck SMP one)
show this effect. I'm quite sure that other bug reports against suspend/resume
about turning the system into a brick have the same root cause.

After fishing in the dark for quite some time, I realized that removing the ACPI
processor module before suspend (this removes the lower C-state functionality)
made the problem disappear. Interestingly enough the propability of having a
bricked box is influenced by various factors (interrupts, size of the ram image,
...). Even adding a bunch of printks in the wrong places made the problem go
away. The previous periodic tick implementation simply pampered over the
problem, which explains why the dyntick / clockevents changes made this more
prominent.

We avoid complex functionality during the boot process and we have to do the
same during suspend/resume. It is a similar scenario and equaly fragile.

Add suspend / resume functions to the ACPI processor code and disable the lower
idle C-states across suspend/resume. Fall back to the default idle
implementation (halt) instead.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Len Brown <lenb@kernel.org>
Cc: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Cc: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
14 years agoMerge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux...
Linus Torvalds [Sat, 22 Sep 2007 19:56:48 +0000 (12:56 -0700)]
Merge branch 'release' of git://git./linux/kernel/git/lenb/linux-acpi-2.6

* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6:
  ACPI: suspend: consolidate handling of Sx states addendum
  ACPI: suspend: consolidate handling of Sx states.
  ACPI: video: remove dmesg spam
  ACPI: video: _DOS=0 by default to prevent hotkey hang

14 years agoMerge branch 'for-linus' of git://oss.sgi.com:8090/xfs/xfs-2.6
Linus Torvalds [Sat, 22 Sep 2007 19:56:13 +0000 (12:56 -0700)]
Merge branch 'for-linus' of git://oss.sgi.com:8090/xfs/xfs-2.6

* 'for-linus' of git://oss.sgi.com:8090/xfs/xfs-2.6:
  [XFS] fix valid but harmless sparse warning
  [XFS] fix filestreams on 32-bit boxes

14 years agoKVM: Fix virtualization menu help text
Avi Kivity [Sat, 22 Sep 2007 12:43:45 +0000 (14:43 +0200)]
KVM: Fix virtualization menu help text

What guest drivers?

Cc: Jan Engelhardt <jengelh@computergmbh.de>
Signed-off-by: Avi Kivity <avi@qumranet.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
14 years agoPull suspend.now into release branch
Len Brown [Sat, 22 Sep 2007 01:55:34 +0000 (21:55 -0400)]
Pull suspend.now into release branch

14 years agoPull now into release branch
Len Brown [Sat, 22 Sep 2007 01:55:29 +0000 (21:55 -0400)]
Pull now into release branch

14 years agoACPI: suspend: consolidate handling of Sx states addendum
Frans Pop [Thu, 20 Sep 2007 20:27:44 +0000 (22:27 +0200)]
ACPI: suspend: consolidate handling of Sx states addendum

Make the S0 state be always reported as supported

Signed-off: Frans Pop <elendil@planet.nl>
Acked-by: Alexey Starikovskiy <astarikovskiy@suse.de>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Len Brown <len.brown@intel.com>
14 years agoMerge master.kernel.org:/home/rmk/linux-2.6-arm
Linus Torvalds [Fri, 21 Sep 2007 21:05:45 +0000 (14:05 -0700)]
Merge master.kernel.org:/home/rmk/linux-2.6-arm

* master.kernel.org:/home/rmk/linux-2.6-arm:
  [ARM] 4569/1: ep93xx_gpio_irq_type(): fix spurious enumeration offset for FGPIO handling
  [ARM] 4568/1: fix l2x0 cache invalidate handling of unaligned addresses

14 years agoRevert "x86_64: Quicklist support for x86_64"
Linus Torvalds [Fri, 21 Sep 2007 19:09:41 +0000 (12:09 -0700)]
Revert "x86_64: Quicklist support for x86_64"

This reverts commit 34feb2c83beb3bdf13535a36770f7e50b47ef299.

Suresh Siddha points out that this one breaks the fundamental
requirement that you cannot free page table pages before the TLB caches
are flushed.  The quicklists do not give the same kinds of guarantees
that the mmu_gather structure does, at least not in NUMA configurations.

Requested-by: Suresh Siddha <suresh.b.siddha@intel.com>
Acked-by: Andi Kleen <ak@suse.de>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Christoph Lameter <clameter@sgi.com>
Cc: Asit Mallick <asit.k.mallick@intel.com>
Cc: Tony Luck <tony.luck@intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
14 years agoMerge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
Linus Torvalds [Fri, 21 Sep 2007 17:00:52 +0000 (10:00 -0700)]
Merge branch 'upstream' of git://ftp.linux-mips.org/upstream-linus

* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus:
  [MIPS] BCM1480: include <linux/init.h>.
  [MIPS] BCM1480: Export zbbus_mhz.

14 years ago[MIPS] BCM1480: include <linux/init.h>.
Ralf Baechle [Fri, 21 Sep 2007 08:01:15 +0000 (09:01 +0100)]
[MIPS] BCM1480: include <linux/init.h>.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
14 years ago[MIPS] BCM1480: Export zbbus_mhz.
Ralf Baechle [Fri, 21 Sep 2007 07:59:07 +0000 (08:59 +0100)]
[MIPS] BCM1480: Export zbbus_mhz.

Symbol is required by the ZBus profiler.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
14 years agoMerge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfashe...
Linus Torvalds [Fri, 21 Sep 2007 16:52:20 +0000 (09:52 -0700)]
Merge branch 'upstream-linus' of git://git./linux/kernel/git/mfasheh/ocfs2

* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2:
  ocfs2: Pack vote message and response structures
  ocfs2: Don't double set write parameters
  ocfs2: Fix pos/len passed to ocfs2_write_cluster
  ocfs2: Allow smaller allocations during large writes

14 years agox86_64: Zero extend all registers after ptrace in 32bit entry path.
Andi Kleen [Fri, 21 Sep 2007 14:16:18 +0000 (16:16 +0200)]
x86_64: Zero extend all registers after ptrace in 32bit entry path.

Strictly it's only needed for eax.

It actually does a little more than strictly needed -- the other registers
are already zero extended.

Also remove the now unnecessary and non functional compat task check
in ptrace.

This is CVE-2007-4573

Found by Wojciech Purczynski

Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
14 years agoACPI: suspend: consolidate handling of Sx states.
Alexey Starikovskiy [Thu, 20 Sep 2007 17:32:35 +0000 (21:32 +0400)]
ACPI: suspend: consolidate handling of Sx states.

Recent changes to sleep initialization in ACPI dropped reporting of supported Sx
states above S3. Fix that and also move S5 init into same file as other Sx.
The only functional change is adding printk() for S4 and S5 cases.

Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
Acked-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Len Brown <len.brown@intel.com>
14 years agoocfs2: Pack vote message and response structures
Sunil Mushran [Thu, 20 Sep 2007 17:59:48 +0000 (10:59 -0700)]
ocfs2: Pack vote message and response structures

The ocfs2_vote_msg and ocfs2_response_msg structs needed to be
packed to ensure similar sizeofs in 32-bit and 64-bit arches. Without this,
we had inadvertantly broken 32/64 bit cross mounts.

Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com>
Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
14 years agoocfs2: Don't double set write parameters
Mark Fasheh [Wed, 19 Sep 2007 00:49:29 +0000 (17:49 -0700)]
ocfs2: Don't double set write parameters

The target page offsets were being incorrectly set a second time in
ocfs2_prepare_page_for_write(), which was causing problems on a 16k page
size kernel. Additionally, ocfs2_write_failure() was incorrectly using those
parameters instead of the parameters for the individual page being cleaned
up.

Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
14 years agoocfs2: Fix pos/len passed to ocfs2_write_cluster
Mark Fasheh [Mon, 17 Sep 2007 16:06:29 +0000 (09:06 -0700)]
ocfs2: Fix pos/len passed to ocfs2_write_cluster

This was broken for file systems whose cluster size is greater than page
size. Pos needs to be incremented as we loop through the descriptors, and
len needs to be capped to the size of a single cluster.

Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
14 years agoocfs2: Allow smaller allocations during large writes
Mark Fasheh [Mon, 17 Sep 2007 03:10:16 +0000 (20:10 -0700)]
ocfs2: Allow smaller allocations during large writes

The ocfs2 write code loops through a page much like the block code, except
that ocfs2 allocation units can be any size, including larger than page
size. Typically it's equal to or larger than page size - most kernels run 4k
pages, the minimum ocfs2 allocation (cluster) size.

Some changes introduced during 2.6.23 changed the way writes to pages are
handled, and inadvertantly broke support for > 4k page size. Instead of just
writing one cluster at a time, we now handle the whole page in one pass.

This means that multiple (small) seperate allocations might happen in the
same pass. The allocation code howver typically optimizes by getting the
maximum which was reserved. This triggered a BUG_ON in the extend code where
it'd ask for a single bit (for one part of a > 4k page) and get back more
than it asked for.

Fix this by providing a variant of the high level allocation function which
allows the caller to specify a maximum. The traditional function remains and
just calls the new one with a maximum determined from the initial
reservation.

Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
14 years agoMerge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik...
Linus Torvalds [Thu, 20 Sep 2007 20:25:35 +0000 (13:25 -0700)]
Merge branch 'upstream-linus' of /linux/kernel/git/jgarzik/libata-dev

* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev:
  [libata] ahci: add ATI SB800 PCI IDs
  libata-sff: Fix documentation
  libata: Update the blacklist with a few more devices

14 years agosignalfd simplification
Davide Libenzi [Thu, 20 Sep 2007 19:40:16 +0000 (12:40 -0700)]
signalfd simplification

This simplifies signalfd code, by avoiding it to remain attached to the
sighand during its lifetime.

In this way, the signalfd remain attached to the sighand only during
poll(2) (and select and epoll) and read(2).  This also allows to remove
all the custom "tsk == current" checks in kernel/signal.c, since
dequeue_signal() will only be called by "current".

I think this is also what Ben was suggesting time ago.

The external effect of this, is that a thread can extract only its own
private signals and the group ones.  I think this is an acceptable
behaviour, in that those are the signals the thread would be able to
fetch w/out signalfd.

Signed-off-by: Davide Libenzi <davidel@xmailserver.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
14 years agorpc: fix garbage in printk in svc_tcp_accept()
Wolfgang Walter [Thu, 20 Sep 2007 19:51:46 +0000 (15:51 -0400)]
rpc: fix garbage in printk in svc_tcp_accept()

we upgraded the kernel of a nfs-server from 2.6.17.11 to 2.6.22.6. Since
then we get the message

lockd: too many open TCP sockets, consider increasing the number of nfsd threads
lockd: last TCP connect from ^\\236^\É^D

These random characters in the second line are caused by a bug in
svc_tcp_accept.

(Note: there are two previous __svc_print_addr(sin, buf, sizeof(buf))
calls in this function, either of which would initialize buf correctly;
but both are inside "if"'s and are not necessarily executed.  This is
less obvious in the second case, which is inside a dprintk(), which is a
macro which expands to an if statement.)

Signed-off-by: Wolfgang Walter <wolfgang.walter@studentenwerk.mhn.de>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
14 years ago[libata] ahci: add ATI SB800 PCI IDs
henry su [Thu, 20 Sep 2007 20:07:33 +0000 (16:07 -0400)]
[libata] ahci: add ATI SB800 PCI IDs

ATI/AMD SB800 shares some device IDs with SB700,
and SB800 adds two more device IDs:0x4394,0x4395.

Signed-off-by: henry su <henry.su.ati@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
14 years agolibata-sff: Fix documentation
Alan Cox [Thu, 20 Sep 2007 14:03:07 +0000 (15:03 +0100)]
libata-sff: Fix documentation

Code moved to ioread/iowrite but the comment didn't
Also note a posting issue

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
14 years agolibata: Update the blacklist with a few more devices
Alan Cox [Thu, 20 Sep 2007 14:22:47 +0000 (15:22 +0100)]
libata: Update the blacklist with a few more devices

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
14 years agoMerge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Linus Torvalds [Thu, 20 Sep 2007 19:42:47 +0000 (12:42 -0700)]
Merge branch 'master' of /linux/kernel/git/davem/net-2.6

* 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
  [BNX2]: Add PHY workaround for 5709 A1.
  [PPP] L2TP: Fix skb handling in pppol2tp_xmit
  [PPP] L2TP: Fix skb handling in pppol2tp_recv_core
  [PPP] L2TP: Disallow non-UDP datagram sockets
  [PPP] pppoe: Fix double-free on skb after transmit failure
  [PKT_SCHED]: Fix 'SFQ qdisc crashes with limit of 2 packets'
  [NETFILTER]: MAINTAINERS update
  [NETFILTER]: nfnetlink_log: fix sending of multipart messages

14 years agoMerge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik...
Linus Torvalds [Thu, 20 Sep 2007 19:42:23 +0000 (12:42 -0700)]
Merge branch 'upstream-linus' of /linux/kernel/git/jgarzik/netdev-2.6

* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6:
  sky2: version 1.18
  sky2: receive FIFO checking
  sky2: fe+ chip support
  sky2: reorganize chip revision features
  sky2: ethtool speed report bug
  sky2: fix VLAN receive processing (resend)
  phy: export phy_mii_ioctl
  myri10ge: Add support for PCI device id 9

14 years agosky2: version 1.18
Stephen Hemminger [Wed, 19 Sep 2007 22:36:47 +0000 (15:36 -0700)]
sky2: version 1.18

Update version number

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
14 years agosky2: receive FIFO checking
Stephen Hemminger [Wed, 19 Sep 2007 22:36:46 +0000 (15:36 -0700)]
sky2: receive FIFO checking

A driver writer from another operating system hinted that
the versions of Yukon 2 chip with rambuffer (EC and XL) have
a hardware bug that if the FIFO ever gets completely full it
will hang. Sounds like a classic ring full vs ring empty wrap around
bug.

As a workaround, use the existing watchdog timer to check for
ring full lockup.

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
14 years agosky2: fe+ chip support
Stephen Hemminger [Wed, 19 Sep 2007 22:36:45 +0000 (15:36 -0700)]
sky2: fe+ chip support

Add support for newest Marvell chips.
The Yukon FE plus chip is found in some not yet released laptops.
Tested on hardware evaluation boards.

This version of the patch is for 2.6.23. It supersedes
the two previous patches that are sitting in netdev-2.6 (upstream branch).

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
14 years agosky2: reorganize chip revision features
Stephen Hemminger [Wed, 19 Sep 2007 22:36:44 +0000 (15:36 -0700)]
sky2: reorganize chip revision features

This patch should cause no functional changes in driver behaviour.
There are (too) many revisions of the Yukon 2 chip now. Instead of
adding more conditionals based on chip revision; rerganize into a
set of feature flags so adding new versions is less problematic.

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
14 years agosky2: ethtool speed report bug
Stephen Hemminger [Wed, 19 Sep 2007 22:36:43 +0000 (15:36 -0700)]
sky2: ethtool speed report bug

On 100mbit versions, the driver always reports gigabit speed
available. The correct modes are already computed, then overwritten.

Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>