sil24 defines for ATAPI and PM
PATCH 1/1 sil24 defines for ATAPI and PM
Here's some stuff that should help get ATAPI and port multipliers going.
I'll integrate the associated code into the driver eventually, but
I'm hoping Tejun or somebody will contribute that code for me.
Jeff
drivers/scsi/sata_sil24.c +40 -1
@@ -139,6 +139,7 @@ enum {PORT_CS_DEV_RST = (1 <<1 ),/* device reset */ PORT_CS_INIT = (1 <<2 ),/* port initialize */ PORT_CS_IRQ_WOC = (1 <<3 ),/* interrupt write one to clear */ +PORT_CS_CDB16 = (1 <<5 ),/* 0=12b cdb, 1=16b cdb */ PORT_CS_RESUME = (1 <<6 ),/* port resume */ PORT_CS_32BIT_ACTV = (1 <<10 ),/* 32-bit activation */ PORT_CS_PM_EN = (1 << 13), /* port multiplier enable */
@@ -188,11 +189,36 @@ enum {PORT_CERR_XFR_PCIPERR =35 ,/* PSD ecode 11 - PCI prity err during transfer */ PORT_CERR_SENDSERVICE =36 ,/* FIS received while sending service */ +/* bits of PRB control field */ +CTRL_PROTOCOL = (1 <<0 ),/* override def. ATA protocol */ +CTRL_PACKET_READ = (1 <<4 ),/* PACKET cmd read */ +CTRL_PACKET_WRITE = (1 <<5 ),/* PACKET cmd write */ +CTRL_NIEN = (1 <<6 ),/* Mask completion irq */ +CTRL_SRST = (1 <<7 ),/* Soft reset request (ign BSY?) */ + +/* PRB protocol field */ +PRB_PROT_PACKET = (1 <<16 ), +PRB_PROT_TCQ = (1 <<17 ), +PRB_PROT_NCQ = (1 <<18 ), +PRB_PROT_READ = (1 <<19 ), +PRB_PROT_WRITE = (1 <<20 ), +PRB_PROT_TRANSPARENT = (1 <<21 ), + +/* port RAM layout (0x000 - 0xFFF) */ +RAM_SLOT_SZ =0x80 ,/* size of one slot */ +RAM_SLOT_N =31 , +RAM_SLOT_PM_OFS =0xf80 , +RAM_SLOT_PM_SZ =8 ,/* struct sil24_pm_reg */ +RAM_SLOT_PM_N =16 , +/* * Other constants */ SGE_TRM = (1 <<31 ),/* Last SGE in chain */ -PRB_SOFT_RST = (1 <<7 ),/* Soft reset request (ign BSY?) */ +SGE_LNK = (1 <<30 ),/* linked list; +Points to SGT, not SGE */ +SGE_DRD = (1 <<29 ),/* discard data read (/dev/null) */ +/* data address ignored */ /* board id */ BID_SIL3124 = 0,
@@ -207,6 +233,19 @@ struct sil24_cmd_block {struct sil24_sge sge[LIBATA_MAX_PRD ]; }; +/* ATAPI PRB */ +struct sil24_atapi_block { +struct sil24_prb prb; +u8 cdb[16 ]; +struct sil24_sge sge[1 ]; +}; + +/* per-port multiplier set of registers */ +struct sil24_pm_reg { +u32 status; +u32 qactive; +}; +/* * ap->private_data *