mirror of
https://github.com/t2linux/T2-Debian-and-Ubuntu-Kernel.git
synced 2026-08-16 05:22:19 -07:00
Update kernel 5.6.11 and start using Mikeeq patches
This commit is contained in:
@@ -4,7 +4,7 @@ set -eu -o pipefail
|
||||
|
||||
## Update docker image tag, because kernel build is using `uname -r` when defining package version variable
|
||||
# KERNEL_VERSION=$(curl -s https://www.kernel.org | grep '<strong>' | head -3 | tail -1 | cut -d'>' -f3 | cut -d'<' -f1)
|
||||
KERNEL_VERSION=5.6.10
|
||||
KERNEL_VERSION=5.6.11
|
||||
#KERNEL_REPOSITORY=git://kernel.ubuntu.com/virgin/linux-stable.git
|
||||
KERNEL_REPOSITORY=https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
|
||||
REPO_PATH=$(pwd)
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ git checkout ${APPLE_SMC_DRIVER_COMMIT_HASH}
|
||||
while IFS= read -r file; do
|
||||
echo "adding ${file}"
|
||||
cp -rfv "${file}" "${WORKING_PATH}"/patches/"${file##*/}"
|
||||
done < <(find "${BUILD_PATH}/linux-mbp-arch" -type f -name "*.patch" | sort)
|
||||
done < <(find "${BUILD_PATH}/linux-mbp-arch" -type f -name "*applesmc*" | sort)
|
||||
|
||||
#### Add custom drivers to kernel
|
||||
#echo -e "From: \"Kernel Builder (sita)\" <ubuntu-kernel-bot@canonical.com>\nSubject: patch custom drivers\n" >"${WORKING_PATH}/patches/custom-drivers.patch"
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
From c5c75744f812e8fefa9a4a8706fe137c06c52814 Mon Sep 17 00:00:00 2001
|
||||
From: Aun-Ali Zaidi <admin@kodeit.net>
|
||||
Date: Fri, 10 Jan 2020 12:47:25 -0600
|
||||
Subject: [PATCH 1/2] brcmfmac: move brcmf_mp_device into its own header
|
||||
|
||||
This commit relocates the brcmf_mp_device struct into its own header. This aids
|
||||
in utilizing the struct without the redefinition of the existing included headers
|
||||
found in common.h, such as fwil_types.h.
|
||||
|
||||
Tested-by: Aun-Ali Zaidi <admin@kodeit.net>
|
||||
Signed-off-by: Aun-Ali Zaidi <admin@kodeit.net>
|
||||
---
|
||||
.../broadcom/brcm80211/brcmfmac/common.h | 36 +++--------------
|
||||
.../broadcom/brcm80211/brcmfmac/settings.h | 39 +++++++++++++++++++
|
||||
2 files changed, 44 insertions(+), 31 deletions(-)
|
||||
create mode 100644 drivers/net/wireless/broadcom/brcm80211/brcmfmac/settings.h
|
||||
|
||||
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h
|
||||
index 144cf4570bc3..3826403ec5ff 100644
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h
|
||||
@@ -8,15 +8,14 @@
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/platform_data/brcmfmac.h>
|
||||
#include "fwil_types.h"
|
||||
+#include "settings.h"
|
||||
|
||||
#define BRCMF_FW_ALTPATH_LEN 256
|
||||
|
||||
-/* Definitions for the module global and device specific settings are defined
|
||||
- * here. Two structs are used for them. brcmf_mp_global_t and brcmf_mp_device.
|
||||
- * The mp_global is instantiated once in a global struct and gets initialized
|
||||
- * by the common_attach function which should be called before any other
|
||||
- * (module) initiliazation takes place. The device specific settings is part
|
||||
- * of the drvr struct and should be initialized on every brcmf_attach.
|
||||
+/* Definition for the module global settings are defined here. One struct is
|
||||
+ * used called brcmf_mp_global_t. The mp_global is instantiated once in a
|
||||
+ * global struct and gets initialized by the common_attach function which
|
||||
+ * should be called before any other (module) initiliazation takes place.
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -30,31 +29,6 @@ struct brcmf_mp_global_t {
|
||||
|
||||
extern struct brcmf_mp_global_t brcmf_mp_global;
|
||||
|
||||
-/**
|
||||
- * struct brcmf_mp_device - Device module paramaters.
|
||||
- *
|
||||
- * @p2p_enable: Legacy P2P0 enable (old wpa_supplicant).
|
||||
- * @feature_disable: Feature_disable bitmask.
|
||||
- * @fcmode: FWS flow control.
|
||||
- * @roamoff: Firmware roaming off?
|
||||
- * @ignore_probe_fail: Ignore probe failure.
|
||||
- * @country_codes: If available, pointer to struct for translating country codes
|
||||
- * @bus: Bus specific platform data. Only SDIO at the mmoment.
|
||||
- */
|
||||
-struct brcmf_mp_device {
|
||||
- bool p2p_enable;
|
||||
- unsigned int feature_disable;
|
||||
- int fcmode;
|
||||
- bool roamoff;
|
||||
- bool iapp;
|
||||
- bool ignore_probe_fail;
|
||||
- struct brcmfmac_pd_cc *country_codes;
|
||||
- const char *board_type;
|
||||
- union {
|
||||
- struct brcmfmac_sdio_pd sdio;
|
||||
- } bus;
|
||||
-};
|
||||
-
|
||||
void brcmf_c_set_joinpref_default(struct brcmf_if *ifp);
|
||||
|
||||
struct brcmf_mp_device *brcmf_get_module_param(struct device *dev,
|
||||
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/settings.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/settings.h
|
||||
new file mode 100644
|
||||
index 000000000000..5c4aa32fb73d
|
||||
--- /dev/null
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/settings.h
|
||||
@@ -0,0 +1,39 @@
|
||||
+// SPDX-License-Identifier: ISC
|
||||
+/*
|
||||
+ * Copyright (c) 2014 Broadcom Corporation
|
||||
+ */
|
||||
+
|
||||
+#ifndef BRCMFMAC_SETTINGS_H
|
||||
+#define BRCMFMAC_SETTINGS_H
|
||||
+
|
||||
+/* Definition for the device specific settings are defined here. One struct
|
||||
+ * is used called brcmf_mp_device. The device specific settings is part of
|
||||
+ * the drvr struct and should be initialized on every brcmf_attach.
|
||||
+ */
|
||||
+
|
||||
+/**
|
||||
+ * struct brcmf_mp_device - Device module paramaters.
|
||||
+ *
|
||||
+ * @p2p_enable: Legacy P2P0 enable (old wpa_supplicant).
|
||||
+ * @feature_disable: Feature_disable bitmask.
|
||||
+ * @fcmode: FWS flow control.
|
||||
+ * @roamoff: Firmware roaming off?
|
||||
+ * @ignore_probe_fail: Ignore probe failure.
|
||||
+ * @country_codes: If available, pointer to struct for translating country codes
|
||||
+ * @bus: Bus specific platform data. Only SDIO at the mmoment.
|
||||
+ */
|
||||
+struct brcmf_mp_device {
|
||||
+ bool p2p_enable;
|
||||
+ unsigned int feature_disable;
|
||||
+ int fcmode;
|
||||
+ bool roamoff;
|
||||
+ bool iapp;
|
||||
+ bool ignore_probe_fail;
|
||||
+ struct brcmfmac_pd_cc *country_codes;
|
||||
+ const char *board_type;
|
||||
+ union {
|
||||
+ struct brcmfmac_sdio_pd sdio;
|
||||
+ } bus;
|
||||
+};
|
||||
+
|
||||
+#endif /* BRCMFMAC_SETTINGS_H */
|
||||
--
|
||||
2.24.1
|
||||
@@ -0,0 +1,221 @@
|
||||
From b4865b976ef02fe69bb0d03c6fda6ecb2f173bcb Mon Sep 17 00:00:00 2001
|
||||
From: Aun-Ali Zaidi <admin@kodeit.net>
|
||||
Date: Fri, 10 Jan 2020 19:41:21 -0600
|
||||
Subject: [PATCH 2/2] brcmfmac: Add ability to manually specify FW rambase
|
||||
address
|
||||
|
||||
This commit introduces the ability to manually pass the rambase address for
|
||||
the brcmfmac chip as a kernel module option. The existing brcmf_chip_tcm_rambase()
|
||||
function is bypassed when this option is supplied. This is very useful when
|
||||
debugging support for newer chipsets that are not provided by the aforementioned
|
||||
function.
|
||||
|
||||
Tested-by: Aun-Ali Zaidi <admin@kodeit.net>
|
||||
Signed-off-by: Aun-Ali Zaidi <admin@kodeit.net>
|
||||
---
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/chip.c | 17 ++++++++++-------
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/chip.h | 7 +++++--
|
||||
.../broadcom/brcm80211/brcmfmac/common.c | 5 +++++
|
||||
.../broadcom/brcm80211/brcmfmac/common.h | 1 -
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/pcie.c | 4 ++--
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/sdio.c | 2 +-
|
||||
.../broadcom/brcm80211/brcmfmac/settings.h | 4 ++++
|
||||
7 files changed, 27 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
|
||||
index a795d781b4c5..e6b6f23e15a5 100644
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
|
||||
@@ -696,7 +696,7 @@ static u32 brcmf_chip_tcm_rambase(struct brcmf_chip_priv *ci)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-int brcmf_chip_get_raminfo(struct brcmf_chip *pub)
|
||||
+int brcmf_chip_get_raminfo(struct brcmf_chip *pub, struct brcmf_mp_device *settings)
|
||||
{
|
||||
struct brcmf_chip_priv *ci = container_of(pub, struct brcmf_chip_priv,
|
||||
pub);
|
||||
@@ -707,7 +707,8 @@ int brcmf_chip_get_raminfo(struct brcmf_chip *pub)
|
||||
if (mem) {
|
||||
mem_core = container_of(mem, struct brcmf_core_priv, pub);
|
||||
ci->pub.ramsize = brcmf_chip_tcm_ramsize(mem_core);
|
||||
- ci->pub.rambase = brcmf_chip_tcm_rambase(ci);
|
||||
+ ci->pub.rambase = (settings != NULL && settings->rambase_addr > 0) ? settings->rambase_addr
|
||||
+ : brcmf_chip_tcm_rambase(ci);
|
||||
if (!ci->pub.rambase) {
|
||||
brcmf_err("RAM base not provided with ARM CR4 core\n");
|
||||
return -EINVAL;
|
||||
@@ -718,7 +719,8 @@ int brcmf_chip_get_raminfo(struct brcmf_chip *pub)
|
||||
mem_core = container_of(mem, struct brcmf_core_priv,
|
||||
pub);
|
||||
ci->pub.ramsize = brcmf_chip_sysmem_ramsize(mem_core);
|
||||
- ci->pub.rambase = brcmf_chip_tcm_rambase(ci);
|
||||
+ ci->pub.rambase = (settings != NULL && settings->rambase_addr > 0) ? settings->rambase_addr
|
||||
+ : brcmf_chip_tcm_rambase(ci);
|
||||
if (!ci->pub.rambase) {
|
||||
brcmf_err("RAM base not provided with ARM CA7 core\n");
|
||||
return -EINVAL;
|
||||
@@ -904,7 +906,7 @@ int brcmf_chip_dmp_erom_scan(struct brcmf_chip_priv *ci)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static int brcmf_chip_recognition(struct brcmf_chip_priv *ci)
|
||||
+static int brcmf_chip_recognition(struct brcmf_chip_priv *ci, struct brcmf_mp_device *settings)
|
||||
{
|
||||
struct brcmf_core *core;
|
||||
u32 regdata;
|
||||
@@ -977,7 +979,7 @@ static int brcmf_chip_recognition(struct brcmf_chip_priv *ci)
|
||||
brcmf_chip_set_passive(&ci->pub);
|
||||
}
|
||||
|
||||
- return brcmf_chip_get_raminfo(&ci->pub);
|
||||
+ return brcmf_chip_get_raminfo(&ci->pub, settings);
|
||||
}
|
||||
|
||||
static void brcmf_chip_disable_arm(struct brcmf_chip_priv *chip, u16 id)
|
||||
@@ -1051,7 +1053,8 @@ static int brcmf_chip_setup(struct brcmf_chip_priv *chip)
|
||||
}
|
||||
|
||||
struct brcmf_chip *brcmf_chip_attach(void *ctx,
|
||||
- const struct brcmf_buscore_ops *ops)
|
||||
+ const struct brcmf_buscore_ops *ops,
|
||||
+ struct brcmf_mp_device *settings)
|
||||
{
|
||||
struct brcmf_chip_priv *chip;
|
||||
int err = 0;
|
||||
@@ -1080,7 +1083,7 @@ struct brcmf_chip *brcmf_chip_attach(void *ctx,
|
||||
if (err < 0)
|
||||
goto fail;
|
||||
|
||||
- err = brcmf_chip_recognition(chip);
|
||||
+ err = brcmf_chip_recognition(chip, settings);
|
||||
if (err < 0)
|
||||
goto fail;
|
||||
|
||||
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.h
|
||||
index 7b00f6a59e89..db982154e0d3 100644
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.h
|
||||
@@ -7,6 +7,8 @@
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
+#include "settings.h"
|
||||
+
|
||||
#define CORE_CC_REG(base, field) \
|
||||
(base + offsetof(struct chipcregs, field))
|
||||
|
||||
@@ -69,9 +71,10 @@ struct brcmf_buscore_ops {
|
||||
void (*activate)(void *ctx, struct brcmf_chip *chip, u32 rstvec);
|
||||
};
|
||||
|
||||
-int brcmf_chip_get_raminfo(struct brcmf_chip *pub);
|
||||
+int brcmf_chip_get_raminfo(struct brcmf_chip *pub, struct brcmf_mp_device *settings);
|
||||
struct brcmf_chip *brcmf_chip_attach(void *ctx,
|
||||
- const struct brcmf_buscore_ops *ops);
|
||||
+ const struct brcmf_buscore_ops *ops,
|
||||
+ struct brcmf_mp_device *settings);
|
||||
void brcmf_chip_detach(struct brcmf_chip *chip);
|
||||
struct brcmf_core *brcmf_chip_get_core(struct brcmf_chip *chip, u16 coreid);
|
||||
struct brcmf_core *brcmf_chip_get_d11core(struct brcmf_chip *pub, u8 unit);
|
||||
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
|
||||
index dec25e415619..384549237cce 100644
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
|
||||
@@ -67,6 +67,10 @@ static int brcmf_iapp_enable;
|
||||
module_param_named(iapp, brcmf_iapp_enable, int, 0);
|
||||
MODULE_PARM_DESC(iapp, "Enable partial support for the obsoleted Inter-Access Point Protocol");
|
||||
|
||||
+static uint brcmf_rambase_addr;
|
||||
+module_param_named(rambase_addr, brcmf_rambase_addr, uint, 0);
|
||||
+MODULE_PARM_DESC(rambase_addr, "Manually specify FW shared rambase address");
|
||||
+
|
||||
#ifdef DEBUG
|
||||
/* always succeed brcmf_bus_started() */
|
||||
static int brcmf_ignore_probe_fail;
|
||||
@@ -416,6 +420,7 @@ struct brcmf_mp_device *brcmf_get_module_param(struct device *dev,
|
||||
#ifdef DEBUG
|
||||
settings->ignore_probe_fail = !!brcmf_ignore_probe_fail;
|
||||
#endif
|
||||
+ settings->rambase_addr = brcmf_rambase_addr;
|
||||
|
||||
if (bus_type == BRCMF_BUSTYPE_SDIO)
|
||||
settings->bus.sdio.txglomsz = brcmf_sdiod_txglomsz;
|
||||
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h
|
||||
index 3826403ec5ff..c7a93e04a5f5 100644
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h
|
||||
@@ -6,7 +6,6 @@
|
||||
#define BRCMFMAC_COMMON_H
|
||||
|
||||
#include <linux/platform_device.h>
|
||||
-#include <linux/platform_data/brcmfmac.h>
|
||||
#include "fwil_types.h"
|
||||
#include "settings.h"
|
||||
|
||||
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||||
index f64ce5074a55..ba42e1404683 100644
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||||
@@ -1770,7 +1770,7 @@ static void brcmf_pcie_setup(struct device *dev, int ret,
|
||||
nvram_len = fwreq->items[BRCMF_PCIE_FW_NVRAM].nv_data.len;
|
||||
kfree(fwreq);
|
||||
|
||||
- ret = brcmf_chip_get_raminfo(devinfo->ci);
|
||||
+ ret = brcmf_chip_get_raminfo(devinfo->ci, devinfo->settings);
|
||||
if (ret) {
|
||||
brcmf_err(bus, "Failed to get RAM info\n");
|
||||
goto fail;
|
||||
@@ -1882,7 +1882,7 @@ brcmf_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
||||
|
||||
devinfo->pdev = pdev;
|
||||
pcie_bus_dev = NULL;
|
||||
- devinfo->ci = brcmf_chip_attach(devinfo, &brcmf_pcie_buscore_ops);
|
||||
+ devinfo->ci = brcmf_chip_attach(devinfo, &brcmf_pcie_buscore_ops, devinfo->settings);
|
||||
if (IS_ERR(devinfo->ci)) {
|
||||
ret = PTR_ERR(devinfo->ci);
|
||||
devinfo->ci = NULL;
|
||||
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
index 264ad63232f8..2f0dc4002e88 100644
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
@@ -3921,7 +3921,7 @@ brcmf_sdio_probe_attach(struct brcmf_sdio *bus)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
- bus->ci = brcmf_chip_attach(sdiodev, &brcmf_sdio_buscore_ops);
|
||||
+ bus->ci = brcmf_chip_attach(sdiodev, &brcmf_sdio_buscore_ops, sdiodev->settings);
|
||||
if (IS_ERR(bus->ci)) {
|
||||
brcmf_err("brcmf_chip_attach failed!\n");
|
||||
bus->ci = NULL;
|
||||
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/settings.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/settings.h
|
||||
index 5c4aa32fb73d..9840a4cd3b2e 100644
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/settings.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/settings.h
|
||||
@@ -6,6 +6,8 @@
|
||||
#ifndef BRCMFMAC_SETTINGS_H
|
||||
#define BRCMFMAC_SETTINGS_H
|
||||
|
||||
+#include <linux/platform_data/brcmfmac.h>
|
||||
+
|
||||
/* Definition for the device specific settings are defined here. One struct
|
||||
* is used called brcmf_mp_device. The device specific settings is part of
|
||||
* the drvr struct and should be initialized on every brcmf_attach.
|
||||
@@ -21,6 +23,7 @@
|
||||
* @ignore_probe_fail: Ignore probe failure.
|
||||
* @country_codes: If available, pointer to struct for translating country codes
|
||||
* @bus: Bus specific platform data. Only SDIO at the mmoment.
|
||||
+ * @rambase_addr: Manually specified FW shared rambase address.
|
||||
*/
|
||||
struct brcmf_mp_device {
|
||||
bool p2p_enable;
|
||||
@@ -34,6 +37,7 @@ struct brcmf_mp_device {
|
||||
union {
|
||||
struct brcmfmac_sdio_pd sdio;
|
||||
} bus;
|
||||
+ u32 rambase_addr;
|
||||
};
|
||||
|
||||
#endif /* BRCMFMAC_SETTINGS_H */
|
||||
--
|
||||
2.24.1
|
||||
@@ -0,0 +1,24 @@
|
||||
From: fedora kernel <fedora@kernel.org>
|
||||
Subject: patch camera
|
||||
|
||||
diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
|
||||
index 10cfe8e51626..6a81c7ffda5f 100644
|
||||
--- a/drivers/media/usb/uvc/uvc_driver.c
|
||||
+++ b/drivers/media/usb/uvc/uvc_driver.c
|
||||
@@ -2874,6 +2874,15 @@ static const struct usb_device_id uvc_ids[] = {
|
||||
.bInterfaceSubClass = 1,
|
||||
.bInterfaceProtocol = 0,
|
||||
.driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
|
||||
+ /* Apple Built-In iSight via iBridge */
|
||||
+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
|
||||
+ | USB_DEVICE_ID_MATCH_INT_INFO,
|
||||
+ .idVendor = 0x05ac,
|
||||
+ .idProduct = 0x8514,
|
||||
+ .bInterfaceClass = USB_CLASS_VIDEO,
|
||||
+ .bInterfaceSubClass = 1,
|
||||
+ .bInterfaceProtocol = 0,
|
||||
+ .driver_info = (kernel_ulong_t)&uvc_quirk_probe_def },
|
||||
/* Generic USB Video Class */
|
||||
{ USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_UNDEFINED) },
|
||||
{ USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_15) },
|
||||
|
||||
@@ -0,0 +1,264 @@
|
||||
From: fedora kernel <fedora@kernel.org>
|
||||
Subject: patch hid-apple-mod
|
||||
|
||||
diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c
|
||||
index 1cb4199..3f30d04 100644
|
||||
--- a/drivers/hid/hid-apple.c
|
||||
+++ b/drivers/hid/hid-apple.c
|
||||
@@ -7,6 +7,7 @@
|
||||
* Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
|
||||
* Copyright (c) 2006-2007 Jiri Kosina
|
||||
* Copyright (c) 2008 Jiri Slaby <jirislaby@gmail.com>
|
||||
+ * Copyright (c) 2019 Paul Pawlowski <paul@mrarm.io>
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -30,6 +31,7 @@
|
||||
#define APPLE_INVERT_HWHEEL 0x0040
|
||||
#define APPLE_IGNORE_HIDINPUT 0x0080
|
||||
#define APPLE_NUMLOCK_EMULATION 0x0100
|
||||
+#define APPLE_BACKLIGHT_CTL 0x0200
|
||||
|
||||
#define APPLE_FLAG_FKEY 0x01
|
||||
|
||||
@@ -51,12 +53,32 @@
|
||||
"(For people who want to keep Windows PC keyboard muscle memory. "
|
||||
"[0] = as-is, Mac layout. 1 = swapped, Windows layout.)");
|
||||
|
||||
+static unsigned int swap_fn_leftctrl;
|
||||
+module_param(swap_fn_leftctrl, uint, 0644);
|
||||
+MODULE_PARM_DESC(swap_fn_leftctrl, "Swap the Fn and left Control keys. "
|
||||
+ "(For people who want to keep PC keyboard muscle memory. "
|
||||
+ "[0] = as-is, Mac layout, 1 = swapped, PC layout)");
|
||||
+
|
||||
+static unsigned int rightalt_as_rightctrl;
|
||||
+module_param(rightalt_as_rightctrl, uint, 0644);
|
||||
+MODULE_PARM_DESC(rightalt_as_rightctrl, "Use the right Alt key as a right Ctrl key. "
|
||||
+ "[0] = as-is, Mac layout. 1 = Right Alt is right Ctrl");
|
||||
+
|
||||
+struct apple_sc_backlight;
|
||||
+
|
||||
struct apple_sc {
|
||||
unsigned long quirks;
|
||||
unsigned int fn_on;
|
||||
DECLARE_BITMAP(pressed_numlock, KEY_CNT);
|
||||
+ struct apple_sc_backlight *backlight;
|
||||
};
|
||||
|
||||
+struct apple_sc_backlight {
|
||||
+ struct led_classdev cdev;
|
||||
+ struct hid_device *hdev;
|
||||
+ unsigned short backlight_off, backlight_on_min, backlight_on_max;
|
||||
+ };
|
||||
+
|
||||
struct apple_key_translation {
|
||||
u16 from;
|
||||
u16 to;
|
||||
@@ -162,6 +184,16 @@
|
||||
{ }
|
||||
};
|
||||
|
||||
+static const struct apple_key_translation swapped_fn_leftctrl_keys[] = {
|
||||
+ { KEY_FN, KEY_LEFTCTRL },
|
||||
+ { }
|
||||
+};
|
||||
+
|
||||
+static const struct apple_key_translation rightalt_as_rightctrl_keys[] = {
|
||||
+ { KEY_RIGHTALT, KEY_RIGHTCTRL },
|
||||
+ { }
|
||||
+};
|
||||
+
|
||||
static const struct apple_key_translation *apple_find_translation(
|
||||
const struct apple_key_translation *table, u16 from)
|
||||
{
|
||||
@@ -183,9 +215,11 @@
|
||||
bool do_translate;
|
||||
u16 code = 0;
|
||||
|
||||
- if (usage->code == KEY_FN) {
|
||||
+ u16 fn_keycode = (swap_fn_leftctrl) ? (KEY_LEFTCTRL) : (KEY_FN);
|
||||
+
|
||||
+ if (usage->code == fn_keycode) {
|
||||
asc->fn_on = !!value;
|
||||
- input_event(input, usage->type, usage->code, value);
|
||||
+ input_event(input, usage->type, KEY_FN, value);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -270,6 +304,22 @@
|
||||
}
|
||||
}
|
||||
|
||||
+ if (rightalt_as_rightctrl) {
|
||||
+ trans = apple_find_translation(rightalt_as_rightctrl_keys, usage->code);
|
||||
+ if (trans) {
|
||||
+ input_event(input, usage->type, trans->to, value);
|
||||
+ return 1;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (swap_fn_leftctrl) {
|
||||
+ trans = apple_find_translation(swapped_fn_leftctrl_keys, usage->code);
|
||||
+ if (trans) {
|
||||
+ input_event(input, usage->type, trans->to, value);
|
||||
+ return 1;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -333,6 +383,16 @@
|
||||
|
||||
for (trans = apple_iso_keyboard; trans->from; trans++)
|
||||
set_bit(trans->to, input->keybit);
|
||||
+
|
||||
+ if (swap_fn_leftctrl) {
|
||||
+ for (trans = swapped_fn_leftctrl_keys; trans->from; trans++)
|
||||
+ set_bit(trans->to, input->keybit);
|
||||
+ }
|
||||
+
|
||||
+ if (rightalt_as_rightctrl) {
|
||||
+ for (trans = rightalt_as_rightctrl_keys; trans->from; trans++)
|
||||
+ set_bit(trans->to, input->keybit);
|
||||
+ }
|
||||
}
|
||||
|
||||
static int apple_input_mapping(struct hid_device *hdev, struct hid_input *hi,
|
||||
@@ -370,6 +430,11 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int apple_init_backlight(struct hid_device *hdev);
|
||||
+static int apple_set_backlight(struct hid_device *hdev, u16 value, u16 rate);
|
||||
+static int apple_led_set_backlight(struct led_classdev *led_cdev,
|
||||
+ enum led_brightness brightness);
|
||||
+
|
||||
static int apple_probe(struct hid_device *hdev,
|
||||
const struct hid_device_id *id)
|
||||
{
|
||||
@@ -405,9 +470,107 @@
|
||||
return ret;
|
||||
}
|
||||
|
||||
+ if (quirks & APPLE_BACKLIGHT_CTL)
|
||||
+ apple_init_backlight(hdev);
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
+struct apple_backlight_config_report {
|
||||
+ u8 report_id;
|
||||
+ u8 version;
|
||||
+ u16 backlight_off, backlight_on_min, backlight_on_max;
|
||||
+};
|
||||
+struct apple_backlight_set_report {
|
||||
+ u8 report_id;
|
||||
+ u8 version;
|
||||
+ u16 backlight;
|
||||
+ u16 rate;
|
||||
+};
|
||||
+
|
||||
+static bool apple_check_backlight_support(struct hid_device *hdev)
|
||||
+{
|
||||
+ int i;
|
||||
+ unsigned hid;
|
||||
+ struct hid_report *report;
|
||||
+
|
||||
+ list_for_each_entry(report, &hdev->report_enum[HID_INPUT_REPORT].report_list, list) {
|
||||
+ for (i = 0; i < report->maxfield; i++) {
|
||||
+ hid = report->field[i]->usage->hid;
|
||||
+ if ((hid & HID_USAGE_PAGE) == HID_UP_MSVENDOR && (hid & HID_USAGE) == 0xf)
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
+static int apple_init_backlight(struct hid_device *hdev)
|
||||
+{
|
||||
+ int ret;
|
||||
+ struct apple_sc *asc = hid_get_drvdata(hdev);
|
||||
+ struct apple_backlight_config_report *rep;
|
||||
+
|
||||
+ if (!apple_check_backlight_support(hdev))
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ rep = kmalloc(0x200, GFP_KERNEL);
|
||||
+ ret = hid_hw_raw_request(hdev, 0xBFu, (u8 *) rep, sizeof(*rep), HID_FEATURE_REPORT, HID_REQ_GET_REPORT);
|
||||
+ if (ret < 0) {
|
||||
+ hid_err(hdev, "backlight request failed\n");
|
||||
+ return ret;
|
||||
+ }
|
||||
+ if (ret < 8 || rep->version != 1) {
|
||||
+ hid_err(hdev, "backlight config struct: bad version %i\n", rep->version);
|
||||
+ kfree(rep);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+ hid_dbg(hdev, "backlight config: off=%u, on_min=%u, on_max=%u\n",
|
||||
+ rep->backlight_off, rep->backlight_on_min, rep->backlight_on_max);
|
||||
+
|
||||
+ asc->backlight = devm_kzalloc(&hdev->dev, sizeof(*asc->backlight), GFP_KERNEL);
|
||||
+ if (!asc->backlight) {
|
||||
+ kfree(rep);
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
+
|
||||
+ asc->backlight->hdev = hdev;
|
||||
+ asc->backlight->cdev.name = "apple::kbd_backlight";
|
||||
+ asc->backlight->cdev.max_brightness = rep->backlight_on_max;
|
||||
+ asc->backlight->cdev.brightness_set_blocking = apple_led_set_backlight;
|
||||
+ kfree(rep);
|
||||
+
|
||||
+ apple_set_backlight(hdev, 0, 0);
|
||||
+
|
||||
+ return devm_led_classdev_register(&hdev->dev, &asc->backlight->cdev);
|
||||
+}
|
||||
+
|
||||
+static int apple_set_backlight(struct hid_device *hdev, u16 value, u16 rate)
|
||||
+{
|
||||
+ int ret;
|
||||
+ struct apple_backlight_set_report *rep;
|
||||
+
|
||||
+ rep = kmalloc(sizeof(*rep), GFP_KERNEL);
|
||||
+ rep->report_id = 0xB0;
|
||||
+ rep->version = 1;
|
||||
+ rep->backlight = value;
|
||||
+ rep->rate = rate;
|
||||
+
|
||||
+ ret = hid_hw_raw_request(hdev, 0xB0u, (u8 *) rep, sizeof(*rep), HID_OUTPUT_REPORT, HID_REQ_SET_REPORT);
|
||||
+ kfree(rep);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int apple_led_set_backlight(struct led_classdev *led_cdev,
|
||||
+ enum led_brightness brightness)
|
||||
+{
|
||||
+ struct apple_sc_backlight *backlight = container_of(led_cdev, struct apple_sc_backlight, cdev);
|
||||
+ return apple_set_backlight(backlight->hdev, brightness, 0);
|
||||
+}
|
||||
+
|
||||
+
|
||||
static const struct hid_device_id apple_devices[] = {
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE),
|
||||
.driver_data = APPLE_MIGHTYMOUSE | APPLE_INVERT_HWHEEL },
|
||||
@@ -561,6 +724,16 @@
|
||||
.driver_data = APPLE_HAS_FN },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_JIS),
|
||||
.driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING10_T2_A),
|
||||
+ .driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING10_T2_B),
|
||||
+ .driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING10_T2_C),
|
||||
+ .driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING10_T2_D),
|
||||
+ .driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING10_T2_E),
|
||||
+ .driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL },
|
||||
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI),
|
||||
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
|
||||
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO),
|
||||
@@ -0,0 +1,47 @@
|
||||
From: fedora kernel <fedora@kernel.org>
|
||||
Subject: patch keyboard
|
||||
|
||||
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
|
||||
index 76aa474e92c1..52ddbdbaa5fa 100644
|
||||
--- a/drivers/hid/hid-ids.h
|
||||
+++ b/drivers/hid/hid-ids.h
|
||||
@@ -168,6 +168,11 @@
|
||||
#define USB_DEVICE_ID_APPLE_WELLSPRING9_ANSI 0x0272
|
||||
#define USB_DEVICE_ID_APPLE_WELLSPRING9_ISO 0x0273
|
||||
#define USB_DEVICE_ID_APPLE_WELLSPRING9_JIS 0x0274
|
||||
+#define USB_DEVICE_ID_APPLE_WELLSPRING10_T2_A 0x027a
|
||||
+#define USB_DEVICE_ID_APPLE_WELLSPRING10_T2_B 0x027b
|
||||
+#define USB_DEVICE_ID_APPLE_WELLSPRING10_T2_C 0x027c
|
||||
+#define USB_DEVICE_ID_APPLE_WELLSPRING10_T2_D 0x027d
|
||||
+#define USB_DEVICE_ID_APPLE_WELLSPRING10_T2_E 0x0340
|
||||
#define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a
|
||||
#define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b
|
||||
#define USB_DEVICE_ID_APPLE_IRCONTROL 0x8240
|
||||
diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
|
||||
index 4fe2c3ab76f9..4183c9740b13 100644
|
||||
--- a/drivers/hid/hid-quirks.c
|
||||
+++ b/drivers/hid/hid-quirks.c
|
||||
@@ -270,6 +270,11 @@ static const struct hid_device_id hid_have_special_driver[] = {
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_ANSI) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_ISO) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_JIS) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING10_T2_A) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING10_T2_B) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING10_T2_C) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING10_T2_D) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING10_T2_E) },
|
||||
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI) },
|
||||
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO) },
|
||||
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS) },
|
||||
@@ -911,6 +916,11 @@ static const struct hid_device_id hid_mouse_ignore_list[] = {
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_ANSI) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_ISO) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_JIS) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING10_T2_A) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING10_T2_B) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING10_T2_C) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING10_T2_D) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING10_T2_E) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) },
|
||||
{ }
|
||||
@@ -0,0 +1,114 @@
|
||||
From: fedora kernel <fedora@kernel.org>
|
||||
Subject: patch touchpad
|
||||
|
||||
diff --git a/drivers/input/mouse/bcm5974.c b/drivers/input/mouse/bcm5974.c
|
||||
index 59a14505b9cd..210019a0742a 100644
|
||||
--- a/drivers/input/mouse/bcm5974.c
|
||||
+++ b/drivers/input/mouse/bcm5974.c
|
||||
@@ -82,6 +82,17 @@
|
||||
#define USB_DEVICE_ID_APPLE_WELLSPRING9_ANSI 0x0272
|
||||
#define USB_DEVICE_ID_APPLE_WELLSPRING9_ISO 0x0273
|
||||
#define USB_DEVICE_ID_APPLE_WELLSPRING9_JIS 0x0274
|
||||
+/* T2-Attached Devices */
|
||||
+/* MacbookAir8,1 (2018) */
|
||||
+#define USB_DEVICE_ID_APPLE_WELLSPRING10_T2_A 0x027a
|
||||
+/* MacbookPro15,2 (2018) */
|
||||
+#define USB_DEVICE_ID_APPLE_WELLSPRING10_T2_B 0x027b
|
||||
+/* MacbookPro15,1 (2018) */
|
||||
+#define USB_DEVICE_ID_APPLE_WELLSPRING10_T2_C 0x027c
|
||||
+/* MacbookPro15,4 (2019) */
|
||||
+#define USB_DEVICE_ID_APPLE_WELLSPRING10_T2_D 0x027d
|
||||
+/* MacbookPro16,1 (2019)*/
|
||||
+#define USB_DEVICE_ID_APPLE_WELLSPRING10_T2_E 0x0340
|
||||
|
||||
#define BCM5974_DEVICE(prod) { \
|
||||
.match_flags = (USB_DEVICE_ID_MATCH_DEVICE | \
|
||||
@@ -147,6 +158,16 @@
|
||||
BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING9_ANSI),
|
||||
BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING9_ISO),
|
||||
BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING9_JIS),
|
||||
+ /* MacbookAir8,1 */
|
||||
+ BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING10_T2_A),
|
||||
+ /* MacbookPro15,2 */
|
||||
+ BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING10_T2_B),
|
||||
+ /* MacbookPro15,1 */
|
||||
+ BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING10_T2_C),
|
||||
+ /* MacbookPro15,4 */
|
||||
+ BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING10_T2_D),
|
||||
+ /* MacbookPro16,1 */
|
||||
+ BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING10_T2_E),
|
||||
/* Terminating entry */
|
||||
{}
|
||||
};
|
||||
@@ -483,6 +504,71 @@
|
||||
{ SN_COORD, -203, 6803 },
|
||||
{ SN_ORIENT, -MAX_FINGER_ORIENTATION, MAX_FINGER_ORIENTATION }
|
||||
},
|
||||
+ {
|
||||
+ USB_DEVICE_ID_APPLE_WELLSPRING10_T2_A,
|
||||
+ 0,
|
||||
+ 0,
|
||||
+ HAS_INTEGRATED_BUTTON,
|
||||
+ 0, sizeof(struct bt_data),
|
||||
+ 0x83, DATAFORMAT(TYPE4),
|
||||
+ { SN_PRESSURE, 0, 300 },
|
||||
+ { SN_WIDTH, 0, 2048 },
|
||||
+ { SN_COORD, -6243, 6749 },
|
||||
+ { SN_COORD, -170, 7685 },
|
||||
+ { SN_ORIENT, -MAX_FINGER_ORIENTATION, MAX_FINGER_ORIENTATION }
|
||||
+ },
|
||||
+ {
|
||||
+ USB_DEVICE_ID_APPLE_WELLSPRING10_T2_B,
|
||||
+ 0,
|
||||
+ 0,
|
||||
+ HAS_INTEGRATED_BUTTON,
|
||||
+ 0, sizeof(struct bt_data),
|
||||
+ 0x83, DATAFORMAT(TYPE4),
|
||||
+ { SN_PRESSURE, 0, 300 },
|
||||
+ { SN_WIDTH, 0, 2048 },
|
||||
+ { SN_COORD, -6243, 6749 },
|
||||
+ { SN_COORD, -170, 7685 },
|
||||
+ { SN_ORIENT, -MAX_FINGER_ORIENTATION, MAX_FINGER_ORIENTATION }
|
||||
+ },
|
||||
+ {
|
||||
+ USB_DEVICE_ID_APPLE_WELLSPRING10_T2_C,
|
||||
+ 0,
|
||||
+ 0,
|
||||
+ HAS_INTEGRATED_BUTTON,
|
||||
+ 0, sizeof(struct bt_data),
|
||||
+ 0x83, DATAFORMAT(TYPE4),
|
||||
+ { SN_PRESSURE, 0, 300 },
|
||||
+ { SN_WIDTH, 0, 2048 },
|
||||
+ { SN_COORD, -7456, 7976 },
|
||||
+ { SN_COORD, -1768, 7685 },
|
||||
+ { SN_ORIENT, -MAX_FINGER_ORIENTATION, MAX_FINGER_ORIENTATION }
|
||||
+ },
|
||||
+ {
|
||||
+ USB_DEVICE_ID_APPLE_WELLSPRING10_T2_D,
|
||||
+ 0,
|
||||
+ 0,
|
||||
+ HAS_INTEGRATED_BUTTON,
|
||||
+ 0, sizeof(struct bt_data),
|
||||
+ 0x83, DATAFORMAT(TYPE4),
|
||||
+ { SN_PRESSURE, 0, 300 },
|
||||
+ { SN_WIDTH, 0, 2048 },
|
||||
+ { SN_COORD, -6243, 6749 },
|
||||
+ { SN_COORD, -170, 7685 },
|
||||
+ { SN_ORIENT, -MAX_FINGER_ORIENTATION, MAX_FINGER_ORIENTATION }
|
||||
+ },
|
||||
+ {
|
||||
+ USB_DEVICE_ID_APPLE_WELLSPRING10_T2_E,
|
||||
+ 0,
|
||||
+ 0,
|
||||
+ HAS_INTEGRATED_BUTTON,
|
||||
+ 0, sizeof(struct bt_data),
|
||||
+ 0x83, DATAFORMAT(TYPE4),
|
||||
+ { SN_PRESSURE, 0, 300 },
|
||||
+ { SN_WIDTH, 0, 2048 },
|
||||
+ { SN_COORD, -6243, 6749 },
|
||||
+ { SN_COORD, -170, 7685 },
|
||||
+ { SN_ORIENT, -MAX_FINGER_ORIENTATION, MAX_FINGER_ORIENTATION }
|
||||
+ },
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -0,0 +1,143 @@
|
||||
From: fedora kernel <fedora@kernel.org>
|
||||
Subject: patch wifi
|
||||
|
||||
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
|
||||
index 22534bf2a..5c7bf9829 100644
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
|
||||
@@ -703,6 +703,7 @@
|
||||
switch (ci->pub.chip) {
|
||||
case BRCM_CC_4345_CHIP_ID:
|
||||
return 0x198000;
|
||||
+ case BRCM_CC_4377_CHIP_ID: /* MacBookPro15,4 */
|
||||
case BRCM_CC_4335_CHIP_ID:
|
||||
case BRCM_CC_4339_CHIP_ID:
|
||||
case BRCM_CC_4350_CHIP_ID:
|
||||
@@ -721,6 +722,8 @@
|
||||
case BRCM_CC_4366_CHIP_ID:
|
||||
case BRCM_CC_43664_CHIP_ID:
|
||||
return 0x200000;
|
||||
+ case BRCM_CC_4355_CHIP_ID: /* MacBookAir8,x */
|
||||
+ case BRCM_CC_4364_CHIP_ID: /* MacBookPro15,x, 16,x */
|
||||
case BRCM_CC_4359_CHIP_ID:
|
||||
return (ci->pub.chiprev < 9) ? 0x180000 : 0x160000;
|
||||
case CY_CC_4373_CHIP_ID:
|
||||
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||||
index 58a6bc379..c748d9cd5 100644
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||||
@@ -48,15 +48,18 @@
|
||||
BRCMF_FW_DEF(43602, "brcmfmac43602-pcie");
|
||||
BRCMF_FW_DEF(4350, "brcmfmac4350-pcie");
|
||||
BRCMF_FW_DEF(4350C, "brcmfmac4350c2-pcie");
|
||||
+BRCMF_FW_DEF(4355, "brcmfmac4355-pcie"); /* MacBookAir8,x */
|
||||
BRCMF_FW_DEF(4356, "brcmfmac4356-pcie");
|
||||
BRCMF_FW_DEF(43570, "brcmfmac43570-pcie");
|
||||
BRCMF_FW_DEF(4358, "brcmfmac4358-pcie");
|
||||
BRCMF_FW_DEF(4359, "brcmfmac4359-pcie");
|
||||
+BRCMF_FW_DEF(4364, "brcmfmac4364-pcie"); /* MacBookPro15,x 16,x */
|
||||
BRCMF_FW_DEF(4365B, "brcmfmac4365b-pcie");
|
||||
BRCMF_FW_DEF(4365C, "brcmfmac4365c-pcie");
|
||||
BRCMF_FW_DEF(4366B, "brcmfmac4366b-pcie");
|
||||
BRCMF_FW_DEF(4366C, "brcmfmac4366c-pcie");
|
||||
BRCMF_FW_DEF(4371, "brcmfmac4371-pcie");
|
||||
+BRCMF_FW_DEF(4377, "brcmfmac4377-pcie"); /* MacBookPro15,4 */
|
||||
|
||||
static const struct brcmf_firmware_mapping brcmf_pcie_fwnames[] = {
|
||||
BRCMF_FW_ENTRY(BRCM_CC_43602_CHIP_ID, 0xFFFFFFFF, 43602),
|
||||
@@ -64,18 +67,21 @@
|
||||
BRCMF_FW_ENTRY(BRCM_CC_4350_CHIP_ID, 0x000000FF, 4350C),
|
||||
BRCMF_FW_ENTRY(BRCM_CC_4350_CHIP_ID, 0xFFFFFF00, 4350),
|
||||
BRCMF_FW_ENTRY(BRCM_CC_43525_CHIP_ID, 0xFFFFFFF0, 4365C),
|
||||
+ BRCMF_FW_ENTRY(BRCM_CC_4355_CHIP_ID, 0xFFFFFFFF, 4355), /* MacBookAir8,x */
|
||||
BRCMF_FW_ENTRY(BRCM_CC_4356_CHIP_ID, 0xFFFFFFFF, 4356),
|
||||
BRCMF_FW_ENTRY(BRCM_CC_43567_CHIP_ID, 0xFFFFFFFF, 43570),
|
||||
BRCMF_FW_ENTRY(BRCM_CC_43569_CHIP_ID, 0xFFFFFFFF, 43570),
|
||||
BRCMF_FW_ENTRY(BRCM_CC_43570_CHIP_ID, 0xFFFFFFFF, 43570),
|
||||
BRCMF_FW_ENTRY(BRCM_CC_4358_CHIP_ID, 0xFFFFFFFF, 4358),
|
||||
BRCMF_FW_ENTRY(BRCM_CC_4359_CHIP_ID, 0xFFFFFFFF, 4359),
|
||||
+ BRCMF_FW_ENTRY(BRCM_CC_4364_CHIP_ID, 0xFFFFFFFF, 4364), /* MacBookPro15,x 16,x */
|
||||
BRCMF_FW_ENTRY(BRCM_CC_4365_CHIP_ID, 0x0000000F, 4365B),
|
||||
BRCMF_FW_ENTRY(BRCM_CC_4365_CHIP_ID, 0xFFFFFFF0, 4365C),
|
||||
BRCMF_FW_ENTRY(BRCM_CC_4366_CHIP_ID, 0x0000000F, 4366B),
|
||||
BRCMF_FW_ENTRY(BRCM_CC_4366_CHIP_ID, 0xFFFFFFF0, 4366C),
|
||||
BRCMF_FW_ENTRY(BRCM_CC_43664_CHIP_ID, 0xFFFFFFF0, 4366C),
|
||||
BRCMF_FW_ENTRY(BRCM_CC_4371_CHIP_ID, 0xFFFFFFFF, 4371),
|
||||
+ BRCMF_FW_ENTRY(BRCM_CC_4377_CHIP_ID, 0xFFFFFFFF, 4377), /* MacBookPro15,4 */
|
||||
};
|
||||
|
||||
#define BRCMF_PCIE_FW_UP_TIMEOUT 5000 /* msec */
|
||||
@@ -2096,6 +2102,7 @@
|
||||
BRCMF_PCIE_DEVICE(BRCM_PCIE_4350_DEVICE_ID),
|
||||
BRCMF_PCIE_DEVICE_SUB(0x4355, BRCM_PCIE_VENDOR_ID_BROADCOM, 0x4355),
|
||||
BRCMF_PCIE_DEVICE(BRCM_PCIE_4354_RAW_DEVICE_ID),
|
||||
+ BRCMF_PCIE_DEVICE(BRCM_PCIE_4355_DEVICE_ID), /* MacBookAir8,x */
|
||||
BRCMF_PCIE_DEVICE(BRCM_PCIE_4356_DEVICE_ID),
|
||||
BRCMF_PCIE_DEVICE(BRCM_PCIE_43567_DEVICE_ID),
|
||||
BRCMF_PCIE_DEVICE(BRCM_PCIE_43570_DEVICE_ID),
|
||||
@@ -2105,6 +2112,7 @@
|
||||
BRCMF_PCIE_DEVICE(BRCM_PCIE_43602_2G_DEVICE_ID),
|
||||
BRCMF_PCIE_DEVICE(BRCM_PCIE_43602_5G_DEVICE_ID),
|
||||
BRCMF_PCIE_DEVICE(BRCM_PCIE_43602_RAW_DEVICE_ID),
|
||||
+ BRCMF_PCIE_DEVICE(BRCM_PCIE_4364_DEVICE_ID), /* MacBookPro15,x 16,x */
|
||||
BRCMF_PCIE_DEVICE(BRCM_PCIE_4365_DEVICE_ID),
|
||||
BRCMF_PCIE_DEVICE(BRCM_PCIE_4365_2G_DEVICE_ID),
|
||||
BRCMF_PCIE_DEVICE(BRCM_PCIE_4365_5G_DEVICE_ID),
|
||||
@@ -2113,6 +2121,7 @@
|
||||
BRCMF_PCIE_DEVICE(BRCM_PCIE_4366_2G_DEVICE_ID),
|
||||
BRCMF_PCIE_DEVICE(BRCM_PCIE_4366_5G_DEVICE_ID),
|
||||
BRCMF_PCIE_DEVICE(BRCM_PCIE_4371_DEVICE_ID),
|
||||
+ BRCMF_PCIE_DEVICE(BRCM_PCIE_4377_DEVICE_ID), /* MacBookPro15,4 */
|
||||
{ /* end: all zeroes */ }
|
||||
};
|
||||
|
||||
diff --git a/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h b/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h
|
||||
index 839980da9..da0bc47bb 100644
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h
|
||||
@@ -36,6 +36,7 @@
|
||||
#define BRCM_CC_4350_CHIP_ID 0x4350
|
||||
#define BRCM_CC_43525_CHIP_ID 43525
|
||||
#define BRCM_CC_4354_CHIP_ID 0x4354
|
||||
+#define BRCM_CC_4355_CHIP_ID 0x4355 /* MacBookAir8,x */
|
||||
#define BRCM_CC_4356_CHIP_ID 0x4356
|
||||
#define BRCM_CC_43566_CHIP_ID 43566
|
||||
#define BRCM_CC_43567_CHIP_ID 43567
|
||||
@@ -44,10 +45,12 @@
|
||||
#define BRCM_CC_4358_CHIP_ID 0x4358
|
||||
#define BRCM_CC_4359_CHIP_ID 0x4359
|
||||
#define BRCM_CC_43602_CHIP_ID 43602
|
||||
+#define BRCM_CC_4364_CHIP_ID 0x4364 /* MacBookPro15,x 16,x */
|
||||
#define BRCM_CC_4365_CHIP_ID 0x4365
|
||||
#define BRCM_CC_4366_CHIP_ID 0x4366
|
||||
#define BRCM_CC_43664_CHIP_ID 43664
|
||||
#define BRCM_CC_4371_CHIP_ID 0x4371
|
||||
+#define BRCM_CC_4377_CHIP_ID 0x4377 /* MacBookPro15,4 */
|
||||
#define CY_CC_4373_CHIP_ID 0x4373
|
||||
#define CY_CC_43012_CHIP_ID 43012
|
||||
|
||||
@@ -65,6 +68,7 @@
|
||||
#define BRCM_PCIE_4350_DEVICE_ID 0x43a3
|
||||
#define BRCM_PCIE_4354_DEVICE_ID 0x43df
|
||||
#define BRCM_PCIE_4354_RAW_DEVICE_ID 0x4354
|
||||
+#define BRCM_PCIE_4355_DEVICE_ID 0x43dc /* MacBookAir8,x */
|
||||
#define BRCM_PCIE_4356_DEVICE_ID 0x43ec
|
||||
#define BRCM_PCIE_43567_DEVICE_ID 0x43d3
|
||||
#define BRCM_PCIE_43570_DEVICE_ID 0x43d9
|
||||
@@ -74,6 +78,7 @@
|
||||
#define BRCM_PCIE_43602_2G_DEVICE_ID 0x43bb
|
||||
#define BRCM_PCIE_43602_5G_DEVICE_ID 0x43bc
|
||||
#define BRCM_PCIE_43602_RAW_DEVICE_ID 43602
|
||||
+#define BRCM_PCIE_4364_DEVICE_ID 0x4464 /* MacBookPro15,x 16,x */
|
||||
#define BRCM_PCIE_4365_DEVICE_ID 0x43ca
|
||||
#define BRCM_PCIE_4365_2G_DEVICE_ID 0x43cb
|
||||
#define BRCM_PCIE_4365_5G_DEVICE_ID 0x43cc
|
||||
@@ -81,6 +86,7 @@
|
||||
#define BRCM_PCIE_4366_2G_DEVICE_ID 0x43c4
|
||||
#define BRCM_PCIE_4366_5G_DEVICE_ID 0x43c5
|
||||
#define BRCM_PCIE_4371_DEVICE_ID 0x440d
|
||||
+#define BRCM_PCIE_4377_DEVICE_ID 0x4488 /* MacBookPro15,4 */
|
||||
|
||||
|
||||
/* brcmsmac IDs */
|
||||
|
||||
@@ -103,7 +103,8 @@ awk -v data="hid-apple\nsnd-seq\napple-bce" '
|
||||
BEGIN {p=1}
|
||||
/### apple-bce start ###/ {print; print data;p=0}
|
||||
/### apple-bce end ###/ {p=1}
|
||||
p' /etc/initramfs-tools/modules > /etc/initramfs-tools/modules
|
||||
p' /etc/initramfs-tools/modules > /etc/initramfs-tools/modules.new
|
||||
mv -f /etc/initramfs-tools/modules.new /etc/initramfs-tools/modules
|
||||
else
|
||||
printf '\n### apple-bce start ###\nhid-apple\nsnd-seq\napple-bce\n### apple-bce end ###\n' >>/etc/initramfs-tools/modules
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user