Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Apr 2026 15:58:02 +0000
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: f65a4854bf82 - main - qcom_tlmm: add i2c pull up strength config option
Message-ID:  <69ef878a.43091.77818756@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by adrian:

URL: https://cgit.FreeBSD.org/src/commit/?id=f65a4854bf82f60002e268928614e379da852005

commit f65a4854bf82f60002e268928614e379da852005
Author:     Adrian Chadd <adrian@FreeBSD.org>
AuthorDate: 2026-04-07 10:09:44 +0000
Commit:     Adrian Chadd <adrian@FreeBSD.org>
CommitDate: 2026-04-27 15:57:54 +0000

    qcom_tlmm: add i2c pull up strength config option
    
    The X1E and others have a separate configuration bit to increase the
    pull-up drive strength for i2c busses.
    
    Add the plumbing; it doesn't do anything just yet.
    
    Differential Revision:  https://reviews.freebsd.org/D56351
---
 sys/dev/qcom_tlmm/qcom_tlmm_ipq4018_hw.c | 1 +
 sys/dev/qcom_tlmm/qcom_tlmm_pin.c        | 5 +++++
 sys/dev/qcom_tlmm/qcom_tlmm_var.h        | 1 +
 3 files changed, 7 insertions(+)

diff --git a/sys/dev/qcom_tlmm/qcom_tlmm_ipq4018_hw.c b/sys/dev/qcom_tlmm/qcom_tlmm_ipq4018_hw.c
index 12aa1b7f8305..14d1055f195a 100644
--- a/sys/dev/qcom_tlmm/qcom_tlmm_ipq4018_hw.c
+++ b/sys/dev/qcom_tlmm/qcom_tlmm_ipq4018_hw.c
@@ -314,6 +314,7 @@ qcom_tlmm_ipq4018_hw_pin_set_pupd_config(
 		reg |= QCOM_TLMM_IPQ4018_REG_PIN_CONTROL_PUPD_PULLDOWN
 		    << QCOM_TLMM_IPQ4018_REG_PIN_CONTROL_PUPD_SHIFT;
 		break;
+	case QCOM_TLMM_PIN_PUPD_CONFIG_STRONG_PULL_UP:
 	case QCOM_TLMM_PIN_PUPD_CONFIG_PULL_UP:
 		reg |= QCOM_TLMM_IPQ4018_REG_PIN_CONTROL_PUPD_PULLUP
 		    << QCOM_TLMM_IPQ4018_REG_PIN_CONTROL_PUPD_SHIFT;
diff --git a/sys/dev/qcom_tlmm/qcom_tlmm_pin.c b/sys/dev/qcom_tlmm/qcom_tlmm_pin.c
index 27d6f904d664..fcdcb20f6c95 100644
--- a/sys/dev/qcom_tlmm/qcom_tlmm_pin.c
+++ b/sys/dev/qcom_tlmm/qcom_tlmm_pin.c
@@ -101,6 +101,7 @@ qcom_tlmm_pin_configure(struct qcom_tlmm_softc *sc,
 		pin->gp_flags |= GPIO_PIN_PULLUP;
 		sc->sc_hw->qcom_tlmm_hw_pin_set_pupd_config(sc, pin->gp_pin,
 		    QCOM_TLMM_PIN_PUPD_CONFIG_PULL_UP);
+		/* XXX todo: i2c strong pull-up? */
 	} else if (flags & GPIO_PIN_PULLDOWN) {
 		pin->gp_flags |= GPIO_PIN_PULLDOWN;
 		sc->sc_hw->qcom_tlmm_hw_pin_set_pupd_config(sc, pin->gp_pin,
@@ -197,6 +198,10 @@ qcom_tlmm_pin_getflags(device_t dev, uint32_t pin, uint32_t *flags)
 	case QCOM_TLMM_PIN_PUPD_CONFIG_PULL_UP:
 		*flags |= GPIO_PIN_PULLUP;
 		break;
+	case QCOM_TLMM_PIN_PUPD_CONFIG_STRONG_PULL_UP:
+		/* XXX flag i2c "strong" pull-up? */
+		*flags |= GPIO_PIN_PULLUP;
+		break;
 	case QCOM_TLMM_PIN_PUPD_CONFIG_BUS_HOLD:
 		*flags |= (GPIO_PIN_PULLUP | GPIO_PIN_PULLDOWN);
 		break;
diff --git a/sys/dev/qcom_tlmm/qcom_tlmm_var.h b/sys/dev/qcom_tlmm/qcom_tlmm_var.h
index 4fd37f83192e..f9b9bcd9a3c8 100644
--- a/sys/dev/qcom_tlmm/qcom_tlmm_var.h
+++ b/sys/dev/qcom_tlmm/qcom_tlmm_var.h
@@ -95,6 +95,7 @@ typedef enum {
 	QCOM_TLMM_PIN_PUPD_CONFIG_PULL_DOWN = 1,
 	QCOM_TLMM_PIN_PUPD_CONFIG_PULL_UP = 2,
 	QCOM_TLMM_PIN_PUPD_CONFIG_BUS_HOLD = 3,
+	QCOM_TLMM_PIN_PUPD_CONFIG_STRONG_PULL_UP = 4, /* i2c */
 } qcom_tlmm_pin_pupd_config_t;
 
 


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69ef878a.43091.77818756>