[lkml]   [2005]   [May]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Subject[try2] [PATCH] Silicon Image SATA 3124 driver preview

My previous posting of this driver appears to be have disappeared into
the ether. Let's see if this gets through.

Silicon Image recently contributed a PREVIEW RELEASE (for review, not
production use) driver for their new 3124 series of cards.

The SiI 3124 cards, much like the AHCI hardware now appearing, is
among the first of the SATA cards to use a highly efficient command
delivery method, the FIS. Rather than emulate an ATA shadow register
set, FIS-based SATA controllers expose on-the-wire SATA FISs to the
OS driver. FIS-based SATA controllers tend to be more efficient,
and less error prone, than non-FIS-based controllers.

Download URL:

[email servers seem to have eaten the email that contained the sil24
driver in an inline patch]

My own review comments on this driver:

1) basically OK

2) I would prefer that bus reset be better integrated into libata core,
rather than moving most of the operations into sata_sil24 driver. I'm
trying to keep SATA PHY access as common as possible, across the many
pieces of SATA hardware out there. It remains to be seen, how possible
is this goal?...

3) When Port Multiplier support is enabled, it will need to be integrated
into libata core, so that all controllers can support it. Some
controllers will have "hardware assist" for PM, and others not. We'll
have to handle both.

4) Long delay in sil_wait_for_completion(). Long delays should be
converted into a sleep, or performed in some other method other than

5) [style] Linux kernel code style avoids what we call StudlyCaps, which
is the C++ way of separating words. Linux prefers "fis_type" to
"FisType", and "port_registers" or "port_regs" to "Port_Registers".

6) This driver does not appear to support 64-bit?

+ writel((u32) paddr, &port_base->CmdActivate[0].s.ActiveLow);

We definitely do not want to add any 32-bit assumptions into a new Linux

7) [bug] the following is unacceptably long, in issue_soft_reset:
+ udelay(10000); /* delay 10 ms */

8) [bug] ditto, in sil_init_pm()

9) your struct Port_Registers likely need the 'packed' gcc attribute

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-05-13 21:32    [W:0.029 / U:2.028 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site