Re: [PATCH] Add pci class code for SATA

From: Conke Hu
Date: Tue Dec 19 2006 - 22:14:37 EST


On 12/20/06, Jeff Garzik <jeff@xxxxxxxxxx> wrote:
Conke Hu wrote:
> Add pci class code 0x0106 for SATA to pci_ids.h
>
> signed-off-by: conke.hu@xxxxxxxxx
> --------------------
> --- linux-2.6.20-rc1/include/linux/pci_ids.h.orig 2006-12-20
> 01:58:30.000000000 +0800
> +++ linux-2.6.20-rc1/include/linux/pci_ids.h 2006-12-20
> 01:59:07.000000000 +0800
> @@ -15,6 +15,7 @@
> #define PCI_CLASS_STORAGE_FLOPPY 0x0102
> #define PCI_CLASS_STORAGE_IPI 0x0103
> #define PCI_CLASS_STORAGE_RAID 0x0104
> +#define PCI_CLASS_STORAGE_SATA 0x0106
> #define PCI_CLASS_STORAGE_SAS 0x0107
> #define PCI_CLASS_STORAGE_OTHER 0x0180

Two comments:

1) I think "_SATA" is an inaccurate description. It should be _AHCI AFAICS.

2) Typically we don't add constants unless they are used somewhere...

Jeff


Hi Jeff,
According to PCI spec 3.0, 0x0106 means SATA controller, 0x010601
means AHCI and 0x010600 means vendor specific SATA controller. Pls see
the following table (PCI spec 3.0 P296):

Base Class Sub-Class Interface Meaning
--------------------------------------------------------
00h 00h SCSI bus controller
------------------------------------------------
01h xxh IDE controller
-----------------------------------------------
02h 00h Floppy disk controller
-----------------------------------------------------
03h 00h IPI bus controller
--------------------------------------------------
04h 00h RAID controller
01h ------------------------------------------------
20h ATA controller with ADMA interface
05h ---------------------------------------------------
30h ATA controller with ADMA interface
-------------------------------------------------------------------
00h Serial ATA controller–vendor specific interface
06h -----------------------------------------------------------------
01h Serial ATA controller–AHCI 1.0 interface
-------------------------------------------------------------------------
07h 00h Serial Attached SCSI (SAS) controller
---------------------------------------------------------------------
80h 00h Other mass storage controller
------------------------------------------------------------------------------


So, I think, the following macro is correct:
#define PCI_CLASS_STORAGE_SATA 0x0106
If you would define AHCI class code, it should be 0x010601, not 0x0106:
#define PCI_CLASS_STORAGE_SATA_AHCI 0x010601

And, I think that PCI_CLASS_STORAGE_SATA had better be added to
pci_ids.h since the class code 0x0106 is used more than once. e.g.
ahci.c uses the magic number 0x0106 twice, and it might be used more
in future.

Best regards,
Conke
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/