git: 2727bdebb366 - main - sdio: add sdio_{read,write}_2
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 09 Jan 2026 20:17:24 UTC
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 *);