From: Abdel Alkuor <alkuor@gmail.com>
To: heikki.krogerus@linux.intel.com,
krzysztof.kozlowski+dt@linaro.org, bryan.odonoghue@linaro.org
Cc: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org,
linux-kernel@vger.kernel.org, ryan.eleceng@gmail.com,
robh+dt@kernel.org, conor+dt@kernel.org,
devicetree@vger.kernel.org, Abdel Alkuor <abdelalkuor@geotab.com>
Subject: [PATCH v9 14/14] USB: typec: tps6598x: Add status trace for tps25750
Date: Sun, 1 Oct 2023 04:11:34 -0400 [thread overview]
Message-ID: <20231001081134.37101-15-alkuor@gmail.com> (raw)
In-Reply-To: <20231001081134.37101-1-alkuor@gmail.com>
From: Abdel Alkuor <abdelalkuor@geotab.com>
tps25750 status register is a subset of tps6598x status register, hence
a trace for tps25750 status register is added.
Signed-off-by: Abdel Alkuor <abdelalkuor@geotab.com>
---
Changes in v9:
- Move device data structs to the top of of_device_id
Changes in v8:
- Change tps->cb to tps->data
Changes in v7:
- Add driver name to commit subject
Changes in v6:
- Add trace status to tipd data factory
Changes in v5:
- Incorporating tps25750 into tps6598x driver
drivers/usb/typec/tipd/core.c | 12 +++++++----
drivers/usb/typec/tipd/trace.h | 37 ++++++++++++++++++++++++++++++++++
2 files changed, 45 insertions(+), 4 deletions(-)
diff --git a/drivers/usb/typec/tipd/core.c b/drivers/usb/typec/tipd/core.c
index a114e786b1a7..4f2bfa19d2f5 100644
--- a/drivers/usb/typec/tipd/core.c
+++ b/drivers/usb/typec/tipd/core.c
@@ -110,6 +110,7 @@ struct tipd_data {
irq_handler_t irq_handler;
int (*register_port)(struct tps6598x *tps, struct fwnode_handle *node);
void (*trace_power_status)(u16 status);
+ void (*trace_status)(u32 status);
};
struct tps6598x {
@@ -469,7 +470,9 @@ static bool tps6598x_read_status(struct tps6598x *tps, u32 *status)
dev_err(tps->dev, "%s: failed to read status\n", __func__);
return false;
}
- trace_tps6598x_status(*status);
+
+ if (tps->data->trace_status)
+ tps->data->trace_status(*status);
return true;
}
@@ -1243,10 +1246,8 @@ static int tps6598x_probe(struct i2c_client *client)
if (ret)
goto err_reset_controller;
- ret = tps6598x_read32(tps, TPS_REG_STATUS, &status);
- if (ret < 0)
+ if (!tps6598x_read_status(tps, &status))
goto err_clear_mask;
- trace_tps6598x_status(status);
/*
* This fwnode has a "compatible" property, but is never populated as a
@@ -1396,18 +1397,21 @@ static const struct tipd_data cd321x_data = {
.irq_handler = cd321x_interrupt,
.register_port = tps6598x_register_port,
.trace_power_status = trace_tps6598x_power_status,
+ .trace_status = trace_tps6598x_status,
};
static const struct tipd_data tps6598x_data = {
.irq_handler = tps6598x_interrupt,
.register_port = tps6598x_register_port,
.trace_power_status = trace_tps6598x_power_status,
+ .trace_status = trace_tps6598x_status,
};
static const struct tipd_data tps25750_data = {
.irq_handler = tps25750_interrupt,
.register_port = tps25750_register_port,
.trace_power_status = trace_tps25750_power_status,
+ .trace_status = trace_tps25750_status,
};
static const struct of_device_id tps6598x_of_match[] = {
diff --git a/drivers/usb/typec/tipd/trace.h b/drivers/usb/typec/tipd/trace.h
index 739b0a2a867d..0669cca12ea1 100644
--- a/drivers/usb/typec/tipd/trace.h
+++ b/drivers/usb/typec/tipd/trace.h
@@ -91,6 +91,14 @@
TPS_STATUS_USB_HOST_PRESENT_MASK | \
TPS_STATUS_LEGACY_MASK))
+#define TPS25750_STATUS_FLAGS_MASK (GENMASK(31, 0) ^ (TPS_STATUS_CONN_STATE_MASK | \
+ GENMASK(19, 7) | \
+ TPS_STATUS_VBUS_STATUS_MASK | \
+ TPS_STATUS_USB_HOST_PRESENT_MASK | \
+ TPS_STATUS_LEGACY_MASK | \
+ BIT(26) | \
+ GENMASK(31, 28)))
+
#define show_status_conn_state(status) \
__print_symbolic(TPS_STATUS_CONN_STATE((status)), \
{ TPS_STATUS_CONN_STATE_CONN_WITH_R_A, "conn-Ra" }, \
@@ -148,6 +156,14 @@
{ TPS_STATUS_HIGH_VOLAGE_WARNING, "HIGH_VOLAGE_WARNING" }, \
{ TPS_STATUS_HIGH_LOW_VOLTAGE_WARNING, "HIGH_LOW_VOLTAGE_WARNING" })
+#define show_tps25750_status_flags(flags) \
+ __print_flags((flags & TPS25750_STATUS_FLAGS_MASK), "|", \
+ { TPS_STATUS_PLUG_PRESENT, "PLUG_PRESENT" }, \
+ { TPS_STATUS_PLUG_UPSIDE_DOWN, "UPSIDE_DOWN" }, \
+ { TPS_STATUS_PORTROLE, "PORTROLE" }, \
+ { TPS_STATUS_DATAROLE, "DATAROLE" }, \
+ { TPS_STATUS_BIST, "BIST" })
+
#define show_power_status_source_sink(power_status) \
__print_symbolic(TPS_POWER_STATUS_SOURCESINK(power_status), \
{ 1, "sink" }, \
@@ -292,6 +308,27 @@ TRACE_EVENT(tps6598x_status,
)
);
+TRACE_EVENT(tps25750_status,
+ TP_PROTO(u32 status),
+ TP_ARGS(status),
+
+ TP_STRUCT__entry(
+ __field(u32, status)
+ ),
+
+ TP_fast_assign(
+ __entry->status = status;
+ ),
+
+ TP_printk("conn: %s, vbus: %s, usb-host: %s, legacy: %s, flags: %s",
+ show_status_conn_state(__entry->status),
+ show_status_vbus_status(__entry->status),
+ show_status_usb_host_present(__entry->status),
+ show_status_legacy(__entry->status),
+ show_tps25750_status_flags(__entry->status)
+ )
+);
+
TRACE_EVENT(tps6598x_power_status,
TP_PROTO(u16 power_status),
TP_ARGS(power_status),
--
2.34.1
prev parent reply other threads:[~2023-10-01 8:15 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-01 8:11 [PATCH v9 00/14] Add TPS25750 USB type-C PD controller support Abdel Alkuor
2023-10-01 8:11 ` [PATCH v9 01/14] dt-bindings: usb: tps6598x: Add tps25750 Abdel Alkuor
2023-10-01 8:11 ` [PATCH v9 02/14] USB: typec: tsp6598x: Add cmd timeout and response delay Abdel Alkuor
2023-10-01 8:11 ` [PATCH v9 03/14] USB: typec: tps6598x: Add patch mode to tps6598x Abdel Alkuor
2023-10-03 5:28 ` Heikki Krogerus
2023-10-01 8:11 ` [PATCH v9 04/14] USB: typec: tps6598x: Load TPS25750 patch bundle Abdel Alkuor
2023-10-03 5:30 ` Heikki Krogerus
2023-10-03 7:01 ` Heikki Krogerus
2023-10-01 8:11 ` [PATCH v9 05/14] USB: typec: tps6598x: Check for EEPROM present Abdel Alkuor
2023-10-03 5:34 ` Heikki Krogerus
2023-10-03 11:11 ` Abdel Alkuor
2023-10-01 8:11 ` [PATCH v9 06/14] USB: typec: tps6598x: Clear dead battery flag Abdel Alkuor
2023-10-03 6:03 ` Heikki Krogerus
2023-10-03 11:13 ` Abdel Alkuor
2023-10-01 8:11 ` [PATCH v9 07/14] USB: typec: tps6598x: Apply patch again after power resume Abdel Alkuor
2023-10-03 6:21 ` Heikki Krogerus
2023-10-03 11:14 ` Abdel Alkuor
2023-10-01 8:11 ` [PATCH v9 08/14] USB: typec: tps6598x: Add interrupt support for TPS25750 Abdel Alkuor
2023-10-03 6:39 ` Heikki Krogerus
2023-10-03 11:18 ` Abdel Alkuor
2023-10-01 8:11 ` [PATCH v9 09/14] USB: typec: tps6598x: Refactor tps6598x port registration Abdel Alkuor
2023-10-03 6:43 ` Heikki Krogerus
2023-10-01 8:11 ` [PATCH v9 10/14] USB: typec: tps6598x: Add port registration for tps25750 Abdel Alkuor
2023-10-03 6:50 ` Heikki Krogerus
2023-10-01 8:11 ` [PATCH v9 11/14] USB: typec: tps6598x: Enable sleep mode " Abdel Alkuor
2023-10-01 8:11 ` [PATCH v9 12/14] USB: typec: tps6598x: Add trace for tps25750 irq Abdel Alkuor
2023-10-01 8:11 ` [PATCH v9 13/14] USB: typec: tps6598x: Add power status trace for tps25750 Abdel Alkuor
2023-10-01 8:11 ` Abdel Alkuor [this message]
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=20231001081134.37101-15-alkuor@gmail.com \
--to=alkuor@gmail.com \
--cc=abdelalkuor@geotab.com \
--cc=bryan.odonoghue@linaro.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=robh+dt@kernel.org \
--cc=ryan.eleceng@gmail.com \
/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.