From b22da3d8526a935aa31e086e63f60ff3246cb61c Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Sat, 09 Dec 2023 07:24:11 +0000
Subject: [PATCH] add stmac read mac form eeprom
---
kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/linux_osl.c | 71 +++++++++++++++++++++++++++++++++--
1 files changed, 67 insertions(+), 4 deletions(-)
diff --git a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/linux_osl.c b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/linux_osl.c
old mode 100644
new mode 100755
index 2dd9b38..621d3da
--- a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/linux_osl.c
+++ b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/linux_osl.c
@@ -1718,6 +1718,71 @@
return rand;
}
+/* Linux Kernel: File Operations: start */
+void *
+osl_os_open_image(char *filename)
+{
+ struct file *fp;
+
+ fp = filp_open(filename, O_RDONLY, 0);
+ /*
+ * 2.6.11 (FC4) supports filp_open() but later revs don't?
+ * Alternative:
+ * fp = open_namei(AT_FDCWD, filename, O_RD, 0);
+ * ???
+ */
+ if (IS_ERR(fp)) {
+ printf("ERROR %ld: Unable to open file %s\n", PTR_ERR(fp), filename);
+ fp = NULL;
+ }
+
+ return fp;
+}
+
+int
+osl_os_get_image_block(char *buf, int len, void *image)
+{
+ struct file *fp = (struct file *)image;
+ int rdlen;
+
+ if (fp == NULL) {
+ return 0;
+ }
+
+ rdlen = kernel_read_compat(fp, fp->f_pos, buf, len);
+ if (rdlen > 0) {
+ fp->f_pos += rdlen;
+ }
+
+ return rdlen;
+}
+
+void
+osl_os_close_image(void *image)
+{
+ struct file *fp = (struct file *)image;
+
+ if (fp != NULL) {
+ filp_close(fp, NULL);
+ }
+}
+
+int
+osl_os_image_size(void *image)
+{
+ int len = 0, curroffset;
+
+ if (image) {
+ /* store the current offset */
+ curroffset = generic_file_llseek(image, 0, 1);
+ /* goto end of file to get length */
+ len = generic_file_llseek(image, 0, 2);
+ /* restore back the offset */
+ generic_file_llseek(image, curroffset, 0);
+ }
+ return len;
+}
+
/* Linux Kernel: File Operations: end */
#if defined(AXI_TIMEOUTS_NIC)
@@ -1874,11 +1939,9 @@
int
kernel_read_compat(struct file *file, loff_t offset, char *addr, unsigned long count)
{
-#ifdef DHD_SUPPORT_VFS_CALL
+ if (!IS_ENABLED(CONFIG_NO_GKI))
+ return -EPERM;
return (int)kernel_read(file, addr, (size_t)count, &offset);
-#else
- return 0;
-#endif /* DHD_SUPPORT_VFS_CALL */
}
#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)) */
--
Gitblit v1.6.2