Add Port Multiplier related ATA constants and macros. Some of these will be used by ata_link implementation. --- include/linux/ata.h | 29 +++++++++++++++++++++++++++++ 1 files changed, 29 insertions(+), 0 deletions(-) 51b532b3a54ccca372762a5f3cad55e65807df27 diff --git a/include/linux/ata.h b/include/linux/ata.h index c494e1c..41ea837 100644 --- a/include/linux/ata.h +++ b/include/linux/ata.h @@ -154,6 +154,8 @@ enum { ATA_CMD_READ_NATIVE_MAX = 0xF8, ATA_CMD_READ_NATIVE_MAX_EXT = 0x27, ATA_CMD_READ_LOG_EXT = 0x2f, + ATA_CMD_PM_READ = 0xE4, + ATA_CMD_PM_WRITE = 0xE8, /* READ_LOG_EXT pages */ ATA_LOG_SATA_NCQ = 0x10, @@ -187,6 +189,28 @@ enum { 0=to device, 1=to host */ ATAPI_CDB_LEN = 16, + /* PM stuff */ + ATA_PM_MAX_PORTS = 15, + ATA_PM_CTRL_PORT = 15, + + ATA_PM_GSCR_DWORDS = 128, + ATA_PM_GSCR_PROD_ID = 0, + ATA_PM_GSCR_REV = 1, + ATA_PM_GSCR_PORT_INFO = 2, + ATA_PM_GSCR_ERROR = 32, + ATA_PM_GSCR_ERROR_EN = 33, + ATA_PM_GSCR_FEAT = 64, + ATA_PM_GSCR_FEAT_EN = 96, + + ATA_PM_PSCR_STATUS = 0, + ATA_PM_PSCR_ERROR = 1, + ATA_PM_PSCR_CONTROL = 2, + + ATA_PM_FEAT_BIST = (1 << 0), + ATA_PM_FEAT_PMREQ = (1 << 1), + ATA_PM_FEAT_DYNSSC = (1 << 2), + ATA_PM_FEAT_NOTIFY = (1 << 3), + /* cable types */ ATA_CBL_NONE = 0, ATA_CBL_PATA40 = 1, @@ -363,4 +387,9 @@ static inline int lba_48_ok(u64 block, u return ((block + n_block - 1) < ((u64)1 << 48)) && (n_block <= 65536); } +#define ata_pm_gscr_vendor(gscr) ((gscr)[ATA_PM_GSCR_PROD_ID] & 0xffff) +#define ata_pm_gscr_devid(gscr) ((gscr)[ATA_PM_GSCR_PROD_ID] >> 16) +#define ata_pm_gscr_rev(gscr) (((gscr)[ATA_PM_GSCR_REV] >> 8) & 0xff) +#define ata_pm_gscr_ports(gscr) ((gscr)[ATA_PM_GSCR_PORT_INFO] & 0xf) + #endif /* __LINUX_ATA_H__ */ -- 1.2.4 - : send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html