From 10691900f8fdd5ef6d5cadfd27b81c8c4ecd41c0 Mon Sep 17 00:00:00 2001 From: Gunjan Gupta Date: Sat, 2 Sep 2023 23:11:04 +0000 Subject: [PATCH 3/3] Added fixes for vmmaped stack Changes taken from https://github.com/fifteenhex/xradio/commit/a835c4747be088978a055b9645e3c523d0c54fe1 --- drivers/net/wireless/xradio/sdio.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/drivers/net/wireless/xradio/sdio.c b/drivers/net/wireless/xradio/sdio.c index cfff47120337..6c375f4ece46 100644 --- a/drivers/net/wireless/xradio/sdio.c +++ b/drivers/net/wireless/xradio/sdio.c @@ -36,18 +36,34 @@ static const struct sdio_device_id xradio_sdio_ids[] = { int sdio_data_read(struct xradio_common* self, unsigned int addr, void *dst, int count) { - int ret = sdio_memcpy_fromio(self->sdio_func, dst, addr, count); -// printk("sdio_memcpy_fromio 0x%x:%d ret %d\n", addr, count, ret); -// print_hex_dump_bytes("sdio read ", 0, dst, min(count,32)); + int ret; + + switch (count) { + case 4: + *((u32 *)dst) = sdio_readl(self->sdio_func, addr, &ret); + break; + default: + ret = sdio_memcpy_fromio(self->sdio_func, dst, addr, count); + break; + } + return ret; } int sdio_data_write(struct xradio_common* self, unsigned int addr, const void *src, int count) { - int ret = sdio_memcpy_toio(self->sdio_func, addr, (void *)src, count); -// printk("sdio_memcpy_toio 0x%x:%d ret %d\n", addr, count, ret); -// print_hex_dump_bytes("sdio write", 0, src, min(count,32)); + int ret; + + switch (count) { + case 4: + sdio_writel(self->sdio_func, *((u32 *)src), addr, &ret); + break; + default: + ret = sdio_memcpy_toio(self->sdio_func, addr, (void *)src, count); + break; + } + return ret; } -- 2.34.1