Hello. On 08/09/2013 08:49 AM, Marc C wrote:
From: Marc Carino <marc.ceeeee@xxxxxxxxx>
SATA 3.1 added an "auxiliary" field to the host-to-device FIS.
Since there is no analog between the new field and the ATA taskfile, a new element was added to 'struct ata_queued_cmd."
Signed-off-by: Marc Carino <marc.ceeeee@xxxxxxxxx>
[...]
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index c24354d..9d02c47 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c @@ -532,6 +532,34 @@ int atapi_cmd_type(u8 opcode) } /** + * ata_qc_to_fis - Convert struct ata_queued_cmd to SATA FIS structure + * @qc: struct ata_queued_cmd to convert + * @pmp: Port multiplier port + * @is_cmd: This FIS is for command + * @fis: Buffer into which data will output + * + * Converts a struct ata_queued_cmd to a Serial ATA + * FIS structure (Register - Host to Device). + * + * Beginning with SATA 3.1, the ATA taskfile does not completely describe + * all of the fields in a host-to-device FIS. More specifically, the + * 'auxiliary' field has no ATA taskfile analog, and thus requires us + * to populate the FIS via the ata_queued_cmd structure. + * + * LOCKING: + * Inherited from caller. + */ +void ata_qc_to_fis(const struct ata_queued_cmd *qc, u8 pmp, int is_cmd, u8 *fis) +{ + ata_tf_to_fis(&qc->tf, pmp, is_cmd, fis); + + fis[16] = qc->auxiliary & 0xff; + fis[17] = (qc->auxiliary >> 8) & 0xff; + fis[18] = (qc->auxiliary >> 16) & 0xff; + fis[19] = (qc->auxiliary >> 24) & 0xff; +} + +/** * ata_tf_to_fis - Convert ATA taskfile to SATA FIS structure * @tf: Taskfile to convert * @pmp: Port multiplier port @@ -6877,6 +6905,7 @@ EXPORT_SYMBOL_GPL(ata_sg_init); EXPORT_SYMBOL_GPL(ata_qc_complete); EXPORT_SYMBOL_GPL(ata_qc_complete_multiple); EXPORT_SYMBOL_GPL(atapi_cmd_type); +EXPORT_SYMBOL_GPL(ata_qc_to_fis); EXPORT_SYMBOL_GPL(ata_tf_to_fis);
I think we should now unexport this function and make it static since it would be no longer valid to call it from the drivers...
WBR, Sergei -- To unsubscribe from this list: 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