All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hannes Reinecke <hare@suse.de>
To: Damien LeMoal <damien.lemoal@wdc.com>
Cc: linux-ide@vger.kernel.org, Hannes Reinecke <hare@suse.de>
Subject: [PATCH 03/68] libata: Add ata_port_classify() helper
Date: Fri, 10 Dec 2021 08:28:00 +0100	[thread overview]
Message-ID: <20211210072905.15666-4-hare@suse.de> (raw)
In-Reply-To: <20211210072905.15666-1-hare@suse.de>

Add an ata_port_classify() helper to print out the results from
the device classification and remove the debugging statements
from ata_dev_classify().

Signed-off-by: Hannes Reinecke <hare@suse.de>
---
 drivers/ata/libahci.c          |  2 +-
 drivers/ata/libata-core.c      | 21 +++++----------------
 drivers/ata/libata-sff.c       |  2 +-
 drivers/ata/libata-transport.c | 27 +++++++++++++++++++++++++++
 drivers/ata/sata_fsl.c         |  2 +-
 drivers/ata/sata_inic162x.c    |  2 +-
 drivers/ata/sata_sil24.c       |  2 +-
 include/linux/libata.h         |  2 ++
 8 files changed, 39 insertions(+), 21 deletions(-)

diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
index 8b651f55fc84..21dbcd551443 100644
--- a/drivers/ata/libahci.c
+++ b/drivers/ata/libahci.c
@@ -1300,7 +1300,7 @@ unsigned int ahci_dev_classify(struct ata_port *ap)
 	tf.lbal		= (tmp >> 8)	& 0xff;
 	tf.nsect	= (tmp)		& 0xff;
 
-	return ata_dev_classify(&tf);
+	return ata_port_classify(ap, &tf);
 }
 EXPORT_SYMBOL_GPL(ahci_dev_classify);
 
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index f6a9e2f22a94..604d9b826c29 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -1007,32 +1007,21 @@ unsigned int ata_dev_classify(const struct ata_taskfile *tf)
 	 * SEMB signature.  This is worked around in
 	 * ata_dev_read_id().
 	 */
-	if ((tf->lbam == 0) && (tf->lbah == 0)) {
-		DPRINTK("found ATA device by sig\n");
+	if ((tf->lbam == 0) && (tf->lbah == 0))
 		return ATA_DEV_ATA;
-	}
 
-	if ((tf->lbam == 0x14) && (tf->lbah == 0xeb)) {
-		DPRINTK("found ATAPI device by sig\n");
+	if ((tf->lbam == 0x14) && (tf->lbah == 0xeb))
 		return ATA_DEV_ATAPI;
-	}
 
-	if ((tf->lbam == 0x69) && (tf->lbah == 0x96)) {
-		DPRINTK("found PMP device by sig\n");
+	if ((tf->lbam == 0x69) && (tf->lbah == 0x96))
 		return ATA_DEV_PMP;
-	}
 
-	if ((tf->lbam == 0x3c) && (tf->lbah == 0xc3)) {
-		DPRINTK("found SEMB device by sig (could be ATA device)\n");
+	if ((tf->lbam == 0x3c) && (tf->lbah == 0xc3))
 		return ATA_DEV_SEMB;
-	}
 
-	if ((tf->lbam == 0xcd) && (tf->lbah == 0xab)) {
-		DPRINTK("found ZAC device by sig\n");
+	if ((tf->lbam == 0xcd) && (tf->lbah == 0xab))
 		return ATA_DEV_ZAC;
-	}
 
-	DPRINTK("unknown device\n");
 	return ATA_DEV_UNKNOWN;
 }
 EXPORT_SYMBOL_GPL(ata_dev_classify);
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
index 39c026f3948c..a119fabe0919 100644
--- a/drivers/ata/libata-sff.c
+++ b/drivers/ata/libata-sff.c
@@ -1853,7 +1853,7 @@ unsigned int ata_sff_dev_classify(struct ata_device *dev, int present,
 		return ATA_DEV_NONE;
 
 	/* determine if device is ATA or ATAPI */
-	class = ata_dev_classify(&tf);
+	class = ata_port_classify(ap, &tf);
 
 	if (class == ATA_DEV_UNKNOWN) {
 		/* If the device failed diagnostic, it's likely to
diff --git a/drivers/ata/libata-transport.c b/drivers/ata/libata-transport.c
index 4162d625fc92..8f44ad772a0e 100644
--- a/drivers/ata/libata-transport.c
+++ b/drivers/ata/libata-transport.c
@@ -321,6 +321,33 @@ int ata_tport_add(struct device *parent,
 	return error;
 }
 
+/**
+ *     ata_port_classify - determine device type based on ATA-spec signature
+ *     @ap: ATA port device on which the classification should be run
+ *     @tf: ATA taskfile register set for device to be identified
+ *
+ *     A wrapper around ata_dev_classify() to provide additional logging
+ *
+ *     RETURNS:
+ *     Device type, %ATA_DEV_ATA, %ATA_DEV_ATAPI, %ATA_DEV_PMP,
+ *     %ATA_DEV_ZAC, or %ATA_DEV_UNKNOWN the event of failure.
+ */
+unsigned int ata_port_classify(struct ata_port *ap,
+			       const struct ata_taskfile *tf)
+{
+	int i;
+	unsigned int class = ata_dev_classify(tf);
+
+	/* Start with index '1' to skip the 'unknown' entry */
+	for (i = 1; i < ARRAY_SIZE(ata_class_names); i++) {
+		if (ata_class_names[i].value == class)
+			ata_port_dbg(ap, "found %s device by sig\n",
+				     ata_class_names[i].name);
+	}
+	ata_port_info(ap, "found unknown device (class %u)\n", class);
+	return class;
+}
+EXPORT_SYMBOL_GPL(ata_port_classify);
 
 /*
  * ATA link attributes
diff --git a/drivers/ata/sata_fsl.c b/drivers/ata/sata_fsl.c
index e5838b23c9e0..dbc57b7a58b8 100644
--- a/drivers/ata/sata_fsl.c
+++ b/drivers/ata/sata_fsl.c
@@ -812,7 +812,7 @@ static unsigned int sata_fsl_dev_classify(struct ata_port *ap)
 	tf.lbal = (temp >> 8) & 0xff;
 	tf.nsect = temp & 0xff;
 
-	return ata_dev_classify(&tf);
+	return ata_port_classify(ap, &tf);
 }
 
 static int sata_fsl_hardreset(struct ata_link *link, unsigned int *class,
diff --git a/drivers/ata/sata_inic162x.c b/drivers/ata/sata_inic162x.c
index e517bd8822a5..b6239dae524a 100644
--- a/drivers/ata/sata_inic162x.c
+++ b/drivers/ata/sata_inic162x.c
@@ -657,7 +657,7 @@ static int inic_hardreset(struct ata_link *link, unsigned int *class,
 		}
 
 		inic_tf_read(ap, &tf);
-		*class = ata_dev_classify(&tf);
+		*class = ata_port_classify(ap, &tf);
 	}
 
 	return 0;
diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c
index f99ec6f7d7c0..7e9c1945dc81 100644
--- a/drivers/ata/sata_sil24.c
+++ b/drivers/ata/sata_sil24.c
@@ -680,7 +680,7 @@ static int sil24_softreset(struct ata_link *link, unsigned int *class,
 	}
 
 	sil24_read_tf(ap, 0, &tf);
-	*class = ata_dev_classify(&tf);
+	*class = ata_port_classify(ap, &tf);
 
 	DPRINTK("EXIT, class=%u\n", *class);
 	return 0;
diff --git a/include/linux/libata.h b/include/linux/libata.h
index 2a8404b26083..235fdbeb19ea 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -1160,6 +1160,8 @@ extern enum ata_completion_errors ata_noop_qc_prep(struct ata_queued_cmd *qc);
 extern void ata_sg_init(struct ata_queued_cmd *qc, struct scatterlist *sg,
 		 unsigned int n_elem);
 extern unsigned int ata_dev_classify(const struct ata_taskfile *tf);
+extern unsigned int ata_port_classify(struct ata_port *ap,
+				      const struct ata_taskfile *tf);
 extern void ata_dev_disable(struct ata_device *adev);
 extern void ata_id_string(const u16 *id, unsigned char *s,
 			  unsigned int ofs, unsigned int len);
-- 
2.29.2


  parent reply	other threads:[~2021-12-10  7:29 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-10  7:27 [PATCHv2 00/68] libata: rework logging, take II Hannes Reinecke
2021-12-10  7:27 ` [PATCH 01/68] libata: remove pointless debugging messages Hannes Reinecke
2021-12-10  7:27 ` [PATCH 02/68] libata: whitespace cleanup Hannes Reinecke
2021-12-10  7:28 ` Hannes Reinecke [this message]
2021-12-10  7:28 ` [PATCH 04/68] libata: move ata_dump_id() to dynamic debugging Hannes Reinecke
2021-12-10  7:28 ` [PATCH 05/68] libata: sanitize ATA_HORKAGE_DUMP_ID Hannes Reinecke
2021-12-10  7:28 ` [PATCH 06/68] libata: add reset tracepoints Hannes Reinecke
2021-12-10  7:28 ` [PATCH 07/68] libata: add qc_prep tracepoint Hannes Reinecke
2021-12-10  7:28 ` [PATCH 08/68] libata: tracepoints for bus-master DMA Hannes Reinecke
2021-12-10  7:28 ` [PATCH 09/68] libata-sff: tracepoints for HSM state machine Hannes Reinecke
2021-12-10  7:28 ` [PATCH 10/68] libata-scsi: drop DPRINTK calls for cdb translation Hannes Reinecke
2021-12-10  7:28 ` [PATCH 11/68] libata: add tracepoints for ATA error handling Hannes Reinecke
2021-12-10  7:28 ` [PATCH 12/68] libata: move ata_{port,link,dev}_dbg to standard dev_XXX() macros Hannes Reinecke
2021-12-10  7:28 ` [PATCH 13/68] libata: revamp ata_get_cmd_descript() Hannes Reinecke
2021-12-12  9:33   ` Sergey Shtylyov
2021-12-10  7:28 ` [PATCH 14/68] libata: move DPRINTK to ata debugging Hannes Reinecke
2021-12-12  9:36   ` Sergey Shtylyov
2021-12-10  7:28 ` [PATCH 15/68] sata_mv: kill 'port' argument in mv_dump_all_regs() Hannes Reinecke
2021-12-10  7:28 ` [PATCH 16/68] sata_mv: replace DPRINTK with dynamic debugging Hannes Reinecke
2021-12-10  7:28 ` [PATCH 17/68] pata_octeon_cf: remove DPRINTK() macro in interrupt context Hannes Reinecke
2021-12-10  7:28 ` [PATCH 18/68] pdc_adma: Remove DPRINTK call Hannes Reinecke
2021-12-10  7:28 ` [PATCH 19/68] sata_fsl: move DPRINTK to ata debugging Hannes Reinecke
2021-12-10  7:28 ` [PATCH 20/68] sata_rcar: replace DPRINTK() with ata_port_dbg() Hannes Reinecke
2021-12-10  7:28 ` [PATCH 21/68] sata_qstor: " Hannes Reinecke
2021-12-10  7:28 ` [PATCH 22/68] pata_pdc2027x: Replace PDPRINTK() with standard ata logging Hannes Reinecke
2021-12-10  7:28 ` [PATCH 23/68] libata: remove pointless VPRINTK() calls Hannes Reinecke
2021-12-10  7:28 ` [PATCH 24/68] ahci: Drop pointless VPRINTK() calls and convert the remaining ones Hannes Reinecke
2021-12-10  7:28 ` [PATCH 25/68] pdc_adma: Drop pointless VPRINTK() calls and remove disabled NCQ debugging Hannes Reinecke
2021-12-10  7:28 ` [PATCH 26/68] pata_octeon_cf: Drop pointless VPRINTK() calls and convert the remaining one Hannes Reinecke
2021-12-12  9:23   ` Sergey Shtylyov
2021-12-10  7:28 ` [PATCH 27/68] pata_via: Drop pointless VPRINTK() calls Hannes Reinecke
2021-12-10  7:28 ` [PATCH 28/68] sata_promise: Drop pointless VPRINTK() calls and convert the remaining ones Hannes Reinecke
2021-12-10 16:19   ` Mikael Pettersson
2021-12-12  9:52   ` Sergey Shtylyov
2021-12-10  7:28 ` [PATCH 29/68] sata_qstor: Drop pointless VPRINTK() calls Hannes Reinecke
2021-12-10  7:28 ` [PATCH 30/68] sata_rcar: " Hannes Reinecke
2021-12-10  7:28 ` [PATCH 31/68] sata_inic162x: " Hannes Reinecke
2021-12-10  7:28 ` [PATCH 32/68] sata_mv: Drop pointless VPRINTK() call and convert the remaining one Hannes Reinecke
2021-12-10  7:28 ` [PATCH 33/68] sata_nv: drop pointless VPRINTK() calls and convert remaining ones Hannes Reinecke
2021-12-10  7:28 ` [PATCH 34/68] sata_fsl: convert VPRINTK() calls to ata_port_dbg() Hannes Reinecke
2021-12-10  7:28 ` [PATCH 35/68] sata_sil: Drop pointless VPRINTK() calls Hannes Reinecke
2021-12-10  7:28 ` [PATCH 36/68] sata_sx4: Drop pointless VPRINTK() calls and convert the remaining ones Hannes Reinecke
2021-12-10  7:28 ` [PATCH 37/68] sata_sx4: add module parameter 'dimm_test' Hannes Reinecke
2021-12-10  7:28 ` [PATCH 38/68] libata: drop ata_msg_error() and ata_msg_intr() Hannes Reinecke
2021-12-10  7:28 ` [PATCH 39/68] libata: drop ata_msg_ctl() Hannes Reinecke
2021-12-10  7:28 ` [PATCH 40/68] libata: drop ata_msg_malloc() Hannes Reinecke
2021-12-10  7:28 ` [PATCH 41/68] libata: drop ata_msg_warn() Hannes Reinecke
2021-12-10  7:28 ` [PATCH 42/68] libata: drop ata_msg_probe() Hannes Reinecke
2021-12-10  7:28 ` [PATCH 43/68] libata: drop ata_msg_info() Hannes Reinecke
2021-12-10  7:28 ` [PATCH 44/68] libata: drop ata_msg_drv() Hannes Reinecke
2021-12-10  7:28 ` [PATCH 45/68] libata: remove 'new' ata message handling Hannes Reinecke
2021-12-10  7:28 ` [PATCH 46/68] libata: remove debug compilation switches Hannes Reinecke
2021-12-12  9:21   ` Sergey Shtylyov
2021-12-10  7:28 ` [PATCH 47/68] pata_atp867x: convert printk() calls Hannes Reinecke
2021-12-10  7:28 ` [PATCH 48/68] pata_cmd640: " Hannes Reinecke
2021-12-10  7:28 ` [PATCH 49/68] pata_cmd64x: " Hannes Reinecke
2021-12-10  7:28 ` [PATCH 50/68] pata_cs5520: " Hannes Reinecke
2021-12-10  7:28 ` [PATCH 51/68] pata_cs5536: " Hannes Reinecke
2021-12-10  7:28 ` [PATCH 52/68] pata_cypress: " Hannes Reinecke
2021-12-10  7:28 ` [PATCH 53/68] pata_it821x: " Hannes Reinecke
2021-12-10  7:28 ` [PATCH 54/68] pata_marvell: " Hannes Reinecke
2021-12-10  7:28 ` [PATCH 55/68] pata_rz1000: " Hannes Reinecke
2021-12-10  7:28 ` [PATCH 56/68] pata_serverworks: " Hannes Reinecke
2021-12-10  7:28 ` [PATCH 57/68] pata_sil680: " Hannes Reinecke
2021-12-10  7:28 ` [PATCH 58/68] sata_sx4: " Hannes Reinecke
2021-12-10  7:28 ` [PATCH 59/68] sata_mv: convert remaining printk() to structured logging Hannes Reinecke
2021-12-10  7:28 ` [PATCH 60/68] pata_hpt37x: convert pr_XXX() calls Hannes Reinecke
2021-12-10  7:28 ` [PATCH 61/68] pata_octeon_cf: Replace pr_XXX() calls with structured logging Hannes Reinecke
2021-12-10  7:28 ` [PATCH 62/68] pata_hpt3x2n: convert pr_XXX() calls Hannes Reinecke
2021-12-10  7:29 ` [PATCH 63/68] sata_gemini: convert pr_err() calls Hannes Reinecke
2021-12-10  7:29 ` [PATCH 64/68] pata_hpt366: convert pr_warn() calls Hannes Reinecke
2021-12-10  7:29 ` [PATCH 65/68] libata-scsi: rework ata_dump_status to avoid using pr_cont() Hannes Reinecke
2021-12-10  7:29 ` [PATCH 66/68] sata_dwc_460ex: drop DEBUG_NCQ Hannes Reinecke
2021-12-10  7:29 ` [PATCH 67/68] sata_dwc_460ex: remove 'checkstatus' argument Hannes Reinecke
2021-12-12  9:18   ` Sergey Shtylyov
2021-12-10  7:29 ` [PATCH 68/68] sata_dwc_460ex: Remove debug compile options Hannes Reinecke
  -- strict thread matches above, loose matches on Subject: below --
2021-12-21  7:20 [PATCHv3 00/68] libata: rework logging, take II Hannes Reinecke
2021-12-21  7:20 ` [PATCH 03/68] libata: Add ata_port_classify() helper Hannes Reinecke
2021-12-30  5:12   ` Damien Le Moal

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211210072905.15666-4-hare@suse.de \
    --to=hare@suse.de \
    --cc=damien.lemoal@wdc.com \
    --cc=linux-ide@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.