Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 09 Jan 2026 20:17:24 +0000
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Cc:        Minsoo Choo <minsoochoo0122@proton.me>
Subject:   git: 2727bdebb366 - main - sdio: add sdio_{read,write}_2
Message-ID:  <69616254.801d.784d49f6@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by imp:

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

commit 2727bdebb366c3741509eb3553f0fee2453729d3
Author:     Minsoo Choo <minsoochoo0122@proton.me>
AuthorDate: 2026-01-06 16:57:25 +0000
Commit:     Warner Losh <imp@FreeBSD.org>
CommitDate: 2026-01-09 20:17:12 +0000

    sdio: add sdio_{read,write}_2
    
    This is equivalent of sdio_readw and sdio_writew in linuxkpi
    
    Signed-off-by: Minsoo Choo <minsoochoo0122@proton.me>
    Reviewed by: imp
    Pull Request: https://github.com/freebsd/freebsd-src/pull/1951
---
 sys/dev/sdio/sdio_subr.c | 30 ++++++++++++++++++++++++++++++
 sys/dev/sdio/sdio_subr.h |  2 ++
 2 files changed, 32 insertions(+)

diff --git a/sys/dev/sdio/sdio_subr.c b/sys/dev/sdio/sdio_subr.c
index f234eb8bdc84..64b1145e2057 100644
--- a/sys/dev/sdio/sdio_subr.c
+++ b/sys/dev/sdio/sdio_subr.c
@@ -166,6 +166,36 @@ sdio_write_1(struct sdio_func *f, uint32_t addr, uint8_t val, int *err)
 		*err = error;
 }
 
+uint16_t
+sdio_read_2(struct sdio_func *f, uint32_t addr, int *err)
+{
+	int error;
+	uint16_t v;
+
+	error = SDIO_READ_EXTENDED(device_get_parent(f->dev), f->fn, addr,
+	    sizeof(v), (uint8_t *)&v, true);
+	if (error) {
+		if (err != NULL)
+			*err = error;
+		return (0xffff);
+	} else {
+		if (err != NULL)
+			*err = 0;
+		return (le16toh(v));
+	}
+}
+
+void
+sdio_write_2(struct sdio_func *f, uint32_t addr, uint16_t val, int *err)
+{
+	int error;
+
+	error = SDIO_WRITE_EXTENDED(device_get_parent(f->dev), f->fn, addr,
+	    sizeof(val), (uint8_t *)&val, true);
+	if (err != NULL)
+		*err = error;
+}
+
 uint32_t
 sdio_read_4(struct sdio_func *f, uint32_t addr, int *err)
 {
diff --git a/sys/dev/sdio/sdio_subr.h b/sys/dev/sdio/sdio_subr.h
index 2d2ae9b01230..96df2e7d658a 100644
--- a/sys/dev/sdio/sdio_subr.h
+++ b/sys/dev/sdio/sdio_subr.h
@@ -95,6 +95,8 @@ int sdio_set_block_size(struct sdio_func *, uint16_t);
 
 uint8_t sdio_read_1(struct sdio_func *, uint32_t, int *);
 void sdio_write_1(struct sdio_func *, uint32_t, uint8_t, int *);
+uint16_t sdio_read_2(struct sdio_func *, uint32_t, int *);
+void sdio_write_2(struct sdio_func *, uint32_t, uint16_t, int *);
 uint32_t sdio_read_4(struct sdio_func *, uint32_t, int *);
 void sdio_write_4(struct sdio_func *, uint32_t, uint32_t, int *);
 


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69616254.801d.784d49f6>