Module Name: src Committed By: matt Date: Mon Mar 24 18:49:53 UTC 2014
Modified Files: src/sys/dev/ata [matt-nb5-mips64]: satafis_subr.c satafisreg.h satafisvar.h Log Message: Merge satafis changes from HEAD for ahcisata To generate a diff of this commit: cvs rdiff -u -r1.5.2.2 -r1.5.2.3 src/sys/dev/ata/satafis_subr.c cvs rdiff -u -r1.2.2.2 -r1.2.2.3 src/sys/dev/ata/satafisreg.h cvs rdiff -u -r1.3.2.2 -r1.3.2.3 src/sys/dev/ata/satafisvar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/ata/satafis_subr.c diff -u src/sys/dev/ata/satafis_subr.c:1.5.2.2 src/sys/dev/ata/satafis_subr.c:1.5.2.3 --- src/sys/dev/ata/satafis_subr.c:1.5.2.2 Wed Apr 21 00:27:34 2010 +++ src/sys/dev/ata/satafis_subr.c Mon Mar 24 18:49:53 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: satafis_subr.c,v 1.5.2.2 2010/04/21 00:27:34 matt Exp $ */ +/* $NetBSD: satafis_subr.c,v 1.5.2.3 2014/03/24 18:49:53 matt Exp $ */ /*- * Copyright (c) 2009 Jonathan A. Kollasch. @@ -56,7 +56,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: satafis_subr.c,v 1.5.2.2 2010/04/21 00:27:34 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: satafis_subr.c,v 1.5.2.3 2014/03/24 18:49:53 matt Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -69,8 +69,6 @@ __KERNEL_RCSID(0, "$NetBSD: satafis_subr #include <dev/ata/satafisreg.h> #include <dev/ata/satafisvar.h> -#include <dev/ic/wdcreg.h> /* for WDCTL_4BIT */ - #include "atapibus.h" void @@ -79,7 +77,7 @@ satafis_rhd_construct_cmd(struct ata_com memset(fis, 0, RHD_FISLEN); fis[fis_type] = RHD_FISTYPE; - fis[rhd_cdpmp] = 0x80; /* xxx magic */ + fis[rhd_c] = RHD_C; fis[rhd_command] = ata_c->r_command; fis[rhd_features] = ata_c->r_features; fis[rhd_sector] = ata_c->r_sector; @@ -87,9 +85,6 @@ satafis_rhd_construct_cmd(struct ata_com fis[rhd_cyl_hi] = (ata_c->r_cyl >> 8) & 0xff; fis[rhd_dh] = ata_c->r_head & 0x0f; fis[rhd_seccnt] = ata_c->r_count; - fis[rhd_control] = WDCTL_4BIT; - - return; } void @@ -103,7 +98,7 @@ satafis_rhd_construct_bio(struct ata_xfe memset(fis, 0, RHD_FISLEN); fis[fis_type] = RHD_FISTYPE; - fis[rhd_cdpmp] = 0x80; /* xxx magic */ + fis[rhd_c] = RHD_C; if (ata_bio->flags & ATA_LBA48) { fis[rhd_command] = (ata_bio->flags & ATA_READ) ? WDCC_READDMA_EXT : WDCC_WRITEDMA_EXT; @@ -125,8 +120,6 @@ satafis_rhd_construct_bio(struct ata_xfe fis[rhd_seccnt] = nblks & 0xff; fis[rhd_seccnt_exp] = (ata_bio->flags & ATA_LBA48) ? ((nblks >> 8) & 0xff) : 0; - fis[rhd_control] = WDCTL_4BIT; - return; } #if NATAPIBUS > 0 @@ -136,26 +129,30 @@ satafis_rhd_construct_atapi(struct ata_x memset(fis, 0, RHD_FISLEN); fis[fis_type] = RHD_FISTYPE; - fis[rhd_cdpmp] = 0x80; /* xxx magic */ + fis[rhd_c] = RHD_C; fis[rhd_command] = ATAPI_PKT_CMD; fis[rhd_features] = (xfer->c_flags & C_DMA) ? ATAPI_PKT_CMD_FTRE_DMA : 0; - fis[rhd_dh] = WDSD_IBM; /* XXX or WDSD_LBA? */ - fis[rhd_control] = WDCTL_4BIT; return; } #endif /* NATAPIBUS */ void -satafis_rdh_parse(struct ata_channel *chp, uint8_t *fis) +satafis_rdh_parse(struct ata_channel *chp, const uint8_t *fis) { -#if 0 - /* siisata doesn't do enough for this to work */ - KASSERT(fis[fis_type] == RDH_FISTYPE); -#endif chp->ch_status = fis[rdh_status]; chp->ch_error = fis[rdh_error]; +} - return; +void +satafis_rdh_cmd_readreg(struct ata_command *ata_c, const uint8_t *fis) +{ + ata_c->r_command = fis[rdh_status]; + ata_c->r_features = fis[rdh_error]; + ata_c->r_error = fis[rdh_error]; + ata_c->r_sector = fis[rdh_sector]; + ata_c->r_cyl = fis[rdh_cyl_hi] << 8 | fis[rdh_cyl_lo]; + ata_c->r_head = fis[rdh_dh]; + ata_c->r_count = fis[rdh_seccnt]; } Index: src/sys/dev/ata/satafisreg.h diff -u src/sys/dev/ata/satafisreg.h:1.2.2.2 src/sys/dev/ata/satafisreg.h:1.2.2.3 --- src/sys/dev/ata/satafisreg.h:1.2.2.2 Wed Apr 21 00:27:34 2010 +++ src/sys/dev/ata/satafisreg.h Mon Mar 24 18:49:53 2014 @@ -1,7 +1,7 @@ -/* $NetBSD: satafisreg.h,v 1.2.2.2 2010/04/21 00:27:34 matt Exp $ */ +/* $NetBSD: satafisreg.h,v 1.2.2.3 2014/03/24 18:49:53 matt Exp $ */ -/*- - * Copyright (c) 2009 Jonathan A. Kollasch. +/* + * Copyright (c) 2009, 2010 Jonathan A. Kollasch. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -32,7 +32,8 @@ #define RHD_FISTYPE 0x27 #define RHD_FISLEN 20 -#define rhd_cdpmp 1 /* Command bit and PM port */ +#define rhd_c 1 /* Command bit and PM port */ +#define RHD_C 0x80 #define rhd_command 2 /* wd_command */ #define rhd_features 3 /* wd_precomp */ #define rhd_sector 4 /* wd_sector */ @@ -50,17 +51,18 @@ #define RDH_FISTYPE 0x34 #define RDH_FISLEN 20 #define rdh_i 1 +#define RDH_I 0x40 #define rdh_status 2 #define rdh_error 3 #define rdh_sector 4 /* wd_sector */ #define rdh_cyl_lo 5 /* wd_cyl_lo */ #define rdh_cyl_hi 6 /* wd_cyl_hi */ #define rdh_dh 7 /* wd_sdh */ -#define rhd_sector_exp 8 -#define rhd_cyl_lo_exp 9 -#define rhd_cyl_hi_exp 10 -#define rhd_seccnt 12 -#define rhd_seccnt_exp 13 +#define rdh_sector_exp 8 +#define rdh_cyl_lo_exp 9 +#define rdh_cyl_hi_exp 10 +#define rdh_seccnt 12 +#define rdh_seccnt_exp 13 #define SDB_FISTYPE 0xA1 #define SDB_FISLEN 8 Index: src/sys/dev/ata/satafisvar.h diff -u src/sys/dev/ata/satafisvar.h:1.3.2.2 src/sys/dev/ata/satafisvar.h:1.3.2.3 --- src/sys/dev/ata/satafisvar.h:1.3.2.2 Wed Apr 21 00:27:34 2010 +++ src/sys/dev/ata/satafisvar.h Mon Mar 24 18:49:53 2014 @@ -1,7 +1,7 @@ -/* $NetBSD: satafisvar.h,v 1.3.2.2 2010/04/21 00:27:34 matt Exp $ */ +/* $NetBSD: satafisvar.h,v 1.3.2.3 2014/03/24 18:49:53 matt Exp $ */ -/*- - * Copyright (c) 2009 Jonathan A. Kollasch. +/* + * Copyright (c) 2009, 2010 Jonathan A. Kollasch. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -33,6 +33,8 @@ void satafis_rhd_construct_cmd(struct ata_command *, uint8_t *); void satafis_rhd_construct_bio(struct ata_xfer *, uint8_t *); void satafis_rhd_construct_atapi(struct ata_xfer *, uint8_t *); -void satafis_rdh_parse(struct ata_channel *, uint8_t *); + +void satafis_rdh_parse(struct ata_channel *, const uint8_t *); +void satafis_rdh_cmd_readreg(struct ata_command *, const uint8_t *); #endif /* _DEV_ATA_FISVAR_H_ */