|
|
|
From 6f971392cd52524058f179d7c78464d692fbb018 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Jes Sorensen <Jes.Sorensen@redhat.com>
|
|
|
|
Date: Mon, 27 Jun 2016 14:23:44 -0400
|
|
|
|
Subject: [PATCH] rtl8xxxu: Add initial code to detect 8188eu devices
|
|
|
|
|
|
|
|
So far this just detects the device and tries to load firmware.
|
|
|
|
|
|
|
|
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
|
|
|
|
---
|
|
|
|
drivers/net/wireless/realtek/rtl8xxxu/Makefile | 2 +-
|
|
|
|
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h | 1 +
|
|
|
|
.../net/wireless/realtek/rtl8xxxu/rtl8xxxu_8188e.c | 65 ++++++++++++++++++++++
|
|
|
|
.../net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 3 +
|
|
|
|
4 files changed, 70 insertions(+), 1 deletion(-)
|
|
|
|
create mode 100644 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8188e.c
|
|
|
|
|
|
|
|
--- a/drivers/net/wireless/realtek/rtl8xxxu/Makefile
|
|
|
|
+++ b/drivers/net/wireless/realtek/rtl8xxxu/Makefile
|
|
|
|
@@ -1,4 +1,4 @@
|
|
|
|
obj-$(CPTCFG_RTL8XXXU) += rtl8xxxu.o
|
|
|
|
|
|
|
|
rtl8xxxu-y := rtl8xxxu_core.o rtl8xxxu_8192e.o rtl8xxxu_8723b.o \
|
|
|
|
- rtl8xxxu_8723a.o rtl8xxxu_8192c.o
|
|
|
|
+ rtl8xxxu_8723a.o rtl8xxxu_8192c.o rtl8xxxu_8188e.o
|
|
|
|
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
|
|
|
|
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
|
|
|
|
@@ -1446,6 +1446,7 @@ void rtl8xxxu_fill_txdesc_v2(struct ieee
|
|
|
|
bool short_preamble, bool ampdu_enable,
|
|
|
|
u32 rts_rate);
|
|
|
|
|
|
|
|
+extern struct rtl8xxxu_fileops rtl8188eu_fops;
|
|
|
|
extern struct rtl8xxxu_fileops rtl8192cu_fops;
|
|
|
|
extern struct rtl8xxxu_fileops rtl8192eu_fops;
|
|
|
|
extern struct rtl8xxxu_fileops rtl8723au_fops;
|
|
|
|
--- /dev/null
|
|
|
|
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8188e.c
|
|
|
|
@@ -0,0 +1,65 @@
|
|
|
|
+/*
|
|
|
|
+ * RTL8XXXU mac80211 USB driver - 8188e specific subdriver
|
|
|
|
+ *
|
|
|
|
+ * Copyright (c) 2014 - 2016 Jes Sorensen <Jes.Sorensen@redhat.com>
|
|
|
|
+ *
|
|
|
|
+ * Portions, notably calibration code:
|
|
|
|
+ * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
|
|
|
+ *
|
|
|
|
+ * This driver was written as a replacement for the vendor provided
|
|
|
|
+ * rtl8723au driver. As the Realtek 8xxx chips are very similar in
|
|
|
|
+ * their programming interface, I have started adding support for
|
|
|
|
+ * additional 8xxx chips like the 8192cu, 8188cus, etc.
|
|
|
|
+ *
|
|
|
|
+ * This program is free software; you can redistribute it and/or modify it
|
|
|
|
+ * under the terms of version 2 of the GNU General Public License as
|
|
|
|
+ * published by the Free Software Foundation.
|
|
|
|
+ *
|
|
|
|
+ * This program is distributed in the hope that it will be useful, but WITHOUT
|
|
|
|
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
|
|
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
|
|
+ * more details.
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+#include <linux/init.h>
|
|
|
|
+#include <linux/kernel.h>
|
|
|
|
+#include <linux/sched.h>
|
|
|
|
+#include <linux/errno.h>
|
|
|
|
+#include <linux/slab.h>
|
|
|
|
+#include <linux/module.h>
|
|
|
|
+#include <linux/spinlock.h>
|
|
|
|
+#include <linux/list.h>
|
|
|
|
+#include <linux/usb.h>
|
|
|
|
+#include <linux/netdevice.h>
|
|
|
|
+#include <linux/etherdevice.h>
|
|
|
|
+#include <linux/ethtool.h>
|
|
|
|
+#include <linux/wireless.h>
|
|
|
|
+#include <linux/firmware.h>
|
|
|
|
+#include <linux/moduleparam.h>
|
|
|
|
+#include <net/mac80211.h>
|
|
|
|
+#include "rtl8xxxu.h"
|
|
|
|
+#include "rtl8xxxu_regs.h"
|
|
|
|
+
|
|
|
|
+static int rtl8188eu_parse_efuse(struct rtl8xxxu_priv *priv)
|
|
|
|
+{
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static int rtl8188eu_load_firmware(struct rtl8xxxu_priv *priv)
|
|
|
|
+{
|
|
|
|
+ char *fw_name;
|
|
|
|
+ int ret;
|
|
|
|
+
|
|
|
|
+ fw_name = "rtlwifi/rtl8188eufw.bin";
|
|
|
|
+
|
|
|
|
+ ret = rtl8xxxu_load_firmware(priv, fw_name);
|
|
|
|
+
|
|
|
|
+ return -EINVAL;
|
|
|
|
+ return ret;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+struct rtl8xxxu_fileops rtl8188eu_fops = {
|
|
|
|
+ .parse_efuse = rtl8188eu_parse_efuse,
|
|
|
|
+ .load_firmware = rtl8188eu_load_firmware,
|
|
|
|
+ .reset_8051 = rtl8xxxu_reset_8051,
|
|
|
|
+};
|
|
|
|
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
|
|
|
|
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
|
|
|
|
@@ -54,6 +54,7 @@ MODULE_LICENSE("GPL");
|
|
|
|
MODULE_FIRMWARE("rtlwifi/rtl8723aufw_A.bin");
|
|
|
|
MODULE_FIRMWARE("rtlwifi/rtl8723aufw_B.bin");
|
|
|
|
MODULE_FIRMWARE("rtlwifi/rtl8723aufw_B_NoBT.bin");
|
|
|
|
+MODULE_FIRMWARE("rtlwifi/rtl8188eufw.bin");
|
|
|
|
MODULE_FIRMWARE("rtlwifi/rtl8192cufw_A.bin");
|
|
|
|
MODULE_FIRMWARE("rtlwifi/rtl8192cufw_B.bin");
|
|
|
|
MODULE_FIRMWARE("rtlwifi/rtl8192cufw_TMSC.bin");
|
|
|
|
@@ -6210,6 +6211,8 @@ static struct usb_device_id dev_table[]
|
|
|
|
{USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0xb720, 0xff, 0xff, 0xff),
|
|
|
|
.driver_info = (unsigned long)&rtl8723bu_fops},
|
|
|
|
#ifdef CPTCFG_RTL8XXXU_UNTESTED
|
|
|
|
+{USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x8179, 0xff, 0xff, 0xff),
|
|
|
|
+ .driver_info = (unsigned long)&rtl8188eu_fops},
|
|
|
|
/* Still supported by rtlwifi */
|
|
|
|
{USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x8176, 0xff, 0xff, 0xff),
|
|
|
|
.driver_info = (unsigned long)&rtl8192cu_fops},
|