mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-24 11:16:51 +00:00
Merge pull request #1786 from MilhouseVH/le82_linux_hybrid
linux: bump RPi/RPi2 to linux-4.9.36, Generic to 4.11.8
This commit is contained in:
commit
01fd0f8a8b
@ -338,6 +338,7 @@ dashes="==========================="
|
||||
check_arch="$check_arch\n\n Valid Architectures for your project: $PROJECT"
|
||||
|
||||
for arch in $linux_config_dir/*.conf $linux_config_dir/*/linux.$TARGET_ARCH.conf; do
|
||||
[[ ${arch} =~ .*\*.* ]] && continue #ignore unexpanded wildcard
|
||||
check_arch="$check_arch\n - $(basename $arch | cut -f2 -d".")"
|
||||
done
|
||||
echo -e $check_arch
|
||||
|
@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="bcm2835-driver"
|
||||
PKG_VERSION="856c68d"
|
||||
PKG_VERSION="6ba0dab"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="nonfree"
|
||||
PKG_SITE="http://www.broadcom.com"
|
||||
|
@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="RTL8188EU"
|
||||
PKG_VERSION="ced2b64"
|
||||
PKG_VERSION="18a5f33"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
# realtek: PKG_SITE="http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&PFid=48&Level=5&Conn=4&ProdID=274&DownTypeID=3&GetDown=false&Downloads=true"
|
||||
|
@ -17,11 +17,12 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="RTL8192CU"
|
||||
PKG_VERSION="v4.0.2_9000.20130911"
|
||||
PKG_VERSION="76b54cd"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&PFid=48&Level=5&Conn=4&ProdID=274&DownTypeID=3&GetDown=false&Downloads=true"
|
||||
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
PKG_SITE="https://github.com/pvaret/rtl8192cu-fixes"
|
||||
PKG_URL="$PKG_SITE/archive/$PKG_VERSION.tar.gz"
|
||||
PKG_SOURCE_DIR="rtl8192cu-fixes-$PKG_VERSION*"
|
||||
PKG_DEPENDS_TARGET="toolchain linux"
|
||||
PKG_NEED_UNPACK="$LINUX_DEPENDS"
|
||||
PKG_SECTION="driver"
|
||||
|
@ -10,14 +10,3 @@ diff -Naur RTL8192CU-v4.0.2_9000.20130911/hal/rtl8192c/usb/usb_halinit.c RTL8192
|
||||
break;
|
||||
case EEPROM_CID_WHQL:
|
||||
/*
|
||||
diff -Naur RTL8192CU-v4.0.2_9000.20130911/os_dep/linux/usb_intf.c RTL8192CU-v4.0.2_9000.20130911.patch/os_dep/linux/usb_intf.c
|
||||
--- RTL8192CU-v4.0.2_9000.20130911/os_dep/linux/usb_intf.c 2013-09-11 05:56:55.000000000 +0200
|
||||
+++ RTL8192CU-v4.0.2_9000.20130911.patch/os_dep/linux/usb_intf.c 2014-04-01 20:19:23.936708369 +0200
|
||||
@@ -138,6 +138,7 @@
|
||||
{USB_DEVICE(0x2001, 0x3307)},/* D-Link - Cameo */ \
|
||||
{USB_DEVICE(0x2001, 0x330A)},/* D-Link - Alpha */ \
|
||||
{USB_DEVICE(0x2001, 0x3309)},/* D-Link - Alpha */ \
|
||||
+ {USB_DEVICE(0x2001, 0x330D)},/* D-Link - Alpha(?)*/ \
|
||||
{USB_DEVICE(0x0586, 0x341F)},/* Zyxel - Abocom */ \
|
||||
{USB_DEVICE(0x7392, 0x7822)},/* Edimax - Edimax */ \
|
||||
{USB_DEVICE(0x2019, 0xAB2B)},/* Planex - Abocom */ \
|
||||
|
@ -1,22 +0,0 @@
|
||||
diff -Naur RTL8192CU-v4.0.2_9000.20130911/os_dep/linux/usb_intf.c RTL8192CU-v4.0.2_9000.20130911.patch/os_dep/linux/usb_intf.c
|
||||
--- RTL8192CU-v4.0.2_9000.20130911/os_dep/linux/usb_intf.c 2013-09-11 05:56:55.000000000 +0200
|
||||
+++ RTL8192CU-v4.0.2_9000.20130911.patch/os_dep/linux/usb_intf.c 2014-06-08 15:44:13.239381855 +0200
|
||||
@@ -96,6 +96,7 @@
|
||||
{USB_DEVICE(0x2019, 0xED17)},/* PCI - Edimax */ \
|
||||
{USB_DEVICE(0x0DF6, 0x0052)},/* Sitecom - Edimax */ \
|
||||
{USB_DEVICE(0x7392, 0x7811)},/* Edimax - Edimax */ \
|
||||
+ {USB_DEVICE(0x07B8, 0x8188)},/* Abocom - Abocom */ \
|
||||
{USB_DEVICE(0x07B8, 0x8189)},/* Abocom - Abocom */ \
|
||||
{USB_DEVICE(0x0EB0, 0x9071)},/* NO Brand - Etop */ \
|
||||
{USB_DEVICE(0x06F8, 0xE033)},/* Hercules - Edimax */ \
|
||||
@@ -144,8 +145,10 @@
|
||||
{USB_DEVICE(0x07B8, 0x8178)},/* Abocom - Abocom */ \
|
||||
{USB_DEVICE(0x07AA, 0x0056)},/* ATKK - Gemtek */ \
|
||||
{USB_DEVICE(0x4855, 0x0091)},/* - Feixun */ \
|
||||
+ {USB_DEVICE(0x050D, 0x11F2)},/* Belkin - Edimax */ \
|
||||
{USB_DEVICE(0x050D, 0x2102)},/* Belkin - Sercomm */ \
|
||||
{USB_DEVICE(0x050D, 0x2103)},/* Belkin - Edimax */ \
|
||||
+ {USB_DEVICE(0x050D, 0x21F2)},/* Belkin - Edimax */ \
|
||||
{USB_DEVICE(0x20F4, 0x624D)},/* TRENDnet */ \
|
||||
{USB_DEVICE(0x0DF6, 0x0061)},/* Sitecom - Edimax */ \
|
||||
{USB_DEVICE(0x0B05, 0x17AB)},/* ASUS - Edimax */ \
|
@ -1,15 +0,0 @@
|
||||
diff -Naur RTL8192CU-v4.0.2_9000.20130911/os_dep/linux/rtw_android.c RTL8192CU-v4.0.2_9000.20130911.patch/os_dep/linux/rtw_android.c
|
||||
--- RTL8192CU-v4.0.2_9000.20130911/os_dep/linux/rtw_android.c 2013-09-11 05:56:55.000000000 +0200
|
||||
+++ RTL8192CU-v4.0.2_9000.20130911.patch/os_dep/linux/rtw_android.c 2015-04-04 20:20:23.779119031 +0200
|
||||
@@ -230,7 +230,11 @@
|
||||
{
|
||||
int cmd_num;
|
||||
for(cmd_num=0 ; cmd_num<ANDROID_WIFI_CMD_MAX; cmd_num++)
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0))
|
||||
+ if(!strncasecmp(cmdstr , android_wifi_cmd_str[cmd_num], strlen(android_wifi_cmd_str[cmd_num])) )
|
||||
+#else
|
||||
if(0 == strnicmp(cmdstr , android_wifi_cmd_str[cmd_num], strlen(android_wifi_cmd_str[cmd_num])) )
|
||||
+#endif
|
||||
break;
|
||||
|
||||
return cmd_num;
|
@ -1,17 +0,0 @@
|
||||
diff -Naur a/os_dep/linux/os_intfs.c b/os_dep/linux/os_intfs.c
|
||||
--- a/os_dep/linux/os_intfs.c 2016-04-19 11:17:44.465411644 -0700
|
||||
+++ b/os_dep/linux/os_intfs.c 2016-04-19 11:23:24.742014169 -0700
|
||||
@@ -958,7 +958,13 @@
|
||||
return dscp >> 5;
|
||||
}
|
||||
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,6,0)
|
||||
+static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb,
|
||||
+ void *accel_priv,
|
||||
+ select_queue_fallback_t fallback)
|
||||
+#else
|
||||
static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb)
|
||||
+#endif
|
||||
{
|
||||
_adapter *padapter = rtw_netdev_priv(dev);
|
||||
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
|
@ -1,18 +0,0 @@
|
||||
diff -Naur a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c
|
||||
--- a/os_dep/linux/ioctl_cfg80211.c 2016-09-11 01:43:17.669610692 +0100
|
||||
+++ b/os_dep/linux/ioctl_cfg80211.c 2016-09-11 01:45:09.268139751 +0100
|
||||
@@ -1789,7 +1789,14 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0)
|
||||
+ struct cfg80211_scan_info info = {
|
||||
+ .aborted = aborted
|
||||
+ };
|
||||
+ cfg80211_scan_done(pwdev_priv->scan_request, &info);
|
||||
+#else
|
||||
cfg80211_scan_done(pwdev_priv->scan_request, aborted);
|
||||
+#endif
|
||||
}
|
||||
|
||||
pwdev_priv->scan_request = NULL;
|
@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="RTL8192DU"
|
||||
PKG_VERSION="9e7eb15"
|
||||
PKG_VERSION="efc8508"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/lwfinger/rtl8192du"
|
||||
|
@ -1,236 +0,0 @@
|
||||
diff -Naur a/os_dep/ioctl_cfg80211.c b/os_dep/ioctl_cfg80211.c
|
||||
--- a/os_dep/ioctl_cfg80211.c 2016-06-23 13:12:55.005653163 +0100
|
||||
+++ b/os_dep/ioctl_cfg80211.c 2016-06-23 13:13:25.961839084 +0100
|
||||
@@ -47,7 +47,7 @@
|
||||
}
|
||||
|
||||
#define CHAN2G(_channel, _freq, _flags) { \
|
||||
- .band = IEEE80211_BAND_2GHZ, \
|
||||
+ .band = NL80211_BAND_2GHZ, \
|
||||
.center_freq = (_freq), \
|
||||
.hw_value = (_channel), \
|
||||
.flags = (_flags), \
|
||||
@@ -56,7 +56,7 @@
|
||||
}
|
||||
|
||||
#define CHAN5G(_channel, _flags) { \
|
||||
- .band = IEEE80211_BAND_5GHZ, \
|
||||
+ .band = NL80211_BAND_5GHZ, \
|
||||
.center_freq = 5000 + (5 * (_channel)), \
|
||||
.hw_value = (_channel), \
|
||||
.flags = (_flags), \
|
||||
@@ -155,19 +155,19 @@
|
||||
}
|
||||
|
||||
static struct ieee80211_supported_band *rtw_spt_band_alloc(
|
||||
- enum ieee80211_band band
|
||||
+ enum nl80211_band band
|
||||
)
|
||||
{
|
||||
struct ieee80211_supported_band *spt_band = NULL;
|
||||
int n_channels, n_bitrates;
|
||||
int len;
|
||||
|
||||
- if (band == IEEE80211_BAND_2GHZ)
|
||||
+ if (band == NL80211_BAND_2GHZ)
|
||||
{
|
||||
n_channels = RTW_2G_CHANNELS_NUM;
|
||||
n_bitrates = RTW_G_RATES_NUM;
|
||||
}
|
||||
- else if (band == IEEE80211_BAND_5GHZ)
|
||||
+ else if (band == NL80211_BAND_5GHZ)
|
||||
{
|
||||
n_channels = RTW_5G_CHANNELS_NUM;
|
||||
n_bitrates = RTW_A_RATES_NUM;
|
||||
@@ -190,12 +190,12 @@
|
||||
spt_band->n_channels = n_channels;
|
||||
spt_band->n_bitrates = n_bitrates;
|
||||
|
||||
- if (band == IEEE80211_BAND_2GHZ)
|
||||
+ if (band == NL80211_BAND_2GHZ)
|
||||
{
|
||||
rtw_2g_channels_init(spt_band->channels);
|
||||
rtw_2g_rates_init(spt_band->bitrates);
|
||||
}
|
||||
- else if (band == IEEE80211_BAND_5GHZ)
|
||||
+ else if (band == NL80211_BAND_5GHZ)
|
||||
{
|
||||
rtw_5g_channels_init(spt_band->channels);
|
||||
rtw_5g_rates_init(spt_band->bitrates);
|
||||
@@ -215,13 +215,13 @@
|
||||
if (!spt_band)
|
||||
return;
|
||||
|
||||
- if (spt_band->band == IEEE80211_BAND_2GHZ)
|
||||
+ if (spt_band->band == NL80211_BAND_2GHZ)
|
||||
{
|
||||
size = sizeof(struct ieee80211_supported_band)
|
||||
+ sizeof(struct ieee80211_channel)*RTW_2G_CHANNELS_NUM
|
||||
+ sizeof(struct ieee80211_rate)*RTW_G_RATES_NUM;
|
||||
}
|
||||
- else if (spt_band->band == IEEE80211_BAND_5GHZ)
|
||||
+ else if (spt_band->band == NL80211_BAND_5GHZ)
|
||||
{
|
||||
size = sizeof(struct ieee80211_supported_band)
|
||||
+ sizeof(struct ieee80211_channel)*RTW_5G_CHANNELS_NUM
|
||||
@@ -290,12 +290,12 @@
|
||||
/* see 802.11 17.3.8.3.2 and Annex J
|
||||
* there are overlapping channel numbers in 5GHz and 2GHz bands */
|
||||
|
||||
- if (band == IEEE80211_BAND_5GHZ) {
|
||||
+ if (band == NL80211_BAND_5GHZ) {
|
||||
if (chan >= 182 && chan <= 196)
|
||||
return 4000 + chan * 5;
|
||||
else
|
||||
return 5000 + chan * 5;
|
||||
- } else { /* IEEE80211_BAND_2GHZ */
|
||||
+ } else { /* NL80211_BAND_2GHZ */
|
||||
if (chan == 14)
|
||||
return 2484;
|
||||
else if (chan < 14)
|
||||
@@ -335,9 +335,9 @@
|
||||
|
||||
channel = pnetwork->network.Configuration.DSConfig;
|
||||
if (channel <= RTW_CH_MAX_2G_CHANNEL)
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
|
||||
else
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_5GHZ);
|
||||
|
||||
notify_channel = ieee80211_get_channel(wiphy, freq);
|
||||
|
||||
@@ -435,9 +435,9 @@
|
||||
u16 channel = cur_network->network.Configuration.DSConfig;
|
||||
|
||||
if (channel <= RTW_CH_MAX_2G_CHANNEL)
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
|
||||
else
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_5GHZ);
|
||||
|
||||
notify_channel = ieee80211_get_channel(wiphy, freq);
|
||||
#endif
|
||||
@@ -2434,9 +2434,9 @@
|
||||
#else /* defined(RTW_USE_CFG80211_STA_EVENT) */
|
||||
channel = pmlmeext->cur_channel;
|
||||
if (channel <= RTW_CH_MAX_2G_CHANNEL)
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
|
||||
else
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_5GHZ);
|
||||
|
||||
rtw_cfg80211_rx_mgmt(padapter, freq, 0, pmgmt_frame, frame_len, flags);
|
||||
#endif /* defined(RTW_USE_CFG80211_STA_EVENT) */
|
||||
@@ -2463,9 +2463,9 @@
|
||||
#else /* defined(RTW_USE_CFG80211_STA_EVENT) */
|
||||
channel = pmlmeext->cur_channel;
|
||||
if (channel <= RTW_CH_MAX_2G_CHANNEL)
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
|
||||
else
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_5GHZ);
|
||||
|
||||
pmgmt_frame = mgmt_buf;
|
||||
pwlanhdr = (struct rtw_ieee80211_hdr *)pmgmt_frame;
|
||||
@@ -3148,9 +3148,9 @@
|
||||
|
||||
indicate:
|
||||
if (channel <= RTW_CH_MAX_2G_CHANNEL)
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
|
||||
else
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_5GHZ);
|
||||
|
||||
rtw_cfg80211_rx_mgmt(padapter, freq, 0, pmgmt_frame, frame_len, flags);
|
||||
}
|
||||
@@ -3172,9 +3172,9 @@
|
||||
|
||||
indicate:
|
||||
if (channel <= RTW_CH_MAX_2G_CHANNEL)
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
|
||||
else
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_5GHZ);
|
||||
|
||||
rtw_cfg80211_rx_mgmt(padapter, freq, 0, frame, frame_len, flags);
|
||||
}
|
||||
@@ -3199,9 +3199,9 @@
|
||||
DBG_8192D("RTW_Rx:category(%u), action(%u)\n", category, action);
|
||||
|
||||
if (channel <= RTW_CH_MAX_2G_CHANNEL)
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
|
||||
else
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_5GHZ);
|
||||
|
||||
rtw_cfg80211_rx_mgmt(adapter, freq, 0, frame, frame_len, flags);
|
||||
}
|
||||
@@ -3633,7 +3633,7 @@
|
||||
.mgmt_frame_register = cfg80211_rtw_mgmt_frame_register,
|
||||
};
|
||||
|
||||
-static void rtw_cfg80211_init_ht_capab(struct ieee80211_sta_ht_cap *ht_cap, enum ieee80211_band band, u8 rf_type)
|
||||
+static void rtw_cfg80211_init_ht_capab(struct ieee80211_sta_ht_cap *ht_cap, enum nl80211_band band, u8 rf_type)
|
||||
{
|
||||
|
||||
#define MAX_BIT_RATE_40MHZ_MCS15 300 /* Mbps */
|
||||
@@ -3657,7 +3657,7 @@
|
||||
ht_cap->mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED;
|
||||
|
||||
/*
|
||||
- *hw->wiphy->bands[IEEE80211_BAND_2GHZ]
|
||||
+ *hw->wiphy->bands[NL80211_BAND_2GHZ]
|
||||
*base on ant_num
|
||||
*rx_mask: RX mask
|
||||
*if rx_ant =1 rx_mask[0]=0xff;==>MCS0-MCS7
|
||||
@@ -3701,16 +3701,16 @@
|
||||
|
||||
/* if (padapter->registrypriv.wireless_mode & WIRELESS_11G) */
|
||||
{
|
||||
- bands = wiphy->bands[IEEE80211_BAND_2GHZ];
|
||||
+ bands = wiphy->bands[NL80211_BAND_2GHZ];
|
||||
if (bands)
|
||||
- rtw_cfg80211_init_ht_capab(&bands->ht_cap, IEEE80211_BAND_2GHZ, rf_type);
|
||||
+ rtw_cfg80211_init_ht_capab(&bands->ht_cap, NL80211_BAND_2GHZ, rf_type);
|
||||
}
|
||||
|
||||
/* if (padapter->registrypriv.wireless_mode & WIRELESS_11A) */
|
||||
{
|
||||
- bands = wiphy->bands[IEEE80211_BAND_5GHZ];
|
||||
+ bands = wiphy->bands[NL80211_BAND_5GHZ];
|
||||
if (bands)
|
||||
- rtw_cfg80211_init_ht_capab(&bands->ht_cap, IEEE80211_BAND_5GHZ, rf_type);
|
||||
+ rtw_cfg80211_init_ht_capab(&bands->ht_cap, NL80211_BAND_5GHZ, rf_type);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3750,9 +3750,9 @@
|
||||
wiphy->n_cipher_suites = ARRAY_SIZE(rtw_cipher_suites);
|
||||
|
||||
/* if (padapter->registrypriv.wireless_mode & WIRELESS_11G) */
|
||||
- wiphy->bands[IEEE80211_BAND_2GHZ] = rtw_spt_band_alloc(IEEE80211_BAND_2GHZ);
|
||||
+ wiphy->bands[NL80211_BAND_2GHZ] = rtw_spt_band_alloc(NL80211_BAND_2GHZ);
|
||||
/* if (padapter->registrypriv.wireless_mode & WIRELESS_11A) */
|
||||
- wiphy->bands[IEEE80211_BAND_5GHZ] = rtw_spt_band_alloc(IEEE80211_BAND_5GHZ);
|
||||
+ wiphy->bands[NL80211_BAND_5GHZ] = rtw_spt_band_alloc(NL80211_BAND_5GHZ);
|
||||
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38) && LINUX_VERSION_CODE < KERNEL_VERSION(3,0,0))
|
||||
wiphy->flags |= WIPHY_FLAG_SUPPORTS_SEPARATE_DEFAULT_KEYS;
|
||||
@@ -3855,8 +3855,8 @@
|
||||
|
||||
pwdev_priv = wdev_to_priv(wdev);
|
||||
|
||||
- rtw_spt_band_free(wdev->wiphy->bands[IEEE80211_BAND_2GHZ]);
|
||||
- rtw_spt_band_free(wdev->wiphy->bands[IEEE80211_BAND_5GHZ]);
|
||||
+ rtw_spt_band_free(wdev->wiphy->bands[NL80211_BAND_2GHZ]);
|
||||
+ rtw_spt_band_free(wdev->wiphy->bands[NL80211_BAND_5GHZ]);
|
||||
|
||||
wiphy_free(wdev->wiphy);
|
||||
|
@ -1,18 +0,0 @@
|
||||
diff -Naur a/os_dep/ioctl_cfg80211.c b/os_dep/ioctl_cfg80211.c
|
||||
--- a/os_dep/ioctl_cfg80211.c 2016-09-11 01:51:12.796375013 +0100
|
||||
+++ b/os_dep/ioctl_cfg80211.c 2016-09-11 01:52:39.942348529 +0100
|
||||
@@ -1425,7 +1425,14 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0)
|
||||
+ struct cfg80211_scan_info info = {
|
||||
+ .aborted = aborted
|
||||
+ };
|
||||
+ cfg80211_scan_done(pwdev_priv->scan_request, &info);
|
||||
+#else
|
||||
cfg80211_scan_done(pwdev_priv->scan_request, aborted);
|
||||
+#endif
|
||||
}
|
||||
|
||||
pwdev_priv->scan_request = NULL;
|
@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="RTL8192EU"
|
||||
PKG_VERSION="0c80da7"
|
||||
PKG_VERSION="c23c613"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/Mange/rtl8192eu-linux-driver"
|
||||
|
@ -1,346 +0,0 @@
|
||||
diff -Naur a/os_dep/linux/wifi_regd.c b/os_dep/linux/wifi_regd.c
|
||||
--- a/os_dep/linux/wifi_regd.c 2016-06-23 13:37:11.270350569 +0100
|
||||
+++ b/os_dep/linux/wifi_regd.c 2016-06-23 13:37:39.606515916 +0100
|
||||
@@ -143,7 +143,7 @@
|
||||
static void _rtw_reg_apply_beaconing_flags(struct wiphy *wiphy,
|
||||
enum nl80211_reg_initiator initiator)
|
||||
{
|
||||
- enum ieee80211_band band;
|
||||
+ enum nl80211_band band;
|
||||
struct ieee80211_supported_band *sband;
|
||||
const struct ieee80211_reg_rule *reg_rule;
|
||||
struct ieee80211_channel *ch;
|
||||
@@ -205,9 +205,9 @@
|
||||
u32 bandwidth = 0;
|
||||
int r;
|
||||
|
||||
- if (!wiphy->bands[IEEE80211_BAND_2GHZ])
|
||||
+ if (!wiphy->bands[NL80211_BAND_2GHZ])
|
||||
return;
|
||||
- sband = wiphy->bands[IEEE80211_BAND_2GHZ];
|
||||
+ sband = wiphy->bands[NL80211_BAND_2GHZ];
|
||||
|
||||
/*
|
||||
* If no country IE has been received always enable active scan
|
||||
@@ -258,10 +258,10 @@
|
||||
struct ieee80211_channel *ch;
|
||||
unsigned int i;
|
||||
|
||||
- if (!wiphy->bands[IEEE80211_BAND_5GHZ])
|
||||
+ if (!wiphy->bands[NL80211_BAND_5GHZ])
|
||||
return;
|
||||
|
||||
- sband = wiphy->bands[IEEE80211_BAND_5GHZ];
|
||||
+ sband = wiphy->bands[NL80211_BAND_5GHZ];
|
||||
|
||||
for (i = 0; i < sband->n_channels; i++) {
|
||||
ch = &sband->channels[i];
|
||||
@@ -298,12 +298,12 @@
|
||||
/* see 802.11 17.3.8.3.2 and Annex J
|
||||
* there are overlapping channel numbers in 5GHz and 2GHz bands */
|
||||
|
||||
- if (band == IEEE80211_BAND_5GHZ) {
|
||||
+ if (band == NL80211_BAND_5GHZ) {
|
||||
if (chan >= 182 && chan <= 196)
|
||||
return 4000 + chan * 5;
|
||||
else
|
||||
return 5000 + chan * 5;
|
||||
- } else { /* IEEE80211_BAND_2GHZ */
|
||||
+ } else { /* NL80211_BAND_2GHZ */
|
||||
if (chan == 14)
|
||||
return 2484;
|
||||
else if (chan < 14)
|
||||
@@ -348,11 +348,11 @@
|
||||
if (channel <= 14)
|
||||
freq =
|
||||
rtw_ieee80211_channel_to_frequency(channel,
|
||||
- IEEE80211_BAND_2GHZ);
|
||||
+ NL80211_BAND_2GHZ);
|
||||
else
|
||||
freq =
|
||||
rtw_ieee80211_channel_to_frequency(channel,
|
||||
- IEEE80211_BAND_5GHZ);
|
||||
+ NL80211_BAND_5GHZ);
|
||||
|
||||
ch = ieee80211_get_channel(wiphy, freq);
|
||||
if (ch) {
|
||||
@@ -393,11 +393,11 @@
|
||||
if (channel <= 14)
|
||||
freq =
|
||||
rtw_ieee80211_channel_to_frequency(channel,
|
||||
- IEEE80211_BAND_2GHZ);
|
||||
+ NL80211_BAND_2GHZ);
|
||||
else
|
||||
freq =
|
||||
rtw_ieee80211_channel_to_frequency(channel,
|
||||
- IEEE80211_BAND_5GHZ);
|
||||
+ NL80211_BAND_5GHZ);
|
||||
|
||||
ch = ieee80211_get_channel(wiphy, freq);
|
||||
if (ch) {
|
||||
@@ -544,4 +544,4 @@
|
||||
|
||||
return _rtw_reg_notifier_apply(wiphy, request, reg);
|
||||
}
|
||||
-#endif //CONFIG_IOCTL_CFG80211
|
||||
\ No newline at end of file
|
||||
+#endif //CONFIG_IOCTL_CFG80211
|
||||
diff -Naur a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c
|
||||
--- a/os_dep/linux/ioctl_cfg80211.c 2016-06-23 13:37:16.990383918 +0100
|
||||
+++ b/os_dep/linux/ioctl_cfg80211.c 2016-06-23 13:37:48.786569554 +0100
|
||||
@@ -74,7 +74,7 @@
|
||||
}
|
||||
|
||||
#define CHAN2G(_channel, _freq, _flags) { \
|
||||
- .band = IEEE80211_BAND_2GHZ, \
|
||||
+ .band = NL80211_BAND_2GHZ, \
|
||||
.center_freq = (_freq), \
|
||||
.hw_value = (_channel), \
|
||||
.flags = (_flags), \
|
||||
@@ -83,7 +83,7 @@
|
||||
}
|
||||
|
||||
#define CHAN5G(_channel, _flags) { \
|
||||
- .band = IEEE80211_BAND_5GHZ, \
|
||||
+ .band = NL80211_BAND_5GHZ, \
|
||||
.center_freq = 5000 + (5 * (_channel)), \
|
||||
.hw_value = (_channel), \
|
||||
.flags = (_flags), \
|
||||
@@ -200,18 +200,18 @@
|
||||
}
|
||||
|
||||
struct ieee80211_supported_band *rtw_spt_band_alloc(
|
||||
- enum ieee80211_band band
|
||||
+ enum nl80211_band band
|
||||
)
|
||||
{
|
||||
struct ieee80211_supported_band *spt_band = NULL;
|
||||
int n_channels, n_bitrates;
|
||||
|
||||
- if(band == IEEE80211_BAND_2GHZ)
|
||||
+ if(band == NL80211_BAND_2GHZ)
|
||||
{
|
||||
n_channels = RTW_2G_CHANNELS_NUM;
|
||||
n_bitrates = RTW_G_RATES_NUM;
|
||||
}
|
||||
- else if(band == IEEE80211_BAND_5GHZ)
|
||||
+ else if(band == NL80211_BAND_5GHZ)
|
||||
{
|
||||
n_channels = RTW_5G_CHANNELS_NUM;
|
||||
n_bitrates = RTW_A_RATES_NUM;
|
||||
@@ -235,12 +235,12 @@
|
||||
spt_band->n_channels = n_channels;
|
||||
spt_band->n_bitrates = n_bitrates;
|
||||
|
||||
- if(band == IEEE80211_BAND_2GHZ)
|
||||
+ if(band == NL80211_BAND_2GHZ)
|
||||
{
|
||||
rtw_2g_channels_init(spt_band->channels);
|
||||
rtw_2g_rates_init(spt_band->bitrates);
|
||||
}
|
||||
- else if(band == IEEE80211_BAND_5GHZ)
|
||||
+ else if(band == NL80211_BAND_5GHZ)
|
||||
{
|
||||
rtw_5g_channels_init(spt_band->channels);
|
||||
rtw_5g_rates_init(spt_band->bitrates);
|
||||
@@ -260,13 +260,13 @@
|
||||
if(!spt_band)
|
||||
return;
|
||||
|
||||
- if(spt_band->band == IEEE80211_BAND_2GHZ)
|
||||
+ if(spt_band->band == NL80211_BAND_2GHZ)
|
||||
{
|
||||
size = sizeof(struct ieee80211_supported_band)
|
||||
+ sizeof(struct ieee80211_channel)*RTW_2G_CHANNELS_NUM
|
||||
+ sizeof(struct ieee80211_rate)*RTW_G_RATES_NUM;
|
||||
}
|
||||
- else if(spt_band->band == IEEE80211_BAND_5GHZ)
|
||||
+ else if(spt_band->band == NL80211_BAND_5GHZ)
|
||||
{
|
||||
size = sizeof(struct ieee80211_supported_band)
|
||||
+ sizeof(struct ieee80211_channel)*RTW_5G_CHANNELS_NUM
|
||||
@@ -335,12 +335,12 @@
|
||||
/* see 802.11 17.3.8.3.2 and Annex J
|
||||
* there are overlapping channel numbers in 5GHz and 2GHz bands */
|
||||
|
||||
- if (band == IEEE80211_BAND_5GHZ) {
|
||||
+ if (band == NL80211_BAND_5GHZ) {
|
||||
if (chan >= 182 && chan <= 196)
|
||||
return 4000 + chan * 5;
|
||||
else
|
||||
return 5000 + chan * 5;
|
||||
- } else { /* IEEE80211_BAND_2GHZ */
|
||||
+ } else { /* NL80211_BAND_2GHZ */
|
||||
if (chan == 14)
|
||||
return 2484;
|
||||
else if (chan < 14)
|
||||
@@ -441,9 +441,9 @@
|
||||
DBG_871X("%s, got sr, but ssid mismatch, to remove this bss\n", __func__);
|
||||
|
||||
if (pselect_network->Configuration.DSConfig <= RTW_CH_MAX_2G_CHANNEL)
|
||||
- freq = rtw_ieee80211_channel_to_frequency(pselect_network->Configuration.DSConfig, IEEE80211_BAND_2GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(pselect_network->Configuration.DSConfig, NL80211_BAND_2GHZ);
|
||||
else
|
||||
- freq = rtw_ieee80211_channel_to_frequency(pselect_network->Configuration.DSConfig, IEEE80211_BAND_5GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(pselect_network->Configuration.DSConfig, NL80211_BAND_5GHZ);
|
||||
|
||||
notify_channel = ieee80211_get_channel(wiphy, freq);
|
||||
pselect_bss = cfg80211_get_bss(wiphy, NULL/*notify_channel*/,
|
||||
@@ -475,9 +475,9 @@
|
||||
|
||||
channel = pnetwork->network.Configuration.DSConfig;
|
||||
if (channel <= RTW_CH_MAX_2G_CHANNEL)
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
|
||||
else
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_5GHZ);
|
||||
|
||||
notify_channel = ieee80211_get_channel(wiphy, freq);
|
||||
|
||||
@@ -617,9 +617,9 @@
|
||||
return _FALSE;
|
||||
|
||||
if (pnetwork->Configuration.DSConfig <= RTW_CH_MAX_2G_CHANNEL)
|
||||
- freq = rtw_ieee80211_channel_to_frequency(pnetwork->Configuration.DSConfig, IEEE80211_BAND_2GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(pnetwork->Configuration.DSConfig, NL80211_BAND_2GHZ);
|
||||
else
|
||||
- freq = rtw_ieee80211_channel_to_frequency(pnetwork->Configuration.DSConfig, IEEE80211_BAND_5GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(pnetwork->Configuration.DSConfig, NL80211_BAND_5GHZ);
|
||||
|
||||
notify_channel = ieee80211_get_channel(padapter->rtw_wdev->wiphy, freq);
|
||||
bss = cfg80211_get_bss(padapter->rtw_wdev->wiphy, notify_channel,
|
||||
@@ -771,9 +771,9 @@
|
||||
u16 channel = cur_network->network.Configuration.DSConfig;
|
||||
|
||||
if (channel <= RTW_CH_MAX_2G_CHANNEL)
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
|
||||
else
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_5GHZ);
|
||||
|
||||
notify_channel = ieee80211_get_channel(wiphy, freq);
|
||||
#endif
|
||||
@@ -3400,9 +3400,9 @@
|
||||
#else /* defined(RTW_USE_CFG80211_STA_EVENT) */
|
||||
channel = pmlmeext->cur_channel;
|
||||
if (channel <= RTW_CH_MAX_2G_CHANNEL)
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
|
||||
else
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_5GHZ);
|
||||
|
||||
#ifdef COMPAT_KERNEL_RELEASE
|
||||
rtw_cfg80211_rx_mgmt(padapter, freq, 0, pmgmt_frame, frame_len, GFP_ATOMIC);
|
||||
@@ -3445,9 +3445,9 @@
|
||||
#else /* defined(RTW_USE_CFG80211_STA_EVENT) */
|
||||
channel = pmlmeext->cur_channel;
|
||||
if (channel <= RTW_CH_MAX_2G_CHANNEL)
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
|
||||
else
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_5GHZ);
|
||||
|
||||
pmgmt_frame = mgmt_buf;
|
||||
pwlanhdr = (struct rtw_ieee80211_hdr *)pmgmt_frame;
|
||||
@@ -4257,9 +4257,9 @@
|
||||
|
||||
indicate:
|
||||
if (channel <= RTW_CH_MAX_2G_CHANNEL)
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
|
||||
else
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_5GHZ);
|
||||
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE)
|
||||
rtw_cfg80211_rx_mgmt(padapter, freq, 0, pmgmt_frame, frame_len, GFP_ATOMIC);
|
||||
@@ -4297,9 +4297,9 @@
|
||||
|
||||
indicate:
|
||||
if (channel <= RTW_CH_MAX_2G_CHANNEL)
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
|
||||
else
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_5GHZ);
|
||||
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE)
|
||||
rtw_cfg80211_rx_mgmt(padapter, freq, 0, pmgmt_frame, frame_len, GFP_ATOMIC);
|
||||
@@ -4327,9 +4327,9 @@
|
||||
DBG_871X("RTW_Rx:category(%u), action(%u)\n", category, action);
|
||||
|
||||
if (channel <= RTW_CH_MAX_2G_CHANNEL)
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
|
||||
else
|
||||
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_5GHZ);
|
||||
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_5GHZ);
|
||||
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE)
|
||||
rtw_cfg80211_rx_mgmt(adapter, freq, 0, frame, frame_len, GFP_ATOMIC);
|
||||
@@ -5718,7 +5718,7 @@
|
||||
|
||||
}
|
||||
|
||||
-static void rtw_cfg80211_init_ht_capab(struct ieee80211_sta_ht_cap *ht_cap, enum ieee80211_band band, u8 rf_type)
|
||||
+static void rtw_cfg80211_init_ht_capab(struct ieee80211_sta_ht_cap *ht_cap, enum nl80211_band band, u8 rf_type)
|
||||
{
|
||||
|
||||
#define MAX_BIT_RATE_40MHZ_MCS15 300 /* Mbps */
|
||||
@@ -5742,7 +5742,7 @@
|
||||
ht_cap->mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED;
|
||||
|
||||
/*
|
||||
- *hw->wiphy->bands[IEEE80211_BAND_2GHZ]
|
||||
+ *hw->wiphy->bands[NL80211_BAND_2GHZ]
|
||||
*base on ant_num
|
||||
*rx_mask: RX mask
|
||||
*if rx_ant =1 rx_mask[0]=0xff;==>MCS0-MCS7
|
||||
@@ -5787,16 +5787,16 @@
|
||||
|
||||
/* if (padapter->registrypriv.wireless_mode & WIRELESS_11G) */
|
||||
{
|
||||
- bands = wiphy->bands[IEEE80211_BAND_2GHZ];
|
||||
+ bands = wiphy->bands[NL80211_BAND_2GHZ];
|
||||
if(bands)
|
||||
- rtw_cfg80211_init_ht_capab(&bands->ht_cap, IEEE80211_BAND_2GHZ, rf_type);
|
||||
+ rtw_cfg80211_init_ht_capab(&bands->ht_cap, NL80211_BAND_2GHZ, rf_type);
|
||||
}
|
||||
|
||||
/* if (padapter->registrypriv.wireless_mode & WIRELESS_11A) */
|
||||
{
|
||||
- bands = wiphy->bands[IEEE80211_BAND_5GHZ];
|
||||
+ bands = wiphy->bands[NL80211_BAND_5GHZ];
|
||||
if(bands)
|
||||
- rtw_cfg80211_init_ht_capab(&bands->ht_cap, IEEE80211_BAND_5GHZ, rf_type);
|
||||
+ rtw_cfg80211_init_ht_capab(&bands->ht_cap, NL80211_BAND_5GHZ, rf_type);
|
||||
}
|
||||
|
||||
/* init regulary domain */
|
||||
@@ -5874,9 +5874,9 @@
|
||||
wiphy->n_cipher_suites = ARRAY_SIZE(rtw_cipher_suites);
|
||||
|
||||
/* if (padapter->registrypriv.wireless_mode & WIRELESS_11G) */
|
||||
- wiphy->bands[IEEE80211_BAND_2GHZ] = rtw_spt_band_alloc(IEEE80211_BAND_2GHZ);
|
||||
+ wiphy->bands[NL80211_BAND_2GHZ] = rtw_spt_band_alloc(NL80211_BAND_2GHZ);
|
||||
/* if (padapter->registrypriv.wireless_mode & WIRELESS_11A) */
|
||||
- wiphy->bands[IEEE80211_BAND_5GHZ] = rtw_spt_band_alloc(IEEE80211_BAND_5GHZ);
|
||||
+ wiphy->bands[NL80211_BAND_5GHZ] = rtw_spt_band_alloc(NL80211_BAND_5GHZ);
|
||||
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38) && LINUX_VERSION_CODE < KERNEL_VERSION(3,0,0))
|
||||
wiphy->flags |= WIPHY_FLAG_SUPPORTS_SEPARATE_DEFAULT_KEYS;
|
||||
@@ -6071,8 +6071,8 @@
|
||||
if (!wdev)
|
||||
return;
|
||||
|
||||
- rtw_spt_band_free(wdev->wiphy->bands[IEEE80211_BAND_2GHZ]);
|
||||
- rtw_spt_band_free(wdev->wiphy->bands[IEEE80211_BAND_5GHZ]);
|
||||
+ rtw_spt_band_free(wdev->wiphy->bands[NL80211_BAND_2GHZ]);
|
||||
+ rtw_spt_band_free(wdev->wiphy->bands[NL80211_BAND_5GHZ]);
|
||||
|
||||
wiphy_free(wdev->wiphy);
|
||||
|
@ -1,18 +0,0 @@
|
||||
diff -Naur a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c
|
||||
--- a/os_dep/linux/ioctl_cfg80211.c 2016-09-11 01:54:30.184844740 +0100
|
||||
+++ b/os_dep/linux/ioctl_cfg80211.c 2016-09-11 01:55:58.426842518 +0100
|
||||
@@ -1891,7 +1891,14 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0)
|
||||
+ struct cfg80211_scan_info info = {
|
||||
+ .aborted = aborted
|
||||
+ };
|
||||
+ cfg80211_scan_done(pwdev_priv->scan_request, &info);
|
||||
+#else
|
||||
cfg80211_scan_done(pwdev_priv->scan_request, aborted);
|
||||
+#endif
|
||||
}
|
||||
|
||||
pwdev_priv->scan_request = NULL;
|
@ -0,0 +1,27 @@
|
||||
From 14eb40c9bcbb68044361334d5f95a4f63ebc8775 Mon Sep 17 00:00:00 2001
|
||||
From: MilhouseVH <milhouseVH.github@nmacleod.com>
|
||||
Date: Mon, 13 Mar 2017 19:47:38 +0000
|
||||
Subject: [PATCH] RTL8812AU: Fix build for API changes in kernel 4.11
|
||||
|
||||
---
|
||||
include/osdep_service.h | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/include/osdep_service.h b/include/osdep_service.h
|
||||
index 82e27c5..d866551 100644
|
||||
--- a/include/osdep_service.h
|
||||
+++ b/include/osdep_service.h
|
||||
@@ -20,6 +20,10 @@
|
||||
#ifndef __OSDEP_SERVICE_H_
|
||||
#define __OSDEP_SERVICE_H_
|
||||
|
||||
+#include <linux/version.h>
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
|
||||
+#include <linux/sched/signal.h>
|
||||
+#endif
|
||||
|
||||
#define _FAIL 0
|
||||
#define _SUCCESS 1
|
||||
--
|
||||
2.7.4
|
||||
|
@ -0,0 +1,68 @@
|
||||
From 7e8dddb7a545bc5ba74336ef2aafed1c0b4ceee1 Mon Sep 17 00:00:00 2001
|
||||
From: MilhouseVH <milhouseVH.github@nmacleod.com>
|
||||
Date: Mon, 13 Mar 2017 20:48:44 +0000
|
||||
Subject: [PATCH 1/2] bcm_sta: Fix build for API changes in kernel 4.11
|
||||
|
||||
---
|
||||
x86-64/src/wl/sys/wl_cfg80211_hybrid.c | 4 ++++
|
||||
x86-64/src/wl/sys/wl_linux.c | 4 ++++
|
||||
2 files changed, 8 insertions(+)
|
||||
|
||||
diff --git a/x86-64/src/wl/sys/wl_cfg80211_hybrid.c b/x86-64/src/wl/sys/wl_cfg80211_hybrid.c
|
||||
index 7b606e0..76ef208 100644
|
||||
--- a/x86-64/src/wl/sys/wl_cfg80211_hybrid.c
|
||||
+++ b/x86-64/src/wl/sys/wl_cfg80211_hybrid.c
|
||||
@@ -26,6 +26,10 @@
|
||||
#include <linuxver.h>
|
||||
#include <osl.h>
|
||||
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
|
||||
+#include <linux/sched/signal.h>
|
||||
+#endif
|
||||
+
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/kthread.h>
|
||||
#include <linux/netdevice.h>
|
||||
diff --git a/x86-64/src/wl/sys/wl_linux.c b/x86-64/src/wl/sys/wl_linux.c
|
||||
index 0d05100..dca7c71 100644
|
||||
--- a/x86-64/src/wl/sys/wl_linux.c
|
||||
+++ b/x86-64/src/wl/sys/wl_linux.c
|
||||
@@ -26,6 +26,10 @@
|
||||
#include <typedefs.h>
|
||||
#include <linuxver.h>
|
||||
#include <osl.h>
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
|
||||
+#include <linux/sched/signal.h>
|
||||
+#endif
|
||||
+
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 14)
|
||||
#include <linux/module.h>
|
||||
#endif
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
||||
From 1d066a57a682af0ac42b8d1c65bf7bd1984a54ca Mon Sep 17 00:00:00 2001
|
||||
From: MilhouseVH <milhouseVH.github@nmacleod.com>
|
||||
Date: Mon, 13 Mar 2017 20:49:01 +0000
|
||||
Subject: [PATCH 2/2] bcm_sta: Remove usage of net_device last_rx member
|
||||
|
||||
---
|
||||
x86-64/src/wl/sys/wl_linux.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/x86-64/src/wl/sys/wl_linux.c b/x86-64/src/wl/sys/wl_linux.c
|
||||
index dca7c71..f3be019 100644
|
||||
--- a/x86-64/src/wl/sys/wl_linux.c
|
||||
+++ b/x86-64/src/wl/sys/wl_linux.c
|
||||
@@ -2919,7 +2919,6 @@ wl_monitor(wl_info_t *wl, wl_rxsts_t *rxsts, void *p)
|
||||
if (skb == NULL) return;
|
||||
|
||||
skb->dev = wl->monitor_dev;
|
||||
- skb->dev->last_rx = jiffies;
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22)
|
||||
skb_reset_mac_header(skb);
|
||||
#else
|
||||
--
|
||||
2.7.4
|
||||
|
@ -2,138 +2,138 @@
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# V4L/DVB menu
|
||||
#
|
||||
# CONFIG_SOC_EXYNOS4212 is not set
|
||||
# CONFIG_PWM_OMAP_DMTIMER is not set
|
||||
# CONFIG_ARCH_OMAP3 is not set
|
||||
# CONFIG_BROKEN is not set
|
||||
# CONFIG_ARM_DMA_USE_IOMMU is not set
|
||||
CONFIG_HDMI=y
|
||||
CONFIG_LEDS_CLASS_FLASH=y
|
||||
CONFIG_PCI_MSI=y
|
||||
# CONFIG_MTK_IOMMU_V1 is not set
|
||||
# CONFIG_RPMSG is not set
|
||||
# CONFIG_PLAT_S3C24XX is not set
|
||||
# CONFIG_FB_VIA is not set
|
||||
# CONFIG_SND_FM801 is not set
|
||||
# CONFIG_I2C_GPIO is not set
|
||||
CONFIG_I2C=y
|
||||
CONFIG_HAVE_CLK=y
|
||||
# CONFIG_REGULATOR is not set
|
||||
CONFIG_PM=y
|
||||
# CONFIG_ARCH_MEDIATEK is not set
|
||||
# CONFIG_ISA is not set
|
||||
CONFIG_DEBUG_FS=y
|
||||
CONFIG_MODULES=y
|
||||
# CONFIG_SPI is not set
|
||||
# CONFIG_MFD_WL1273_CORE is not set
|
||||
CONFIG_SND_PCM=y
|
||||
CONFIG_MMU=y
|
||||
CONFIG_MFD_CORE=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_SYSFS=y
|
||||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_RATIONAL=y
|
||||
CONFIG_CRC32=y
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_ARCH_SUNXI is not set
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
# CONFIG_PLAT_S5P is not set
|
||||
# CONFIG_OMAP_DM_TIMER is not set
|
||||
# CONFIG_MFD_TIMBERDALE is not set
|
||||
# CONFIG_SND_ISA is not set
|
||||
CONFIG_ISA_DMA_API=y
|
||||
CONFIG_NEW_LEDS=y
|
||||
CONFIG_PCI=y
|
||||
# CONFIG_ARCH_OMAP2PLUS is not set
|
||||
# CONFIG_VIDEO_V4L1 is not set
|
||||
CONFIG_FW_LOADER=y
|
||||
CONFIG_DMA_ENGINE=y
|
||||
# CONFIG_GENERIC_PHY is not set
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_NET=y
|
||||
# CONFIG_ARCH_EXYNOS is not set
|
||||
# CONFIG_SOC_AM43XX is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_SPARC32 is not set
|
||||
# CONFIG_TI_ST is not set
|
||||
# CONFIG_STA2X11 is not set
|
||||
# CONFIG_MTD is not set
|
||||
CONFIG_USB_ACM=m
|
||||
# CONFIG_ARCH_STM32 is not set
|
||||
CONFIG_SND=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PNP=y
|
||||
# CONFIG_SRAM is not set
|
||||
# CONFIG_SG_SPLIT is not set
|
||||
# CONFIG_SONY_LAPTOP is not set
|
||||
# CONFIG_ARCH_S5PV210 is not set
|
||||
CONFIG_COMMON_CLK=y
|
||||
# CONFIG_SOC_IMX27 is not set
|
||||
CONFIG_INPUT=y
|
||||
# CONFIG_OF is not set
|
||||
CONFIG_FONT_8x16=y
|
||||
# CONFIG_SOC_EXYNOS5250 is not set
|
||||
CONFIG_ACPI=y
|
||||
# CONFIG_ARCH_MMP is not set
|
||||
CONFIG_FIREWIRE=m
|
||||
# CONFIG_PLAT_M32700UT is not set
|
||||
CONFIG_DMA_SHARED_BUFFER=y
|
||||
# CONFIG_PPC_MPC512x is not set
|
||||
CONFIG_X86=y
|
||||
# CONFIG_SND_MIRO is not set
|
||||
# CONFIG_OMAP_IOMMU is not set
|
||||
# CONFIG_ARCH_MULTIPLATFORM is not set
|
||||
CONFIG_VIRT_TO_BUS=y
|
||||
# CONFIG_ARCH_S3C64XX is not set
|
||||
# CONFIG_ARCH_SHMOBILE is not set
|
||||
# CONFIG_PXA27x is not set
|
||||
# CONFIG_MFD_SI476X_CORE is not set
|
||||
# CONFIG_ARM64 is not set
|
||||
CONFIG_GPIOLIB=y
|
||||
# CONFIG_FB_OMAP2 is not set
|
||||
# CONFIG_GENERIC_ALLOCATOR is not set
|
||||
# CONFIG_OMAP2_VRFB is not set
|
||||
CONFIG_BITREVERSE=y
|
||||
# CONFIG_BLACKFIN is not set
|
||||
# CONFIG_REGMAP_MMIO is not set
|
||||
CONFIG_RFKILL=m
|
||||
CONFIG_FB_CFB_FILLRECT=y
|
||||
CONFIG_TTY=y
|
||||
# CONFIG_SPI_MASTER is not set
|
||||
CONFIG_LEDS_CLASS=y
|
||||
# CONFIG_MTK_IOMMU is not set
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
# CONFIG_SOC_IMX27 is not set
|
||||
# CONFIG_METAG is not set
|
||||
CONFIG_REGMAP=y
|
||||
# CONFIG_ARCH_MESON is not set
|
||||
# CONFIG_M32R is not set
|
||||
CONFIG_SND_SOC=y
|
||||
# CONFIG_ARCH_OMAP4 is not set
|
||||
CONFIG_HAS_DMA=y
|
||||
# CONFIG_MFD_SYSCON is not set
|
||||
CONFIG_INPUT_EVDEV=y
|
||||
# CONFIG_ARCH_AT91 is not set
|
||||
# CONFIG_SPARC64 is not set
|
||||
# CONFIG_ARCH_RENESAS is not set
|
||||
# CONFIG_ALPHA is not set
|
||||
CONFIG_FB_CFB_COPYAREA=y
|
||||
# CONFIG_ARCH_DAVINCI is not set
|
||||
# CONFIG_ARCH_MXC is not set
|
||||
CONFIG_FB=y
|
||||
# CONFIG_ARCH_DAVINCI_DM365 is not set
|
||||
# CONFIG_SOC_EXYNOS4412 is not set
|
||||
# CONFIG_ARCH_STI is not set
|
||||
CONFIG_I2C_MUX=m
|
||||
CONFIG_SYSFS=y
|
||||
# CONFIG_SND_MIRO is not set
|
||||
# CONFIG_FB_VIA is not set
|
||||
# CONFIG_SOC_AM43XX is not set
|
||||
# CONFIG_MFD_TIMBERDALE is not set
|
||||
# CONFIG_SND_SOC_SI476X is not set
|
||||
# CONFIG_ARCH_RENESAS is not set
|
||||
# CONFIG_ARCH_SHMOBILE is not set
|
||||
CONFIG_DMA_SHARED_BUFFER=y
|
||||
CONFIG_SND_PCM=y
|
||||
CONFIG_NEW_LEDS=y
|
||||
CONFIG_PM=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_TTY=y
|
||||
CONFIG_MMC=y
|
||||
# CONFIG_GENERIC_ALLOCATOR is not set
|
||||
# CONFIG_PPC_MPC512x is not set
|
||||
# CONFIG_SOC_EXYNOS4212 is not set
|
||||
# CONFIG_SPARC64 is not set
|
||||
CONFIG_FONT_8x16=y
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_RFKILL=m
|
||||
# CONFIG_SRAM is not set
|
||||
# CONFIG_MFD_WL1273_CORE is not set
|
||||
CONFIG_MODULES=y
|
||||
# CONFIG_VIDEO_V4L1 is not set
|
||||
CONFIG_FIREWIRE=m
|
||||
# CONFIG_ARCH_BCM2835 is not set
|
||||
# CONFIG_SND_FM801 is not set
|
||||
# CONFIG_ARCH_OMAP3 is not set
|
||||
# CONFIG_FB_OMAP2 is not set
|
||||
# CONFIG_ARCH_EXYNOS is not set
|
||||
# CONFIG_ISA is not set
|
||||
# CONFIG_ARCH_S5PV210 is not set
|
||||
# CONFIG_SG_SPLIT is not set
|
||||
CONFIG_MFD_CORE=y
|
||||
# CONFIG_PLAT_S5P is not set
|
||||
CONFIG_USB_ACM=m
|
||||
CONFIG_ISA_DMA_API=y
|
||||
# CONFIG_REGULATOR is not set
|
||||
CONFIG_NET=y
|
||||
CONFIG_REGMAP_I2C=y
|
||||
CONFIG_I2C_ALGOBIT=y
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_PWM_OMAP_DMTIMER is not set
|
||||
# CONFIG_ARCH_OMAP2 is not set
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
# CONFIG_MIPS is not set
|
||||
CONFIG_EFI=y
|
||||
CONFIG_HDMI=y
|
||||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
||||
# CONFIG_SONY_LAPTOP is not set
|
||||
CONFIG_PCI_MSI=y
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_TI_ST is not set
|
||||
# CONFIG_ARM64 is not set
|
||||
CONFIG_DEBUG_FS=y
|
||||
# CONFIG_I2C_GPIO is not set
|
||||
CONFIG_HAVE_CLK=y
|
||||
CONFIG_PINCTRL=y
|
||||
# CONFIG_ARCH_STI is not set
|
||||
CONFIG_LEDS_CLASS_FLASH=y
|
||||
# CONFIG_ARCH_MMP is not set
|
||||
# CONFIG_ARCH_MEDIATEK is not set
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_RATIONAL=y
|
||||
CONFIG_PNP=y
|
||||
CONFIG_PCI=y
|
||||
# CONFIG_OMAP2_VRFB is not set
|
||||
# CONFIG_ARCH_DAVINCI is not set
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_FW_LOADER=y
|
||||
# CONFIG_STA2X11 is not set
|
||||
# CONFIG_SOC_EXYNOS4412 is not set
|
||||
# CONFIG_PXA27x is not set
|
||||
# CONFIG_M32R is not set
|
||||
# CONFIG_ALPHA is not set
|
||||
# CONFIG_BROKEN is not set
|
||||
# CONFIG_REGMAP_MMIO is not set
|
||||
# CONFIG_MTD is not set
|
||||
# CONFIG_OMAP_DM_TIMER is not set
|
||||
# CONFIG_PLAT_M32700UT is not set
|
||||
# CONFIG_ARCH_OMAP2PLUS is not set
|
||||
CONFIG_SND_SOC=y
|
||||
CONFIG_VIRT_TO_BUS=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_COMMON_CLK=y
|
||||
# CONFIG_MFD_SYSCON is not set
|
||||
# CONFIG_MTK_IOMMU_V1 is not set
|
||||
CONFIG_INPUT=y
|
||||
# CONFIG_BCM2835_VCHIQ is not set
|
||||
# CONFIG_SOC_DRA7XX is not set
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_FB=y
|
||||
# CONFIG_ARM_DMA_USE_IOMMU is not set
|
||||
CONFIG_SND=y
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
# CONFIG_MFD_SI476X_CORE is not set
|
||||
# CONFIG_ARCH_OMAP4 is not set
|
||||
CONFIG_X86=y
|
||||
# CONFIG_OMAP_IOMMU is not set
|
||||
# CONFIG_ARCH_SUNXI is not set
|
||||
CONFIG_FB_CFB_FILLRECT=y
|
||||
# CONFIG_SPARC32 is not set
|
||||
# CONFIG_ARCH_MESON is not set
|
||||
CONFIG_MMU=y
|
||||
CONFIG_BITREVERSE=y
|
||||
# CONFIG_ARCH_MXC is not set
|
||||
# CONFIG_SND_ISA is not set
|
||||
# CONFIG_RPMSG is not set
|
||||
# CONFIG_OF is not set
|
||||
# CONFIG_SOC_EXYNOS5250 is not set
|
||||
CONFIG_INPUT_EVDEV=y
|
||||
# CONFIG_PLAT_S3C24XX is not set
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_I2C_MUX=m
|
||||
# CONFIG_ARCH_S3C64XX is not set
|
||||
# CONFIG_ARCH_MULTIPLATFORM is not set
|
||||
CONFIG_INET=y
|
||||
CONFIG_FB_CFB_COPYAREA=y
|
||||
# CONFIG_ARCH_AT91 is not set
|
||||
# CONFIG_ARM is not set
|
||||
CONFIG_DMA_ENGINE=y
|
||||
# CONFIG_BLACKFIN is not set
|
||||
# CONFIG_MIPS is not set
|
||||
CONFIG_LEDS_CLASS=y
|
||||
# CONFIG_SPI is not set
|
||||
# CONFIG_ARCH_DAVINCI_DM365 is not set
|
||||
CONFIG_I2C=y
|
||||
# CONFIG_GENERIC_PHY is not set
|
||||
# CONFIG_MTK_IOMMU is not set
|
||||
CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_VIDEO_KERNEL_VERSION is not set
|
||||
CONFIG_MEDIA_SUPPORT=m
|
||||
|
||||
@ -153,7 +153,6 @@ CONFIG_VIDEO_V4L2=m
|
||||
# CONFIG_VIDEO_ADV_DEBUG is not set
|
||||
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
|
||||
CONFIG_VIDEO_TUNER=m
|
||||
CONFIG_V4L2_FWNODE=m
|
||||
CONFIG_VIDEOBUF_GEN=m
|
||||
CONFIG_VIDEOBUF_DMA_SG=m
|
||||
CONFIG_VIDEOBUF_VMALLOC=m
|
||||
@ -206,7 +205,7 @@ CONFIG_RC_LOOPBACK=m
|
||||
CONFIG_IR_GPIO_CIR=m
|
||||
CONFIG_IR_SERIAL=m
|
||||
CONFIG_IR_SERIAL_TRANSMITTER=y
|
||||
# CONFIG_IR_SIR is not set
|
||||
CONFIG_IR_SIR=m
|
||||
CONFIG_MEDIA_USB_SUPPORT=y
|
||||
|
||||
#
|
||||
@ -295,7 +294,6 @@ CONFIG_DVB_USB_TBS5881=m
|
||||
CONFIG_DVB_USB_TBS5520=m
|
||||
CONFIG_DVB_USB_TBS5927=m
|
||||
CONFIG_DVB_USB_TBS5520SE=m
|
||||
CONFIG_DVB_USB_CYCITV=m
|
||||
CONFIG_DVB_USB_V2=m
|
||||
CONFIG_DVB_USB_AF9015=m
|
||||
CONFIG_DVB_USB_AF9035=m
|
||||
@ -467,7 +465,6 @@ CONFIG_VIDEO_CX25840=m
|
||||
#
|
||||
# Camera sensor devices
|
||||
#
|
||||
CONFIG_VIDEO_OV2640=m
|
||||
CONFIG_VIDEO_OV7640=m
|
||||
CONFIG_VIDEO_MT9V011=m
|
||||
|
||||
@ -573,7 +570,6 @@ CONFIG_DVB_CX24120=m
|
||||
CONFIG_DVB_SI21XX=m
|
||||
CONFIG_DVB_TS2020=m
|
||||
CONFIG_DVB_DS3000=m
|
||||
CONFIG_DVB_DS3K=m
|
||||
CONFIG_DVB_MB86A16=m
|
||||
CONFIG_DVB_TDA10071=m
|
||||
|
||||
@ -621,7 +617,6 @@ CONFIG_DVB_OR51132=m
|
||||
CONFIG_DVB_BCM3510=m
|
||||
CONFIG_DVB_LGDT330X=m
|
||||
CONFIG_DVB_LGDT3305=m
|
||||
CONFIG_DVB_LGDT3306A=m
|
||||
CONFIG_DVB_LG2160=m
|
||||
CONFIG_DVB_S5H1409=m
|
||||
CONFIG_DVB_AU8522=m
|
||||
|
@ -2,138 +2,138 @@
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# V4L/DVB menu
|
||||
#
|
||||
# CONFIG_SOC_EXYNOS4212 is not set
|
||||
# CONFIG_PWM_OMAP_DMTIMER is not set
|
||||
# CONFIG_ARCH_OMAP3 is not set
|
||||
# CONFIG_BROKEN is not set
|
||||
# CONFIG_ARM_DMA_USE_IOMMU is not set
|
||||
CONFIG_HDMI=y
|
||||
CONFIG_LEDS_CLASS_FLASH=y
|
||||
CONFIG_PCI_MSI=y
|
||||
# CONFIG_MTK_IOMMU_V1 is not set
|
||||
# CONFIG_RPMSG is not set
|
||||
# CONFIG_PLAT_S3C24XX is not set
|
||||
# CONFIG_FB_VIA is not set
|
||||
# CONFIG_SND_FM801 is not set
|
||||
# CONFIG_I2C_GPIO is not set
|
||||
CONFIG_I2C=y
|
||||
CONFIG_HAVE_CLK=y
|
||||
# CONFIG_REGULATOR is not set
|
||||
CONFIG_PM=y
|
||||
# CONFIG_ARCH_MEDIATEK is not set
|
||||
# CONFIG_ISA is not set
|
||||
CONFIG_DEBUG_FS=y
|
||||
CONFIG_MODULES=y
|
||||
# CONFIG_SPI is not set
|
||||
# CONFIG_MFD_WL1273_CORE is not set
|
||||
CONFIG_SND_PCM=y
|
||||
CONFIG_MMU=y
|
||||
CONFIG_MFD_CORE=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_SYSFS=y
|
||||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_RATIONAL=y
|
||||
CONFIG_CRC32=y
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_ARCH_SUNXI is not set
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
# CONFIG_PLAT_S5P is not set
|
||||
# CONFIG_OMAP_DM_TIMER is not set
|
||||
# CONFIG_MFD_TIMBERDALE is not set
|
||||
# CONFIG_SND_ISA is not set
|
||||
CONFIG_ISA_DMA_API=y
|
||||
CONFIG_NEW_LEDS=y
|
||||
CONFIG_PCI=y
|
||||
# CONFIG_ARCH_OMAP2PLUS is not set
|
||||
# CONFIG_VIDEO_V4L1 is not set
|
||||
CONFIG_FW_LOADER=y
|
||||
CONFIG_DMA_ENGINE=y
|
||||
# CONFIG_GENERIC_PHY is not set
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_NET=y
|
||||
# CONFIG_ARCH_EXYNOS is not set
|
||||
# CONFIG_SOC_AM43XX is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_SPARC32 is not set
|
||||
# CONFIG_TI_ST is not set
|
||||
# CONFIG_STA2X11 is not set
|
||||
# CONFIG_MTD is not set
|
||||
CONFIG_USB_ACM=m
|
||||
# CONFIG_ARCH_STM32 is not set
|
||||
CONFIG_SND=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PNP=y
|
||||
# CONFIG_SRAM is not set
|
||||
# CONFIG_SG_SPLIT is not set
|
||||
# CONFIG_SONY_LAPTOP is not set
|
||||
# CONFIG_ARCH_S5PV210 is not set
|
||||
CONFIG_COMMON_CLK=y
|
||||
# CONFIG_SOC_IMX27 is not set
|
||||
CONFIG_INPUT=y
|
||||
# CONFIG_OF is not set
|
||||
CONFIG_FONT_8x16=y
|
||||
# CONFIG_SOC_EXYNOS5250 is not set
|
||||
CONFIG_ACPI=y
|
||||
# CONFIG_ARCH_MMP is not set
|
||||
CONFIG_FIREWIRE=m
|
||||
# CONFIG_PLAT_M32700UT is not set
|
||||
CONFIG_DMA_SHARED_BUFFER=y
|
||||
# CONFIG_PPC_MPC512x is not set
|
||||
CONFIG_X86=y
|
||||
# CONFIG_SND_MIRO is not set
|
||||
# CONFIG_OMAP_IOMMU is not set
|
||||
# CONFIG_ARCH_MULTIPLATFORM is not set
|
||||
CONFIG_VIRT_TO_BUS=y
|
||||
# CONFIG_ARCH_S3C64XX is not set
|
||||
# CONFIG_ARCH_SHMOBILE is not set
|
||||
# CONFIG_PXA27x is not set
|
||||
# CONFIG_MFD_SI476X_CORE is not set
|
||||
# CONFIG_ARM64 is not set
|
||||
CONFIG_GPIOLIB=y
|
||||
# CONFIG_FB_OMAP2 is not set
|
||||
# CONFIG_GENERIC_ALLOCATOR is not set
|
||||
# CONFIG_OMAP2_VRFB is not set
|
||||
CONFIG_BITREVERSE=y
|
||||
# CONFIG_BLACKFIN is not set
|
||||
# CONFIG_REGMAP_MMIO is not set
|
||||
CONFIG_RFKILL=m
|
||||
CONFIG_FB_CFB_FILLRECT=y
|
||||
CONFIG_TTY=y
|
||||
# CONFIG_SPI_MASTER is not set
|
||||
CONFIG_LEDS_CLASS=y
|
||||
# CONFIG_MTK_IOMMU is not set
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
# CONFIG_SOC_IMX27 is not set
|
||||
# CONFIG_METAG is not set
|
||||
CONFIG_REGMAP=y
|
||||
# CONFIG_ARCH_MESON is not set
|
||||
# CONFIG_M32R is not set
|
||||
CONFIG_SND_SOC=y
|
||||
# CONFIG_ARCH_OMAP4 is not set
|
||||
CONFIG_HAS_DMA=y
|
||||
# CONFIG_MFD_SYSCON is not set
|
||||
CONFIG_INPUT_EVDEV=y
|
||||
# CONFIG_ARCH_AT91 is not set
|
||||
# CONFIG_SPARC64 is not set
|
||||
# CONFIG_ARCH_RENESAS is not set
|
||||
# CONFIG_ALPHA is not set
|
||||
CONFIG_FB_CFB_COPYAREA=y
|
||||
# CONFIG_ARCH_DAVINCI is not set
|
||||
# CONFIG_ARCH_MXC is not set
|
||||
CONFIG_FB=y
|
||||
# CONFIG_ARCH_DAVINCI_DM365 is not set
|
||||
# CONFIG_SOC_EXYNOS4412 is not set
|
||||
# CONFIG_ARCH_STI is not set
|
||||
CONFIG_I2C_MUX=m
|
||||
CONFIG_SYSFS=y
|
||||
# CONFIG_SND_MIRO is not set
|
||||
# CONFIG_FB_VIA is not set
|
||||
# CONFIG_SOC_AM43XX is not set
|
||||
# CONFIG_MFD_TIMBERDALE is not set
|
||||
# CONFIG_SND_SOC_SI476X is not set
|
||||
# CONFIG_ARCH_RENESAS is not set
|
||||
# CONFIG_ARCH_SHMOBILE is not set
|
||||
CONFIG_DMA_SHARED_BUFFER=y
|
||||
CONFIG_SND_PCM=y
|
||||
CONFIG_NEW_LEDS=y
|
||||
CONFIG_PM=y
|
||||
CONFIG_HAS_DMA=y
|
||||
CONFIG_TTY=y
|
||||
CONFIG_MMC=y
|
||||
# CONFIG_GENERIC_ALLOCATOR is not set
|
||||
# CONFIG_PPC_MPC512x is not set
|
||||
# CONFIG_SOC_EXYNOS4212 is not set
|
||||
# CONFIG_SPARC64 is not set
|
||||
CONFIG_FONT_8x16=y
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_RFKILL=m
|
||||
# CONFIG_SRAM is not set
|
||||
# CONFIG_MFD_WL1273_CORE is not set
|
||||
CONFIG_MODULES=y
|
||||
# CONFIG_VIDEO_V4L1 is not set
|
||||
CONFIG_FIREWIRE=m
|
||||
# CONFIG_ARCH_BCM2835 is not set
|
||||
# CONFIG_SND_FM801 is not set
|
||||
# CONFIG_ARCH_OMAP3 is not set
|
||||
# CONFIG_FB_OMAP2 is not set
|
||||
# CONFIG_ARCH_EXYNOS is not set
|
||||
# CONFIG_ISA is not set
|
||||
# CONFIG_ARCH_S5PV210 is not set
|
||||
# CONFIG_SG_SPLIT is not set
|
||||
CONFIG_MFD_CORE=y
|
||||
# CONFIG_PLAT_S5P is not set
|
||||
CONFIG_USB_ACM=m
|
||||
CONFIG_ISA_DMA_API=y
|
||||
# CONFIG_REGULATOR is not set
|
||||
CONFIG_NET=y
|
||||
CONFIG_REGMAP_I2C=y
|
||||
CONFIG_I2C_ALGOBIT=y
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_PWM_OMAP_DMTIMER is not set
|
||||
# CONFIG_ARCH_OMAP2 is not set
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
# CONFIG_MIPS is not set
|
||||
CONFIG_EFI=y
|
||||
CONFIG_HDMI=y
|
||||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
||||
# CONFIG_SONY_LAPTOP is not set
|
||||
CONFIG_PCI_MSI=y
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_TI_ST is not set
|
||||
# CONFIG_ARM64 is not set
|
||||
CONFIG_DEBUG_FS=y
|
||||
# CONFIG_I2C_GPIO is not set
|
||||
CONFIG_HAVE_CLK=y
|
||||
CONFIG_PINCTRL=y
|
||||
# CONFIG_ARCH_STI is not set
|
||||
CONFIG_LEDS_CLASS_FLASH=y
|
||||
# CONFIG_ARCH_MMP is not set
|
||||
# CONFIG_ARCH_MEDIATEK is not set
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_RATIONAL=y
|
||||
CONFIG_PNP=y
|
||||
CONFIG_PCI=y
|
||||
# CONFIG_OMAP2_VRFB is not set
|
||||
# CONFIG_ARCH_DAVINCI is not set
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_FW_LOADER=y
|
||||
# CONFIG_STA2X11 is not set
|
||||
# CONFIG_SOC_EXYNOS4412 is not set
|
||||
# CONFIG_PXA27x is not set
|
||||
# CONFIG_M32R is not set
|
||||
# CONFIG_ALPHA is not set
|
||||
# CONFIG_BROKEN is not set
|
||||
# CONFIG_REGMAP_MMIO is not set
|
||||
# CONFIG_MTD is not set
|
||||
# CONFIG_OMAP_DM_TIMER is not set
|
||||
# CONFIG_PLAT_M32700UT is not set
|
||||
# CONFIG_ARCH_OMAP2PLUS is not set
|
||||
CONFIG_SND_SOC=y
|
||||
CONFIG_VIRT_TO_BUS=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_COMMON_CLK=y
|
||||
# CONFIG_MFD_SYSCON is not set
|
||||
# CONFIG_MTK_IOMMU_V1 is not set
|
||||
CONFIG_INPUT=y
|
||||
# CONFIG_BCM2835_VCHIQ is not set
|
||||
# CONFIG_SOC_DRA7XX is not set
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_FB=y
|
||||
# CONFIG_ARM_DMA_USE_IOMMU is not set
|
||||
CONFIG_SND=y
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
# CONFIG_MFD_SI476X_CORE is not set
|
||||
# CONFIG_ARCH_OMAP4 is not set
|
||||
CONFIG_X86=y
|
||||
# CONFIG_OMAP_IOMMU is not set
|
||||
# CONFIG_ARCH_SUNXI is not set
|
||||
CONFIG_FB_CFB_FILLRECT=y
|
||||
# CONFIG_SPARC32 is not set
|
||||
# CONFIG_ARCH_MESON is not set
|
||||
CONFIG_MMU=y
|
||||
CONFIG_BITREVERSE=y
|
||||
# CONFIG_ARCH_MXC is not set
|
||||
# CONFIG_SND_ISA is not set
|
||||
# CONFIG_RPMSG is not set
|
||||
# CONFIG_OF is not set
|
||||
# CONFIG_SOC_EXYNOS5250 is not set
|
||||
CONFIG_INPUT_EVDEV=y
|
||||
# CONFIG_PLAT_S3C24XX is not set
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_I2C_MUX=m
|
||||
# CONFIG_ARCH_S3C64XX is not set
|
||||
# CONFIG_ARCH_MULTIPLATFORM is not set
|
||||
CONFIG_INET=y
|
||||
CONFIG_FB_CFB_COPYAREA=y
|
||||
# CONFIG_ARCH_AT91 is not set
|
||||
# CONFIG_ARM is not set
|
||||
CONFIG_DMA_ENGINE=y
|
||||
# CONFIG_BLACKFIN is not set
|
||||
# CONFIG_MIPS is not set
|
||||
CONFIG_LEDS_CLASS=y
|
||||
# CONFIG_SPI is not set
|
||||
# CONFIG_ARCH_DAVINCI_DM365 is not set
|
||||
CONFIG_I2C=y
|
||||
# CONFIG_GENERIC_PHY is not set
|
||||
# CONFIG_MTK_IOMMU is not set
|
||||
CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_VIDEO_KERNEL_VERSION is not set
|
||||
CONFIG_MEDIA_SUPPORT=m
|
||||
|
||||
@ -153,7 +153,6 @@ CONFIG_VIDEO_V4L2=m
|
||||
# CONFIG_VIDEO_ADV_DEBUG is not set
|
||||
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
|
||||
CONFIG_VIDEO_TUNER=m
|
||||
CONFIG_V4L2_FWNODE=m
|
||||
CONFIG_VIDEOBUF_GEN=m
|
||||
CONFIG_VIDEOBUF_VMALLOC=m
|
||||
CONFIG_VIDEOBUF_DVB=m
|
||||
@ -203,7 +202,7 @@ CONFIG_RC_LOOPBACK=m
|
||||
CONFIG_IR_GPIO_CIR=m
|
||||
CONFIG_IR_SERIAL=m
|
||||
CONFIG_IR_SERIAL_TRANSMITTER=y
|
||||
# CONFIG_IR_SIR is not set
|
||||
CONFIG_IR_SIR=m
|
||||
CONFIG_MEDIA_USB_SUPPORT=y
|
||||
|
||||
#
|
||||
@ -292,7 +291,6 @@ CONFIG_DVB_USB_TBS5881=m
|
||||
CONFIG_DVB_USB_TBS5520=m
|
||||
CONFIG_DVB_USB_TBS5927=m
|
||||
CONFIG_DVB_USB_TBS5520SE=m
|
||||
CONFIG_DVB_USB_CYCITV=m
|
||||
CONFIG_DVB_USB_V2=m
|
||||
CONFIG_DVB_USB_AF9015=m
|
||||
CONFIG_DVB_USB_AF9035=m
|
||||
@ -390,7 +388,6 @@ CONFIG_VIDEO_CX25840=m
|
||||
#
|
||||
# Camera sensor devices
|
||||
#
|
||||
CONFIG_VIDEO_OV2640=m
|
||||
CONFIG_VIDEO_OV7640=m
|
||||
CONFIG_VIDEO_MT9V011=m
|
||||
|
||||
@ -487,7 +484,6 @@ CONFIG_DVB_CX24120=m
|
||||
CONFIG_DVB_SI21XX=m
|
||||
CONFIG_DVB_TS2020=m
|
||||
CONFIG_DVB_DS3000=m
|
||||
CONFIG_DVB_DS3K=m
|
||||
CONFIG_DVB_TDA10071=m
|
||||
|
||||
#
|
||||
@ -529,7 +525,6 @@ CONFIG_DVB_NXT200X=m
|
||||
CONFIG_DVB_BCM3510=m
|
||||
CONFIG_DVB_LGDT330X=m
|
||||
CONFIG_DVB_LGDT3305=m
|
||||
CONFIG_DVB_LGDT3306A=m
|
||||
CONFIG_DVB_LG2160=m
|
||||
CONFIG_DVB_S5H1409=m
|
||||
CONFIG_DVB_AU8522=m
|
||||
@ -590,7 +585,6 @@ CONFIG_MISC_DEVICES=y
|
||||
CONFIG_ALTERA_STAPL=m
|
||||
# CONFIG_STAGING is not set
|
||||
|
||||
# RPi DVB Hat
|
||||
CONFIG_DVB_CXD2820R=m
|
||||
CONFIG_DVB_CXD2841ER=m
|
||||
CONFIG_DVB_CXD2880=m
|
||||
|
@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="media_build"
|
||||
PKG_VERSION="2017-06-20-rpi"
|
||||
PKG_VERSION="2017-04-17-rpi"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/crazycat69/linux_media"
|
||||
|
@ -1,17 +1,17 @@
|
||||
--- a/backports/backports.txt
|
||||
+++ b/backports/backports.txt
|
||||
@@ -25,6 +25,14 @@ add api_version.patch
|
||||
@@ -25,6 +25,14 @@
|
||||
add pr_fmt.patch
|
||||
add debug.patch
|
||||
add drx39xxj.patch
|
||||
+add linux-202-lnbp22_patch_for_more_power_if_rotor.patch
|
||||
+add linux-203-stb0899_enable_low_symbol_rate.patch
|
||||
+add linux-052-XBOX_remote_support.patch
|
||||
+add linux-054-nuvoton_revert_d7b290a1056c5564eec8a1b169c6e84ff3.6.114c13.patch
|
||||
+add linux-057-Removed-MCE-customer-code-restriction-in-rc6-decode.patch
|
||||
+add linux-062-imon_pad_ignore_diagonal.patch
|
||||
+add linux-202-lnbp22_patch_for_more_power_if_rotor.patch
|
||||
+add linux-203-stb0899_enable_low_symbol_rate.patch
|
||||
+add linux-220-hauppauge_dualhd_second_tuner_support.patch
|
||||
+add linux-260-fix-for-kernel-4.11.patch
|
||||
+add cxd2880-support.patch
|
||||
|
||||
[4.10.255]
|
||||
add v4.10_sched_signal.patch
|
||||
|
||||
[4.8.255]
|
||||
add v4.8_user_pages_flag.patch
|
||||
|
@ -1,586 +0,0 @@
|
||||
From: Brad Love <hidden@email.co>
|
||||
Date: Sun, 16 Apr 2017 00:13:39 -0500
|
||||
Subject: Hauppauge DualHD DVB/ATSC second tuner support
|
||||
|
||||
diff --git a/drivers/media/dvb-frontends/lgdt3306a.c b/drivers/media/dvb-frontends/lgdt3306a.c
|
||||
index c9b1eb3..c50769f 100644
|
||||
--- a/drivers/media/dvb-frontends/lgdt3306a.c
|
||||
+++ b/drivers/media/dvb-frontends/lgdt3306a.c
|
||||
@@ -624,6 +624,9 @@ static int lgdt3306a_set_modulation(struct lgdt3306a_state *state,
|
||||
case QAM_256:
|
||||
ret = lgdt3306a_set_qam(state, QAM_256);
|
||||
break;
|
||||
+ case QAM_AUTO:
|
||||
+ ret = lgdt3306a_set_qam(state, QAM_64);
|
||||
+ break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -649,6 +652,7 @@ static int lgdt3306a_agc_setup(struct lgdt3306a_state *state,
|
||||
break;
|
||||
case QAM_64:
|
||||
case QAM_256:
|
||||
+ case QAM_AUTO:
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
@@ -703,6 +707,7 @@ static int lgdt3306a_spectral_inversion(struct lgdt3306a_state *state,
|
||||
break;
|
||||
case QAM_64:
|
||||
case QAM_256:
|
||||
+ case QAM_AUTO:
|
||||
/* Auto ok for QAM */
|
||||
ret = lgdt3306a_set_inversion_auto(state, 1);
|
||||
break;
|
||||
@@ -726,6 +731,7 @@ static int lgdt3306a_set_if(struct lgdt3306a_state *state,
|
||||
break;
|
||||
case QAM_64:
|
||||
case QAM_256:
|
||||
+ case QAM_AUTO:
|
||||
if_freq_khz = state->cfg->qam_if_khz;
|
||||
break;
|
||||
default:
|
||||
@@ -1644,6 +1650,9 @@ static int lgdt3306a_read_signal_strength(struct dvb_frontend *fe,
|
||||
case QAM_256:
|
||||
ref_snr = 2800; /* 28dB */
|
||||
break;
|
||||
+ case QAM_AUTO:
|
||||
+ ref_snr = 2200; /* 22dB */
|
||||
+ break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
diff --git a/drivers/media/usb/em28xx/em28xx-cards.c b/drivers/media/usb/em28xx/em28xx-cards.c
|
||||
index 146341a..d2e5b8d 100644
|
||||
--- a/drivers/media/usb/em28xx/em28xx-cards.c
|
||||
+++ b/drivers/media/usb/em28xx/em28xx-cards.c
|
||||
@@ -508,8 +508,10 @@ static struct em28xx_reg_seq plex_px_bcud[] = {
|
||||
};
|
||||
|
||||
/*
|
||||
- * 2040:0265 Hauppauge WinTV-dualHD DVB
|
||||
- * 2040:026d Hauppauge WinTV-dualHD ATSC/QAM
|
||||
+ * 2040:0265 Hauppauge WinTV-dualHD DVB ISOC
|
||||
+ * 2040:8265 Hauppauge WinTV-dualHD DVB Bulk
|
||||
+ * 2040:026d Hauppauge WinTV-dualHD ATSC/QAM ISOC
|
||||
+ * 2040:826d Hauppauge WinTV-dualHD ATSC/QAM Bulk
|
||||
* reg 0x80/0x84:
|
||||
* GPIO_0: Yellow LED tuner 1, 0=on, 1=off
|
||||
* GPIO_1: Green LED tuner 1, 0=on, 1=off
|
||||
@@ -2376,7 +2378,8 @@ struct em28xx_board em28xx_boards[] = {
|
||||
.has_dvb = 1,
|
||||
},
|
||||
/*
|
||||
- * 2040:0265 Hauppauge WinTV-dualHD (DVB version).
|
||||
+ * 2040:0265 Hauppauge WinTV-dualHD (DVB version) ISOC.
|
||||
+ * 2040:8265 Hauppauge WinTV-dualHD (DVB version) BULK.
|
||||
* Empia EM28274, 2x Silicon Labs Si2168, 2x Silicon Labs Si2157
|
||||
*/
|
||||
[EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_DVB] = {
|
||||
@@ -2387,11 +2390,13 @@ struct em28xx_board em28xx_boards[] = {
|
||||
.tuner_type = TUNER_ABSENT,
|
||||
.tuner_gpio = hauppauge_dualhd_dvb,
|
||||
.has_dvb = 1,
|
||||
+ .has_dual_ts = 1,
|
||||
.ir_codes = RC_MAP_HAUPPAUGE,
|
||||
.leds = hauppauge_dualhd_leds,
|
||||
},
|
||||
/*
|
||||
- * 2040:026d Hauppauge WinTV-dualHD (model 01595 - ATSC/QAM).
|
||||
+ * 2040:026d Hauppauge WinTV-dualHD (model 01595 - ATSC/QAM) ISOC.
|
||||
+ * 2040:826d Hauppauge WinTV-dualHD (model 01595 - ATSC/QAM) BULK.
|
||||
* Empia EM28274, 2x LG LGDT3306A, 2x Silicon Labs Si2157
|
||||
*/
|
||||
[EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_01595] = {
|
||||
@@ -2402,6 +2407,7 @@ struct em28xx_board em28xx_boards[] = {
|
||||
.tuner_type = TUNER_ABSENT,
|
||||
.tuner_gpio = hauppauge_dualhd_dvb,
|
||||
.has_dvb = 1,
|
||||
+ .has_dual_ts = 1,
|
||||
.ir_codes = RC_MAP_HAUPPAUGE,
|
||||
.leds = hauppauge_dualhd_leds,
|
||||
},
|
||||
@@ -2530,8 +2536,12 @@ struct usb_device_id em28xx_id_table[] = {
|
||||
.driver_info = EM2883_BOARD_HAUPPAUGE_WINTV_HVR_850 },
|
||||
{ USB_DEVICE(0x2040, 0x0265),
|
||||
.driver_info = EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_DVB },
|
||||
+ { USB_DEVICE(0x2040, 0x8265),
|
||||
+ .driver_info = EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_DVB },
|
||||
{ USB_DEVICE(0x2040, 0x026d),
|
||||
.driver_info = EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_01595 },
|
||||
+ { USB_DEVICE(0x2040, 0x826d),
|
||||
+ .driver_info = EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_01595 },
|
||||
{ USB_DEVICE(0x0438, 0xb002),
|
||||
.driver_info = EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600 },
|
||||
{ USB_DEVICE(0x2001, 0xf112),
|
||||
@@ -3222,7 +3232,8 @@ static void em28xx_release_resources(struct em28xx *dev)
|
||||
em28xx_i2c_unregister(dev, 1);
|
||||
em28xx_i2c_unregister(dev, 0);
|
||||
|
||||
- usb_put_dev(udev);
|
||||
+ if(dev->ts == PRIMARY_TS)
|
||||
+ usb_put_dev(udev);
|
||||
|
||||
/* Mark device as unused */
|
||||
clear_bit(dev->devno, em28xx_devused);
|
||||
@@ -3415,6 +3426,34 @@ static int em28xx_init_dev(struct em28xx *dev, struct usb_device *udev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
+int em28xx_duplicate_dev(struct em28xx *dev)
|
||||
+{
|
||||
+ int nr;
|
||||
+ struct em28xx *sec_dev = kzalloc(sizeof(*sec_dev), GFP_KERNEL);
|
||||
+ if (sec_dev == NULL) {
|
||||
+ dev->dev_next = NULL;
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
+ memcpy(sec_dev, dev, sizeof(sizeof(*sec_dev)));
|
||||
+ /* Check to see next free device and mark as used */
|
||||
+ do {
|
||||
+ nr = find_first_zero_bit(em28xx_devused, EM28XX_MAXBOARDS);
|
||||
+ if (nr >= EM28XX_MAXBOARDS) {
|
||||
+ /* No free device slots */
|
||||
+ printk(DRIVER_NAME ": Supports only %i em28xx boards.\n",
|
||||
+ EM28XX_MAXBOARDS);
|
||||
+ kfree(sec_dev);
|
||||
+ dev->dev_next = NULL;
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
+ } while (test_and_set_bit(nr, em28xx_devused));
|
||||
+ sec_dev->devno = nr;
|
||||
+ snprintf(sec_dev->name, 28, "em28xx #%d", nr);
|
||||
+ sec_dev->dev_next = NULL;
|
||||
+ dev->dev_next = sec_dev;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
/* high bandwidth multiplier, as encoded in highspeed endpoint descriptors */
|
||||
#define hb_mult(wMaxPacketSize) (1 + (((wMaxPacketSize) >> 11) & 0x03))
|
||||
|
||||
@@ -3428,7 +3467,8 @@ static int em28xx_usb_probe(struct usb_interface *interface,
|
||||
struct usb_device *udev;
|
||||
struct em28xx *dev = NULL;
|
||||
int retval;
|
||||
- bool has_vendor_audio = false, has_video = false, has_dvb = false;
|
||||
+ bool has_vendor_audio = false, has_video = false;
|
||||
+ bool has_dvb = false, has_dvb_ts2 = false;
|
||||
int i, nr, try_bulk;
|
||||
const int ifnum = interface->altsetting[0].desc.bInterfaceNumber;
|
||||
char *speed;
|
||||
@@ -3534,6 +3574,19 @@ static int em28xx_usb_probe(struct usb_interface *interface,
|
||||
}
|
||||
}
|
||||
break;
|
||||
+ case 0x85:
|
||||
+ if (usb_endpoint_xfer_isoc(e)) {
|
||||
+ if (size > dev->dvb_max_pkt_size_isoc_ts2) {
|
||||
+ has_dvb_ts2 = true; /* see NOTE (~) */
|
||||
+ dev->dvb_ep_isoc_ts2 = e->bEndpointAddress;
|
||||
+ dev->dvb_max_pkt_size_isoc_ts2 = size;
|
||||
+ dev->dvb_alt_isoc = i;
|
||||
+ }
|
||||
+ } else {
|
||||
+ has_dvb_ts2 = true;
|
||||
+ dev->dvb_ep_bulk_ts2 = e->bEndpointAddress;
|
||||
+ }
|
||||
+ break;
|
||||
}
|
||||
}
|
||||
/* NOTE:
|
||||
@@ -3615,6 +3668,10 @@ static int em28xx_usb_probe(struct usb_interface *interface,
|
||||
dev->has_video = has_video;
|
||||
dev->ifnum = ifnum;
|
||||
|
||||
+ dev->ts = PRIMARY_TS;
|
||||
+ snprintf(dev->name, 28, "em28xx");
|
||||
+ dev->dev_next = NULL;
|
||||
+
|
||||
if (has_vendor_audio) {
|
||||
dev_err(&interface->dev,
|
||||
"Audio interface %i found (Vendor Class)\n", ifnum);
|
||||
@@ -3694,6 +3751,61 @@ static int em28xx_usb_probe(struct usb_interface *interface,
|
||||
dev->dvb_xfer_bulk ? "bulk" : "isoc");
|
||||
}
|
||||
|
||||
+ if(dev->board.has_dual_ts && em28xx_duplicate_dev(dev) == 0)
|
||||
+ {
|
||||
+ dev->dev_next->ts = SECONDARY_TS;
|
||||
+ dev->dev_next->alt = -1;
|
||||
+ dev->dev_next->is_audio_only = has_vendor_audio && !(has_video || has_dvb);
|
||||
+ dev->dev_next->has_video = false;
|
||||
+ dev->dev_next->ifnum = ifnum;
|
||||
+ dev->dev_next->model = id->driver_info;
|
||||
+
|
||||
+ mutex_init(&dev->dev_next->lock);
|
||||
+ retval = em28xx_init_dev(dev->dev_next, udev, interface, dev->dev_next->devno);
|
||||
+ if (retval) {
|
||||
+ goto err_free;
|
||||
+ }
|
||||
+
|
||||
+ if (usb_xfer_mode < 0) {
|
||||
+ if (dev->dev_next->board.is_webcam)
|
||||
+ try_bulk = 1;
|
||||
+ else
|
||||
+ try_bulk = 0;
|
||||
+ } else {
|
||||
+ try_bulk = usb_xfer_mode > 0;
|
||||
+ }
|
||||
+
|
||||
+ /* Select USB transfer types to use */
|
||||
+ if (has_dvb) {
|
||||
+ if (!dev->dvb_ep_isoc_ts2 || (try_bulk && dev->dvb_ep_bulk_ts2))
|
||||
+ dev->dev_next->dvb_xfer_bulk = 1;
|
||||
+ dev_info(&dev->intf->dev, "dvb ts2 set to %s mode.\n",
|
||||
+ dev->dev_next->dvb_xfer_bulk ? "bulk" : "isoc");
|
||||
+ }
|
||||
+
|
||||
+ dev->dev_next->dvb_ep_isoc = dev->dvb_ep_isoc_ts2;
|
||||
+ dev->dev_next->dvb_ep_bulk = dev->dvb_ep_bulk_ts2;
|
||||
+ dev->dev_next->dvb_max_pkt_size_isoc = dev->dvb_max_pkt_size_isoc_ts2;
|
||||
+ dev->dev_next->dvb_alt_isoc = dev->dvb_alt_isoc;
|
||||
+
|
||||
+ /* Configuare hardware to support TS2*/
|
||||
+ if(dev->dvb_xfer_bulk) {
|
||||
+ /* The ep4 and ep5 are configuared for BULK */
|
||||
+ em28xx_write_reg(dev, 0x0b, 0x96);
|
||||
+ mdelay(100);
|
||||
+ em28xx_write_reg(dev, 0x0b, 0x80);
|
||||
+ mdelay(100);
|
||||
+ } else {
|
||||
+ /* The ep4 and ep5 are configuared for ISO */
|
||||
+ em28xx_write_reg(dev, 0x0b, 0x96);
|
||||
+ mdelay(100);
|
||||
+ em28xx_write_reg(dev, 0x0b, 0x82);
|
||||
+ mdelay(100);
|
||||
+ }
|
||||
+
|
||||
+ kref_init(&dev->dev_next->ref);
|
||||
+ }
|
||||
+
|
||||
kref_init(&dev->ref);
|
||||
|
||||
request_modules(dev);
|
||||
@@ -3736,15 +3848,28 @@ static void em28xx_usb_disconnect(struct usb_interface *interface)
|
||||
if (!dev)
|
||||
return;
|
||||
|
||||
+ if(dev->dev_next!=NULL) {
|
||||
+ dev->dev_next->disconnected = 1;
|
||||
+ dev_info(&dev->intf->dev, "Disconnecting %s\n", dev->dev_next->name);
|
||||
+ flush_request_modules(dev->dev_next);
|
||||
+ }
|
||||
+
|
||||
dev->disconnected = 1;
|
||||
|
||||
- dev_err(&dev->intf->dev, "Disconnecting\n");
|
||||
+ dev_err(&dev->intf->dev, "Disconnecting %s\n", dev->name);
|
||||
|
||||
flush_request_modules(dev);
|
||||
|
||||
em28xx_close_extension(dev);
|
||||
|
||||
+ if(dev->dev_next!=NULL)
|
||||
+ em28xx_release_resources(dev->dev_next);
|
||||
em28xx_release_resources(dev);
|
||||
+
|
||||
+ if(dev->dev_next!=NULL) {
|
||||
+ kref_put(&dev->dev_next->ref, em28xx_free_device);
|
||||
+ dev->dev_next = NULL;
|
||||
+ }
|
||||
kref_put(&dev->ref, em28xx_free_device);
|
||||
}
|
||||
|
||||
diff --git a/drivers/media/usb/em28xx/em28xx-core.c b/drivers/media/usb/em28xx/em28xx-core.c
|
||||
index 1d0d8cc..ca0ddd5 100644
|
||||
--- a/drivers/media/usb/em28xx/em28xx-core.c
|
||||
+++ b/drivers/media/usb/em28xx/em28xx-core.c
|
||||
@@ -638,10 +638,39 @@ int em28xx_capture_start(struct em28xx *dev, int start)
|
||||
dev->chip_id == CHIP_ID_EM28174 ||
|
||||
dev->chip_id == CHIP_ID_EM28178) {
|
||||
/* The Transport Stream Enable Register moved in em2874 */
|
||||
- rc = em28xx_write_reg_bits(dev, EM2874_R5F_TS_ENABLE,
|
||||
- start ?
|
||||
- EM2874_TS1_CAPTURE_ENABLE : 0x00,
|
||||
- EM2874_TS1_CAPTURE_ENABLE);
|
||||
+ if(dev->dvb_xfer_bulk) {
|
||||
+ /* TS1 Maximum Transfer Size = 188 * EM28XX_DVB_BULK_PACKET_MULTIPLIER */
|
||||
+ em28xx_write_reg(dev, EM2874_R5D_TS1_PKT_SIZE, 0xef);
|
||||
+ } else {
|
||||
+ /* TS1 Maximum Transfer Size = 188 * 5 */
|
||||
+ em28xx_write_reg(dev, EM2874_R5D_TS1_PKT_SIZE, 0x05);
|
||||
+ }
|
||||
+
|
||||
+ if(dev->board.has_dual_ts) {
|
||||
+ if(start) {
|
||||
+ if(dev->dvb_xfer_bulk) {
|
||||
+ /* TS2 Maximum Transfer Size = 188 * EM28XX_DVB_BULK_PACKET_MULTIPLIER */
|
||||
+ em28xx_write_reg(dev, EM2874_R5E_TS2_PKT_SIZE, 0xef);
|
||||
+ } else {
|
||||
+ /* TS2 Maximum Transfer Size = 188 * 5 */
|
||||
+ em28xx_write_reg(dev, EM2874_R5E_TS2_PKT_SIZE, 0x05);
|
||||
+ }
|
||||
+ rc = em28xx_write_reg_bits(dev, EM2874_R5F_TS_ENABLE,
|
||||
+ (EM2874_TS1_CAPTURE_ENABLE | EM2874_TS2_CAPTURE_ENABLE),
|
||||
+ (EM2874_TS1_CAPTURE_ENABLE | EM2874_TS2_CAPTURE_ENABLE));
|
||||
+ } else {
|
||||
+ if(dev->ts == PRIMARY_TS) {
|
||||
+ rc = em28xx_toggle_reg_bits(dev, EM2874_R5F_TS_ENABLE, EM2874_TS1_CAPTURE_ENABLE);
|
||||
+ } else {
|
||||
+ rc = em28xx_toggle_reg_bits(dev, EM2874_R5F_TS_ENABLE, EM2874_TS2_CAPTURE_ENABLE);
|
||||
+ }
|
||||
+ }
|
||||
+ } else {
|
||||
+ rc = em28xx_write_reg_bits(dev, EM2874_R5F_TS_ENABLE,
|
||||
+ start ?
|
||||
+ EM2874_TS1_CAPTURE_ENABLE : 0x00,
|
||||
+ EM2874_TS1_CAPTURE_ENABLE);
|
||||
+ }
|
||||
} else {
|
||||
/* FIXME: which is the best order? */
|
||||
/* video registers are sampled by VREF */
|
||||
@@ -1077,7 +1106,11 @@ int em28xx_register_extension(struct em28xx_ops *ops)
|
||||
mutex_lock(&em28xx_devlist_mutex);
|
||||
list_add_tail(&ops->next, &em28xx_extension_devlist);
|
||||
list_for_each_entry(dev, &em28xx_devlist, devlist) {
|
||||
- ops->init(dev);
|
||||
+ if (ops->init) {
|
||||
+ ops->init(dev);
|
||||
+ if(dev->dev_next!=NULL)
|
||||
+ ops->init(dev->dev_next);
|
||||
+ }
|
||||
}
|
||||
mutex_unlock(&em28xx_devlist_mutex);
|
||||
pr_info("em28xx: Registered (%s) extension\n", ops->name);
|
||||
@@ -1091,7 +1124,11 @@ void em28xx_unregister_extension(struct em28xx_ops *ops)
|
||||
|
||||
mutex_lock(&em28xx_devlist_mutex);
|
||||
list_for_each_entry(dev, &em28xx_devlist, devlist) {
|
||||
- ops->fini(dev);
|
||||
+ if (ops->fini) {
|
||||
+ if(dev->dev_next!=NULL)
|
||||
+ ops->fini(dev->dev_next);
|
||||
+ ops->fini(dev);
|
||||
+ }
|
||||
}
|
||||
list_del(&ops->next);
|
||||
mutex_unlock(&em28xx_devlist_mutex);
|
||||
@@ -1106,8 +1143,11 @@ void em28xx_init_extension(struct em28xx *dev)
|
||||
mutex_lock(&em28xx_devlist_mutex);
|
||||
list_add_tail(&dev->devlist, &em28xx_devlist);
|
||||
list_for_each_entry(ops, &em28xx_extension_devlist, next) {
|
||||
- if (ops->init)
|
||||
+ if (ops->init) {
|
||||
ops->init(dev);
|
||||
+ if(dev->dev_next!=NULL)
|
||||
+ ops->init(dev->dev_next);
|
||||
+ }
|
||||
}
|
||||
mutex_unlock(&em28xx_devlist_mutex);
|
||||
}
|
||||
@@ -1118,8 +1158,11 @@ void em28xx_close_extension(struct em28xx *dev)
|
||||
|
||||
mutex_lock(&em28xx_devlist_mutex);
|
||||
list_for_each_entry(ops, &em28xx_extension_devlist, next) {
|
||||
- if (ops->fini)
|
||||
+ if (ops->fini) {
|
||||
+ if(dev->dev_next!=NULL)
|
||||
+ ops->fini(dev->dev_next);
|
||||
ops->fini(dev);
|
||||
+ }
|
||||
}
|
||||
list_del(&dev->devlist);
|
||||
mutex_unlock(&em28xx_devlist_mutex);
|
||||
@@ -1134,6 +1177,8 @@ int em28xx_suspend_extension(struct em28xx *dev)
|
||||
list_for_each_entry(ops, &em28xx_extension_devlist, next) {
|
||||
if (ops->suspend)
|
||||
ops->suspend(dev);
|
||||
+ if(dev->dev_next!=NULL)
|
||||
+ ops->suspend(dev->dev_next);
|
||||
}
|
||||
mutex_unlock(&em28xx_devlist_mutex);
|
||||
return 0;
|
||||
@@ -1148,6 +1193,8 @@ int em28xx_resume_extension(struct em28xx *dev)
|
||||
list_for_each_entry(ops, &em28xx_extension_devlist, next) {
|
||||
if (ops->resume)
|
||||
ops->resume(dev);
|
||||
+ if(dev->dev_next!=NULL)
|
||||
+ ops->resume(dev->dev_next);
|
||||
}
|
||||
mutex_unlock(&em28xx_devlist_mutex);
|
||||
return 0;
|
||||
diff --git a/drivers/media/usb/em28xx/em28xx-dvb.c b/drivers/media/usb/em28xx/em28xx-dvb.c
|
||||
index 82edd37..e10b1ac 100644
|
||||
--- a/drivers/media/usb/em28xx/em28xx-dvb.c
|
||||
+++ b/drivers/media/usb/em28xx/em28xx-dvb.c
|
||||
@@ -199,13 +199,13 @@ static int em28xx_start_streaming(struct em28xx_dvb *dvb)
|
||||
int rc;
|
||||
struct em28xx_i2c_bus *i2c_bus = dvb->adapter.priv;
|
||||
struct em28xx *dev = i2c_bus->dev;
|
||||
- struct usb_device *udev = interface_to_usbdev(dev->intf);
|
||||
+// struct usb_device *udev = interface_to_usbdev(dev->intf);
|
||||
int dvb_max_packet_size, packet_multiplier, dvb_alt;
|
||||
|
||||
if (dev->dvb_xfer_bulk) {
|
||||
if (!dev->dvb_ep_bulk)
|
||||
return -ENODEV;
|
||||
- dvb_max_packet_size = 512; /* USB 2.0 spec */
|
||||
+ dvb_max_packet_size = 188;
|
||||
packet_multiplier = EM28XX_DVB_BULK_PACKET_MULTIPLIER;
|
||||
dvb_alt = 0;
|
||||
} else { /* isoc */
|
||||
@@ -218,7 +218,8 @@ static int em28xx_start_streaming(struct em28xx_dvb *dvb)
|
||||
dvb_alt = dev->dvb_alt_isoc;
|
||||
}
|
||||
|
||||
- usb_set_interface(udev, dev->ifnum, dvb_alt);
|
||||
+ /* moved to em28xx_dvb_init*/
|
||||
+ //usb_set_interface(udev, dev->ifnum, dvb_alt);
|
||||
rc = em28xx_set_mode(dev, EM28XX_DIGITAL_MODE);
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
@@ -1128,8 +1129,9 @@ static void em28xx_unregister_dvb(struct em28xx_dvb *dvb)
|
||||
|
||||
static int em28xx_dvb_init(struct em28xx *dev)
|
||||
{
|
||||
- int result = 0;
|
||||
+ int result = 0, dvb_alt = 0;
|
||||
struct em28xx_dvb *dvb;
|
||||
+ struct usb_device *udev;
|
||||
|
||||
if (dev->is_audio_only) {
|
||||
/* Shouldn't initialize IR for this interface */
|
||||
@@ -1155,7 +1157,7 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
||||
result = em28xx_alloc_urbs(dev, EM28XX_DIGITAL_MODE,
|
||||
dev->dvb_xfer_bulk,
|
||||
EM28XX_DVB_NUM_BUFS,
|
||||
- 512,
|
||||
+ 188,
|
||||
EM28XX_DVB_BULK_PACKET_MULTIPLIER);
|
||||
} else {
|
||||
result = em28xx_alloc_urbs(dev, EM28XX_DIGITAL_MODE,
|
||||
@@ -1913,7 +1915,8 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
||||
si2168_config.ts_mode = SI2168_TS_SERIAL;
|
||||
memset(&info, 0, sizeof(struct i2c_board_info));
|
||||
strlcpy(info.type, "si2168", I2C_NAME_SIZE);
|
||||
- info.addr = 0x64;
|
||||
+ if(dev->ts == PRIMARY_TS) info.addr = 0x64;
|
||||
+ else info.addr = 0x67;
|
||||
info.platform_data = &si2168_config;
|
||||
request_module(info.type);
|
||||
client = i2c_new_device(&dev->i2c_adap[dev->def_i2c_bus], &info);
|
||||
@@ -1939,7 +1942,8 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
||||
#endif
|
||||
memset(&info, 0, sizeof(struct i2c_board_info));
|
||||
strlcpy(info.type, "si2157", I2C_NAME_SIZE);
|
||||
- info.addr = 0x60;
|
||||
+ if(dev->ts == PRIMARY_TS) info.addr = 0x60;
|
||||
+ else info.addr = 0x63;
|
||||
info.platform_data = &si2157_config;
|
||||
request_module(info.type);
|
||||
client = i2c_new_device(adapter, &info);
|
||||
@@ -1975,7 +1979,8 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
||||
lgdt3306a_config.fe = &dvb->fe[0];
|
||||
lgdt3306a_config.i2c_adapter = &adapter;
|
||||
strlcpy(info.type, "lgdt3306a", sizeof(info.type));
|
||||
- info.addr = 0x59;
|
||||
+ if(dev->ts == PRIMARY_TS) info.addr = 0x59;
|
||||
+ else info.addr = 0x0e;
|
||||
info.platform_data = &lgdt3306a_config;
|
||||
request_module(info.type);
|
||||
client = i2c_new_device(&dev->i2c_adap[dev->def_i2c_bus],
|
||||
@@ -2002,7 +2007,8 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
||||
#endif
|
||||
memset(&info, 0, sizeof(struct i2c_board_info));
|
||||
strlcpy(info.type, "si2157", sizeof(info.type));
|
||||
- info.addr = 0x60;
|
||||
+ if(dev->ts == PRIMARY_TS) info.addr = 0x60;
|
||||
+ else info.addr = 0x62;
|
||||
info.platform_data = &si2157_config;
|
||||
request_module(info.type);
|
||||
|
||||
@@ -2045,6 +2051,14 @@ static int em28xx_dvb_init(struct em28xx *dev)
|
||||
if (result < 0)
|
||||
goto out_free;
|
||||
|
||||
+ if (dev->dvb_xfer_bulk) {
|
||||
+ dvb_alt = 0;
|
||||
+ } else { /* isoc */
|
||||
+ dvb_alt = dev->dvb_alt_isoc;
|
||||
+ }
|
||||
+
|
||||
+ udev = interface_to_usbdev(dev->intf);
|
||||
+ usb_set_interface(udev, dev->ifnum, dvb_alt);
|
||||
dev_info(&dev->intf->dev, "DVB extension successfully initialized\n");
|
||||
|
||||
kref_get(&dev->ref);
|
||||
diff --git a/drivers/media/usb/em28xx/em28xx.h b/drivers/media/usb/em28xx/em28xx.h
|
||||
index e8d97d5..132638e 100644
|
||||
--- a/drivers/media/usb/em28xx/em28xx.h
|
||||
+++ b/drivers/media/usb/em28xx/em28xx.h
|
||||
@@ -190,7 +190,7 @@
|
||||
USB 2.0 spec says bulk packet size is always 512 bytes
|
||||
*/
|
||||
#define EM28XX_BULK_PACKET_MULTIPLIER 384
|
||||
-#define EM28XX_DVB_BULK_PACKET_MULTIPLIER 384
|
||||
+#define EM28XX_DVB_BULK_PACKET_MULTIPLIER 240
|
||||
|
||||
#define EM28XX_INTERLACED_DEFAULT 1
|
||||
|
||||
@@ -216,6 +216,9 @@
|
||||
/* max. number of button state polling addresses */
|
||||
#define EM28XX_NUM_BUTTON_ADDRESSES_MAX 5
|
||||
|
||||
+#define PRIMARY_TS 0
|
||||
+#define SECONDARY_TS 1
|
||||
+
|
||||
enum em28xx_mode {
|
||||
EM28XX_SUSPEND,
|
||||
EM28XX_ANALOG_MODE,
|
||||
@@ -456,6 +459,7 @@ struct em28xx_board {
|
||||
unsigned int mts_firmware:1;
|
||||
unsigned int max_range_640_480:1;
|
||||
unsigned int has_dvb:1;
|
||||
+ unsigned int has_dual_ts:1;
|
||||
unsigned int is_webcam:1;
|
||||
unsigned int valid:1;
|
||||
unsigned int has_ir_i2c:1;
|
||||
@@ -620,6 +624,7 @@ struct em28xx {
|
||||
unsigned int is_audio_only:1;
|
||||
enum em28xx_int_audio_type int_audio_type;
|
||||
enum em28xx_usb_audio_type usb_audio_type;
|
||||
+ unsigned char name[32];
|
||||
|
||||
struct em28xx_board board;
|
||||
|
||||
@@ -681,6 +686,8 @@ struct em28xx {
|
||||
u8 ifnum; /* number of the assigned usb interface */
|
||||
u8 analog_ep_isoc; /* address of isoc endpoint for analog */
|
||||
u8 analog_ep_bulk; /* address of bulk endpoint for analog */
|
||||
+ u8 dvb_ep_isoc_ts2; /* address of isoc endpoint for DVB TS2*/
|
||||
+ u8 dvb_ep_bulk_ts2; /* address of bulk endpoint for DVB TS2*/
|
||||
u8 dvb_ep_isoc; /* address of isoc endpoint for DVB */
|
||||
u8 dvb_ep_bulk; /* address of bulk endpoint for DVB */
|
||||
int alt; /* alternate setting */
|
||||
@@ -694,6 +701,8 @@ struct em28xx {
|
||||
int dvb_alt_isoc; /* alternate setting for DVB isoc transfers */
|
||||
unsigned int dvb_max_pkt_size_isoc; /* isoc max packet size of the
|
||||
selected DVB ep at dvb_alt */
|
||||
+ unsigned int dvb_max_pkt_size_isoc_ts2; /* isoc max packet size of the
|
||||
+ selected DVB ep at dvb_alt */
|
||||
unsigned int dvb_xfer_bulk:1; /* use bulk instead of isoc
|
||||
transfers for DVB */
|
||||
char urb_buf[URB_MAX_CTRL_SIZE]; /* urb control msg buffer */
|
||||
@@ -725,6 +734,9 @@ struct em28xx {
|
||||
struct media_entity input_ent[MAX_EM28XX_INPUT];
|
||||
struct media_pad input_pad[MAX_EM28XX_INPUT];
|
||||
#endif
|
||||
+
|
||||
+ struct em28xx *dev_next;
|
||||
+ int ts;
|
||||
};
|
||||
|
||||
#define kref_to_dev(d) container_of(d, struct em28xx, ref)
|
||||
--
|
||||
2.7.4
|
||||
|
@ -0,0 +1,38 @@
|
||||
diff --git a/drivers/media/rc/rc-main.c b/drivers/media/rc/rc-main.c
|
||||
index d845336..a89d7bd 100644
|
||||
--- a/drivers/media/rc/rc-main.c
|
||||
+++ b/drivers/media/rc/rc-main.c
|
||||
@@ -1699,6 +1699,16 @@ static int rc_setup_rx_device(struct rc_dev *dev)
|
||||
if (dev->close)
|
||||
dev->input_dev->close = ir_close;
|
||||
|
||||
+ dev->input_dev->dev.parent = &dev->dev;
|
||||
+ memcpy(&dev->input_dev->id, &dev->input_id, sizeof(dev->input_id));
|
||||
+ dev->input_dev->phys = dev->input_phys;
|
||||
+ dev->input_dev->name = dev->input_name;
|
||||
+
|
||||
+ /* rc_open will be called here */
|
||||
+ rc = input_register_device(dev->input_dev);
|
||||
+ if (rc)
|
||||
+ goto out_table;
|
||||
+
|
||||
/*
|
||||
* Default delay of 250ms is too short for some protocols, especially
|
||||
* since the timeout is currently set to 250ms. Increase it to 500ms,
|
||||
@@ -1714,16 +1724,6 @@ static int rc_setup_rx_device(struct rc_dev *dev)
|
||||
*/
|
||||
dev->input_dev->rep[REP_PERIOD] = 125;
|
||||
|
||||
- dev->input_dev->dev.parent = &dev->dev;
|
||||
- memcpy(&dev->input_dev->id, &dev->input_id, sizeof(dev->input_id));
|
||||
- dev->input_dev->phys = dev->input_phys;
|
||||
- dev->input_dev->name = dev->input_name;
|
||||
-
|
||||
- /* rc_open will be called here */
|
||||
- rc = input_register_device(dev->input_dev);
|
||||
- if (rc)
|
||||
- goto out_table;
|
||||
-
|
||||
return 0;
|
||||
|
||||
out_table:
|
@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="iwlwifi-firmware"
|
||||
PKG_VERSION="ba301aa"
|
||||
PKG_VERSION="6a717a9"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="Free-to-use"
|
||||
PKG_SITE="https://github.com/LibreELEC/iwlwifi-firmware"
|
||||
|
@ -58,8 +58,13 @@ case "$LINUX" in
|
||||
PKG_SOURCE_DIR="xbian-sources-kernel-${PKG_COMMIT}*"
|
||||
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET imx6-status-led imx6-soc-fan irqbalanced"
|
||||
;;
|
||||
default-rpi)
|
||||
PKG_VERSION="4.9.36"
|
||||
PKG_URL="http://www.kernel.org/pub/linux/kernel/v4.x/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
PKG_PATCH_DIRS="default-rpi"
|
||||
;;
|
||||
*)
|
||||
PKG_VERSION="4.9.29"
|
||||
PKG_VERSION="4.11.8"
|
||||
PKG_URL="http://www.kernel.org/pub/linux/kernel/v4.x/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
PKG_PATCH_DIRS="default"
|
||||
;;
|
||||
|
@ -0,0 +1,16 @@
|
||||
# see https://github.com/wongsyrone/openwrt-1/commit/93c0a5173414cfa7684547de3c3a1f3dc4240383
|
||||
# and https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65932
|
||||
|
||||
diff -Naur linux-4.3-rc5.orig/arch/arm/Makefile linux-4.3-rc5/arch/arm/Makefile
|
||||
--- linux-4.3-rc5.orig/arch/arm/Makefile 2015-10-11 11:09:45.000000000 -0700
|
||||
+++ linux-4.3-rc5/arch/arm/Makefile 2015-10-20 12:24:44.507102957 -0700
|
||||
@@ -130,7 +130,8 @@
|
||||
endif
|
||||
|
||||
# Need -Uarm for gcc < 3.x
|
||||
-KBUILD_CFLAGS +=$(CFLAGS_ABI) $(CFLAGS_ISA) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm
|
||||
+# Maybe we need -fno-ipa-sra for gcc > 4.9.x
|
||||
+KBUILD_CFLAGS +=$(CFLAGS_ABI) $(CFLAGS_ISA) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm -fno-ipa-sra
|
||||
KBUILD_AFLAGS +=$(CFLAGS_ABI) $(AFLAGS_ISA) $(arch-y) $(tune-y) -include asm/unified.h -msoft-float
|
||||
|
||||
CHECKFLAGS += -D__arm__
|
@ -0,0 +1,315 @@
|
||||
diff -Naur linux-3.19.orig/drivers/hid/hid-core.c linux-3.19/drivers/hid/hid-core.c
|
||||
--- linux-3.19.orig/drivers/hid/hid-core.c 2015-02-20 14:01:17.080322846 -0800
|
||||
+++ linux-3.19/drivers/hid/hid-core.c 2015-02-20 14:03:30.375519421 -0800
|
||||
@@ -1884,6 +1884,7 @@
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_18) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_PKB1700) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_WKB2000) },
|
||||
+ { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_OUYA, USB_DEVICE_ID_OUYA_CONTROLLER) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_6000) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_PHILIPS, USB_DEVICE_ID_PHILIPS_SPINEL_PLUS_1) },
|
||||
diff -Naur linux-3.19.orig/drivers/hid/hid-ids.h linux-3.19/drivers/hid/hid-ids.h
|
||||
--- linux-3.19.orig/drivers/hid/hid-ids.h 2015-02-20 14:01:17.080322846 -0800
|
||||
+++ linux-3.19/drivers/hid/hid-ids.h 2015-02-20 14:03:30.382519482 -0800
|
||||
@@ -721,6 +721,9 @@
|
||||
#define USB_DEVICE_ID_ORTEK_PKB1700 0x1700
|
||||
#define USB_DEVICE_ID_ORTEK_WKB2000 0x2000
|
||||
|
||||
+#define USB_VENDOR_ID_OUYA 0x2836
|
||||
+#define USB_DEVICE_ID_OUYA_CONTROLLER 0x0001
|
||||
+
|
||||
#define USB_VENDOR_ID_PLANTRONICS 0x047f
|
||||
|
||||
#define USB_VENDOR_ID_PANASONIC 0x04da
|
||||
diff -Naur linux-3.19.orig/drivers/hid/hid-ouya.c linux-3.19/drivers/hid/hid-ouya.c
|
||||
--- linux-3.19.orig/drivers/hid/hid-ouya.c 1969-12-31 16:00:00.000000000 -0800
|
||||
+++ linux-3.19/drivers/hid/hid-ouya.c 2015-02-20 14:03:30.371519386 -0800
|
||||
@@ -0,0 +1,260 @@
|
||||
+/*
|
||||
+ * HID driver for OUYA Game Controller(s)
|
||||
+ *
|
||||
+ * Copyright (c) 2013 OUYA
|
||||
+ */
|
||||
+
|
||||
+#include <linux/device.h>
|
||||
+#include <linux/input.h>
|
||||
+#include <linux/hid.h>
|
||||
+#include <linux/module.h>
|
||||
+
|
||||
+#include "hid-ids.h"
|
||||
+
|
||||
+#define OUYA_TOUCHPAD_FIXUP (1 << 0)
|
||||
+
|
||||
+struct ouya_sc {
|
||||
+ unsigned long quirks;
|
||||
+};
|
||||
+
|
||||
+/* Fixed report descriptor */
|
||||
+static __u8 ouya_rdesc_fixed[] = {
|
||||
+
|
||||
+ 0x05, 0x01, /* Usage Page (Desktop), */
|
||||
+ 0x09, 0x05, /* Usage (Game Pad), */
|
||||
+
|
||||
+ 0xA1, 0x01, /* Collection (Application), */
|
||||
+ 0x85, 0x07, /* Report ID (7), */
|
||||
+
|
||||
+ 0xA1, 0x00, /* Collection (Physical), */
|
||||
+ 0x09, 0x30, /* Usage (X), */
|
||||
+ 0x09, 0x31, /* Usage (Y), */
|
||||
+ 0x15, 0x00, /* Logical Minimum (0), */
|
||||
+ 0x26, 0xFF, 0x00, /* Logical Maximum (255), */
|
||||
+ 0x35, 0x00, /* Physical Minimum (0), */
|
||||
+ 0x46, 0xFF, 0x00, /* Physical Maximum (255), */
|
||||
+ 0x95, 0x02, /* Report Count (2), */
|
||||
+ 0x75, 0x08, /* Report Size (8), */
|
||||
+ 0x81, 0x02, /* Input (Variable), */
|
||||
+ 0xC0, /* End Collection, */
|
||||
+
|
||||
+ 0xA1, 0x00, /* Collection (Physical), */
|
||||
+ 0x09, 0x33, /* Usage (Rx), */
|
||||
+ 0x09, 0x34, /* Usage (Ry), */
|
||||
+ 0x15, 0x00, /* Logical Minimum (0), */
|
||||
+ 0x26, 0xFF, 0x00, /* Logical Maximum (255), */
|
||||
+ 0x35, 0x00, /* Physical Minimum (0), */
|
||||
+ 0x46, 0xFF, 0x00, /* Physical Maximum (255), */
|
||||
+ 0x95, 0x02, /* Report Count (2), */
|
||||
+ 0x75, 0x08, /* Report Size (8), */
|
||||
+ 0x81, 0x02, /* Input (Variable), */
|
||||
+ 0xC0, /* End Collection, */
|
||||
+
|
||||
+ 0xA1, 0x00, /* Collection (Physical), */
|
||||
+ 0x09, 0x32, /* Usage (Z), */
|
||||
+ 0x15, 0x00, /* Logical Minimum (0), */
|
||||
+ 0x26, 0xFF, 0x00, /* Logical Maximum (255), */
|
||||
+ 0x35, 0x00, /* Physical Minimum (0), */
|
||||
+ 0x46, 0xFF, 0x00, /* Physical Maximum (255), */
|
||||
+ 0x95, 0x01, /* Report Count (1), */
|
||||
+ 0x75, 0x08, /* Report Size (8), */
|
||||
+ 0x81, 0x02, /* Input (Variable), */
|
||||
+ 0xC0, /* End Collection, */
|
||||
+
|
||||
+ 0xA1, 0x00, /* Collection (Physical), */
|
||||
+ 0x09, 0x35, /* Usage (Rz), */
|
||||
+ 0x15, 0x00, /* Logical Minimum (0), */
|
||||
+ 0x26, 0xFF, 0x00, /* Logical Maximum (255), */
|
||||
+ 0x35, 0x00, /* Physical Minimum (0), */
|
||||
+ 0x46, 0xFF, 0x00, /* Physical Maximum (255), */
|
||||
+ 0x95, 0x01, /* Report Count (1), */
|
||||
+ 0x75, 0x08, /* Report Size (8), */
|
||||
+ 0x81, 0x02, /* Input (Variable), */
|
||||
+ 0xC0, /* End Collection, */
|
||||
+
|
||||
+ 0x05, 0x09, /* Usage Page (Button), */
|
||||
+ 0x19, 0x01, /* Usage Minimum (01h), */
|
||||
+ 0x29, 0x10, /* Usage Maximum (10h), */
|
||||
+ 0x95, 0x10, /* Report Count (16), */
|
||||
+ 0x75, 0x01, /* Report Size (1), */
|
||||
+ 0x81, 0x02, /* Input (Variable), */
|
||||
+
|
||||
+ /* ORIGINAL REPORT DESCRIPTOR FOR TOUCHPAD INPUT */
|
||||
+ /* 06 00 ff a1 02 09 02 15 00 26 ff 00 35 00 46 ff 00 95 03 75 08 81 02 c0 */
|
||||
+
|
||||
+ 0x06, 0x00, 0xFF, /* Usage Page (Custom), */
|
||||
+ 0x09, 0x02, /* Usage (Mouse), */
|
||||
+ 0x09, 0x01, /* Usage (Pointer), */
|
||||
+ 0xA1, 0x00, /* Collection (Physical), */
|
||||
+ 0x05, 0x09, /* Usage Page (Button), */
|
||||
+ 0x19, 0x01, /* Usage Minimum (01h), */
|
||||
+ 0x29, 0x03, /* Usage Maximum (03h), */
|
||||
+ 0x15, 0x00, /* Logical Minimum (0), */
|
||||
+ 0x25, 0x01, /* Logical Maximum (1), */
|
||||
+ 0x95, 0x03, /* Report Count (3), */
|
||||
+ 0x75, 0x01, /* Report Size (1), */
|
||||
+ 0x81, 0x02, /* Input (Variable), */
|
||||
+ 0x95, 0x01, /* Report Count (1), */
|
||||
+ 0x75, 0x05, /* Report Size (5), */
|
||||
+ 0x81, 0x01, /* Input (Constant), */
|
||||
+ 0x05, 0x01, /* Usage Page (Desktop), */
|
||||
+ 0x09, 0x30, /* Usage (X), */
|
||||
+ 0x09, 0x31, /* Usage (Y), */
|
||||
+ 0x15, 0x81, /* Logical Minimum (-127), */
|
||||
+ 0x25, 0x7f, /* Logical Maximum (127), */
|
||||
+ 0x95, 0x02, /* Report Count (2), */
|
||||
+ 0x75, 0x08, /* Report Size (8), */
|
||||
+ 0x81, 0x06, /* Input (Relative), */
|
||||
+ 0xC0, /* End Collection, */
|
||||
+
|
||||
+ 0x06, 0x00, 0xFF, /* Usage Page (Custom), */
|
||||
+ 0xA1, 0x02, /* Collection (Logical), */
|
||||
+ 0x75, 0x08, /* Report Size (8), */
|
||||
+ 0x95, 0x07, /* Report Count (7), */
|
||||
+ 0x46, 0xFF, 0x00, /* Physical Maximum (255), */
|
||||
+ 0x26, 0xFF, 0x00, /* Logical Maximum (255), */
|
||||
+ 0x09, 0x01, /* Usage (Pointer), */
|
||||
+ 0x91, 0x02, /* Output (Variable), */
|
||||
+ 0xC0, /* End Collection, */
|
||||
+
|
||||
+ 0xC0, /* End Collection */
|
||||
+
|
||||
+
|
||||
+ 0x06, 0x00, 0xFF, /* Usage Page (Custom), */
|
||||
+ 0x05, 0x0C, /* Usage Page (Consumer), */
|
||||
+ 0x09, 0x01, /* Usage (Consumer Control), */
|
||||
+
|
||||
+ 0xA1, 0x01, /* Collection (Application), */
|
||||
+ 0x85, 0x03, /* Report ID (3), */
|
||||
+ 0x05, 0x01, /* Usage Page (Desktop), */
|
||||
+ 0x09, 0x06, /* Usage (Keyboard), */
|
||||
+ 0xA1, 0x02, /* Collection (Logical), */
|
||||
+ 0x05, 0x06, /* Usage Page (Generic), */
|
||||
+ 0x09, 0x20, /* Usage (Battery Strgth), */
|
||||
+ 0x15, 0x00, /* Logical Minimum (0), */
|
||||
+ 0x26, 0xFF, 0x00, /* Logical Maximum (255), */
|
||||
+ 0x75, 0x08, /* Report Size (8), */
|
||||
+ 0x95, 0x01, /* Report Count (1), */
|
||||
+ 0x81, 0x02, /* Input (Variable), */
|
||||
+ 0x06, 0xBC, 0xFF, /* Usage Page (Custom), */
|
||||
+
|
||||
+ 0x0A, 0xAD, 0xBD, /* UNKNOWN */
|
||||
+
|
||||
+ 0x75, 0x08, /* Report Size (8), */
|
||||
+ 0x95, 0x06, /* Report Count (6), */
|
||||
+ 0x81, 0x02, /* Input (Variable), */
|
||||
+ 0xC0, /* End Collection, */
|
||||
+
|
||||
+ 0xC0, /* End Collection */
|
||||
+
|
||||
+ 0x00
|
||||
+};
|
||||
+
|
||||
+static __u8 *ouya_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
||||
+ unsigned int *rsize)
|
||||
+{
|
||||
+ struct ouya_sc *sc = hid_get_drvdata(hdev);
|
||||
+
|
||||
+ if (sc->quirks & OUYA_TOUCHPAD_FIXUP) {
|
||||
+ rdesc = ouya_rdesc_fixed;
|
||||
+ *rsize = sizeof(ouya_rdesc_fixed);
|
||||
+ }
|
||||
+ return rdesc;
|
||||
+}
|
||||
+
|
||||
+static int ouya_input_mapping(struct hid_device *hdev, struct hid_input *hi,
|
||||
+ struct hid_field *field, struct hid_usage *usage,
|
||||
+ unsigned long **bit, int *max)
|
||||
+{
|
||||
+ struct ouya_sc *sc = hid_get_drvdata(hdev);
|
||||
+
|
||||
+ if (!(sc->quirks & OUYA_TOUCHPAD_FIXUP)) {
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ if ((usage->hid & 0x90000) == 0x90000 &&
|
||||
+ (field->physical & 0xff000000) == 0xff000000 &&
|
||||
+ usage->collection_index == 5 &&
|
||||
+ field->report_count == 3) {
|
||||
+
|
||||
+ hid_map_usage(hi, usage, bit, max, EV_KEY, BTN_MOUSE + (usage->hid - 0x90001));
|
||||
+
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int ouya_probe(struct hid_device *hdev, const struct hid_device_id *id)
|
||||
+{
|
||||
+ int ret;
|
||||
+ struct ouya_sc *sc;
|
||||
+
|
||||
+ sc = kzalloc(sizeof(*sc), GFP_KERNEL);
|
||||
+ if (sc == NULL) {
|
||||
+ hid_err(hdev, "can't alloc ouya descriptor\n");
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
+
|
||||
+ if(((hdev->version & 0xff00) == 0x0100 && (hdev->version & 0xff) >= 0x04) ||
|
||||
+ ((hdev->version & 0xff00) == 0xe100 && (hdev->version & 0xff) >= 0x3a)) {
|
||||
+ hid_info(hdev, "ouya controller - new version\n");
|
||||
+ sc->quirks = OUYA_TOUCHPAD_FIXUP;
|
||||
+ } else {
|
||||
+ sc->quirks = 0;
|
||||
+ }
|
||||
+ hid_set_drvdata(hdev, sc);
|
||||
+
|
||||
+ ret = hid_parse(hdev);
|
||||
+ if (ret) {
|
||||
+ hid_err(hdev, "parse failed\n");
|
||||
+ goto err_free;
|
||||
+ }
|
||||
+
|
||||
+ ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT |
|
||||
+ HID_CONNECT_HIDDEV_FORCE);
|
||||
+ if (ret) {
|
||||
+ hid_err(hdev, "hw start failed\n");
|
||||
+ goto err_free;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+
|
||||
+err_free:
|
||||
+ kfree(sc);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static void ouya_remove(struct hid_device *hdev)
|
||||
+{
|
||||
+ hid_hw_stop(hdev);
|
||||
+ kfree(hid_get_drvdata(hdev));
|
||||
+}
|
||||
+
|
||||
+static const struct hid_device_id ouya_devices[] = {
|
||||
+ { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_OUYA, USB_DEVICE_ID_OUYA_CONTROLLER) },
|
||||
+ { }
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(hid, ouya_devices);
|
||||
+
|
||||
+static struct hid_driver ouya_driver = {
|
||||
+ .name = "ouya",
|
||||
+ .id_table = ouya_devices,
|
||||
+ .probe = ouya_probe,
|
||||
+ .remove = ouya_remove,
|
||||
+ .input_mapping = ouya_input_mapping,
|
||||
+ .report_fixup = ouya_report_fixup
|
||||
+};
|
||||
+
|
||||
+static int __init ouya_init(void)
|
||||
+{
|
||||
+ return hid_register_driver(&ouya_driver);
|
||||
+}
|
||||
+
|
||||
+static void __exit ouya_exit(void)
|
||||
+{
|
||||
+ hid_unregister_driver(&ouya_driver);
|
||||
+}
|
||||
+
|
||||
+module_init(ouya_init);
|
||||
+module_exit(ouya_exit);
|
||||
diff -Naur linux-3.19.orig/drivers/hid/Kconfig linux-3.19/drivers/hid/Kconfig
|
||||
--- linux-3.19.orig/drivers/hid/Kconfig 2015-02-20 14:01:17.081322855 -0800
|
||||
+++ linux-3.19/drivers/hid/Kconfig 2015-02-20 14:03:30.381519473 -0800
|
||||
@@ -528,6 +528,12 @@
|
||||
- Ortek WKB-2000
|
||||
- Skycable wireless presenter
|
||||
|
||||
+config HID_OUYA
|
||||
+ tristate "OUYA Game Controller"
|
||||
+ depends on USB_HID
|
||||
+ ---help---
|
||||
+ Support for OUYA Game Controller.
|
||||
+
|
||||
config HID_PANTHERLORD
|
||||
tristate "Pantherlord/GreenAsia game controller"
|
||||
depends on HID
|
||||
diff -Naur linux-3.19.orig/drivers/hid/Makefile linux-3.19/drivers/hid/Makefile
|
||||
--- linux-3.19.orig/drivers/hid/Makefile 2015-02-20 14:01:17.081322855 -0800
|
||||
+++ linux-3.19/drivers/hid/Makefile 2015-02-20 14:03:30.382519482 -0800
|
||||
@@ -70,6 +70,7 @@
|
||||
obj-$(CONFIG_HID_MULTITOUCH) += hid-multitouch.o
|
||||
obj-$(CONFIG_HID_NTRIG) += hid-ntrig.o
|
||||
obj-$(CONFIG_HID_ORTEK) += hid-ortek.o
|
||||
+obj-$(CONFIG_HID_OUYA) += hid-ouya.o
|
||||
obj-$(CONFIG_HID_PRODIKEYS) += hid-prodikeys.o
|
||||
obj-$(CONFIG_HID_PANTHERLORD) += hid-pl.o
|
||||
obj-$(CONFIG_HID_PENMOUNT) += hid-penmount.o
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,164 @@
|
||||
diff -Naur linux-3.19/drivers/hid/hid-core.c linux-3.19.patch/drivers/hid/hid-core.c
|
||||
--- linux-3.19/drivers/hid/hid-core.c 2015-02-09 03:54:22.000000000 +0100
|
||||
+++ linux-3.19.patch/drivers/hid/hid-core.c 2015-02-11 00:06:14.966131308 +0100
|
||||
@@ -1886,6 +1886,10 @@
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_WKB2000) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_6000) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_PHILIPS, USB_DEVICE_ID_PHILIPS_SPINEL_PLUS_1) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_PHILIPS, USB_DEVICE_ID_PHILIPS_SPINEL_PLUS_2) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_PHILIPS, USB_DEVICE_ID_PHILIPS_SPINEL_PLUS_3) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_PHILIPS, USB_DEVICE_ID_PHILIPS_SPINEL_PLUS_4) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, HID_ANY_ID) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_KEYBOARD) },
|
||||
#if IS_ENABLED(CONFIG_HID_ROCCAT)
|
||||
diff -Naur linux-3.19/drivers/hid/hid-ids.h linux-3.19.patch/drivers/hid/hid-ids.h
|
||||
--- linux-3.19/drivers/hid/hid-ids.h 2015-02-09 03:54:22.000000000 +0100
|
||||
+++ linux-3.19.patch/drivers/hid/hid-ids.h 2015-02-11 00:04:45.885977057 +0100
|
||||
@@ -743,6 +743,10 @@
|
||||
|
||||
#define USB_VENDOR_ID_PHILIPS 0x0471
|
||||
#define USB_DEVICE_ID_PHILIPS_IEEE802154_DONGLE 0x0617
|
||||
+#define USB_DEVICE_ID_PHILIPS_SPINEL_PLUS_1 0x206c
|
||||
+#define USB_DEVICE_ID_PHILIPS_SPINEL_PLUS_2 0x20cc
|
||||
+#define USB_DEVICE_ID_PHILIPS_SPINEL_PLUS_3 0x0613
|
||||
+#define USB_DEVICE_ID_PHILIPS_SPINEL_PLUS_4 0x2168
|
||||
|
||||
#define USB_VENDOR_ID_PI_ENGINEERING 0x05f3
|
||||
#define USB_DEVICE_ID_PI_ENGINEERING_VEC_USB_FOOTPEDAL 0xff
|
||||
diff -Naur linux-3.19/drivers/hid/hid-spinelplus.c linux-3.19.patch/drivers/hid/hid-spinelplus.c
|
||||
--- linux-3.19/drivers/hid/hid-spinelplus.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ linux-3.19.patch/drivers/hid/hid-spinelplus.c 2015-02-11 00:04:45.886977059 +0100
|
||||
@@ -0,0 +1,104 @@
|
||||
+/*
|
||||
+ * HID driver for "PHILIPS MCE USB IR Receiver- Spinel plus" remotes
|
||||
+ *
|
||||
+ * Copyright (c) 2010 Panagiotis Skintzos
|
||||
+ *
|
||||
+ * Renamed to Spinel, cleanup and modified to also support
|
||||
+ * Spinel Plus 0471:20CC by Stephan Raue 2012.
|
||||
+ */
|
||||
+
|
||||
+/*
|
||||
+ * This program is free software; you can redistribute it and/or modify it
|
||||
+ * under the terms of the GNU General Public License as published by the Free
|
||||
+ * Software Foundation; either version 2 of the License, or (at your option)
|
||||
+ * any later version.
|
||||
+ */
|
||||
+
|
||||
+#include <linux/device.h>
|
||||
+#include <linux/input.h>
|
||||
+#include <linux/hid.h>
|
||||
+#include <linux/module.h>
|
||||
+
|
||||
+#include "hid-ids.h"
|
||||
+
|
||||
+#define spinelplus_map_key(c) set_bit(EV_REP, hi->input->evbit); \
|
||||
+ hid_map_usage_clear(hi, usage, bit, max, EV_KEY, (c))
|
||||
+
|
||||
+static int spinelplus_input_mapping(struct hid_device *hdev,
|
||||
+ struct hid_input *hi, struct hid_field *field, struct hid_usage *usage,
|
||||
+ unsigned long **bit, int *max)
|
||||
+{
|
||||
+ switch (usage->hid) {
|
||||
+ case 0xffbc000d: spinelplus_map_key(KEY_MEDIA); break;
|
||||
+ case 0xffbc0024: spinelplus_map_key(KEY_MEDIA); break;
|
||||
+ case 0xffbc0027: spinelplus_map_key(KEY_ZOOM); break;
|
||||
+ case 0xffbc0033: spinelplus_map_key(KEY_HOME); break;
|
||||
+ case 0xffbc0035: spinelplus_map_key(KEY_CAMERA); break;
|
||||
+ case 0xffbc0036: spinelplus_map_key(KEY_EPG); break;
|
||||
+ case 0xffbc0037: spinelplus_map_key(KEY_DVD); break;
|
||||
+ case 0xffbc0038: spinelplus_map_key(KEY_HOME); break;
|
||||
+ case 0xffbc0039: spinelplus_map_key(KEY_MP3); break;
|
||||
+ case 0xffbc003a: spinelplus_map_key(KEY_VIDEO); break;
|
||||
+ case 0xffbc005a: spinelplus_map_key(KEY_TEXT); break;
|
||||
+ case 0xffbc005b: spinelplus_map_key(KEY_RED); break;
|
||||
+ case 0xffbc005c: spinelplus_map_key(KEY_GREEN); break;
|
||||
+ case 0xffbc005d: spinelplus_map_key(KEY_YELLOW); break;
|
||||
+ case 0xffbc005e: spinelplus_map_key(KEY_BLUE); break;
|
||||
+ default:
|
||||
+ return 0;
|
||||
+ }
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
+static int spinelplus_probe(struct hid_device *hdev,
|
||||
+ const struct hid_device_id *id)
|
||||
+{
|
||||
+ int ret;
|
||||
+ /* Connect only to hid input (not hiddev & hidraw)*/
|
||||
+ unsigned int cmask = HID_CONNECT_HIDINPUT;
|
||||
+
|
||||
+ ret = hid_parse(hdev);
|
||||
+ if (ret) {
|
||||
+ dev_err(&hdev->dev, "parse failed\n");
|
||||
+ goto err_free;
|
||||
+ }
|
||||
+
|
||||
+ ret = hid_hw_start(hdev, cmask);
|
||||
+ if (ret) {
|
||||
+ dev_err(&hdev->dev, "hw start failed\n");
|
||||
+ goto err_free;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+err_free:
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static const struct hid_device_id spinelplus_devices[] = {
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_PHILIPS,USB_DEVICE_ID_PHILIPS_SPINEL_PLUS_1) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_PHILIPS,USB_DEVICE_ID_PHILIPS_SPINEL_PLUS_2) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_PHILIPS,USB_DEVICE_ID_PHILIPS_SPINEL_PLUS_3) },
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_PHILIPS,USB_DEVICE_ID_PHILIPS_SPINEL_PLUS_4) },
|
||||
+ { }
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(hid, spinelplus_devices);
|
||||
+
|
||||
+static struct hid_driver spinelplus_driver = {
|
||||
+ .name = "SpinelPlus",
|
||||
+ .id_table = spinelplus_devices,
|
||||
+ .input_mapping = spinelplus_input_mapping,
|
||||
+ .probe = spinelplus_probe,
|
||||
+};
|
||||
+
|
||||
+static int __init spinelplus_init(void)
|
||||
+{
|
||||
+ return hid_register_driver(&spinelplus_driver);
|
||||
+}
|
||||
+
|
||||
+static void __exit spinelplus_exit(void)
|
||||
+{
|
||||
+ hid_unregister_driver(&spinelplus_driver);
|
||||
+}
|
||||
+
|
||||
+module_init(spinelplus_init);
|
||||
+module_exit(spinelplus_exit);
|
||||
+MODULE_LICENSE("GPL");
|
||||
diff -Naur linux-3.19/drivers/hid/Kconfig linux-3.19.patch/drivers/hid/Kconfig
|
||||
--- linux-3.19/drivers/hid/Kconfig 2015-02-09 03:54:22.000000000 +0100
|
||||
+++ linux-3.19.patch/drivers/hid/Kconfig 2015-02-11 00:04:45.886977059 +0100
|
||||
@@ -702,6 +702,12 @@
|
||||
---help---
|
||||
Support for Steelseries SRW-S1 steering wheel
|
||||
|
||||
+config HID_SPINELPLUS
|
||||
+ tristate "Spinel Plus remote control"
|
||||
+ depends on USB_HID
|
||||
+ ---help---
|
||||
+ Say Y here if you have a Spinel Plus (0471:206c/20cc/0613/2168) remote
|
||||
+
|
||||
config HID_SUNPLUS
|
||||
tristate "Sunplus wireless desktop"
|
||||
depends on HID
|
||||
diff -Naur linux-3.19/drivers/hid/Makefile linux-3.19.patch/drivers/hid/Makefile
|
||||
--- linux-3.19/drivers/hid/Makefile 2015-02-09 03:54:22.000000000 +0100
|
||||
+++ linux-3.19.patch/drivers/hid/Makefile 2015-02-11 00:04:45.886977059 +0100
|
||||
@@ -107,6 +107,7 @@
|
||||
obj-$(CONFIG_HID_SMARTJOYPLUS) += hid-sjoy.o
|
||||
obj-$(CONFIG_HID_SONY) += hid-sony.o
|
||||
obj-$(CONFIG_HID_SPEEDLINK) += hid-speedlink.o
|
||||
+obj-$(CONFIG_HID_SPINELPLUS) += hid-spinelplus.o
|
||||
obj-$(CONFIG_HID_STEELSERIES) += hid-steelseries.o
|
||||
obj-$(CONFIG_HID_SUNPLUS) += hid-sunplus.o
|
||||
obj-$(CONFIG_HID_GREENASIA) += hid-gaff.o
|
@ -0,0 +1,12 @@
|
||||
diff -Naur linux-3.0/drivers/media/rc/nuvoton-cir.c linux-3.0.patch/drivers/media/rc/nuvoton-cir.c
|
||||
--- linux-3.0/drivers/media/rc/nuvoton-cir.c 2011-07-22 04:17:23.000000000 +0200
|
||||
+++ linux-3.0.patch/drivers/media/rc/nuvoton-cir.c 2011-07-22 21:30:48.374591146 +0200
|
||||
@@ -1110,7 +1110,7 @@
|
||||
rdev->dev.parent = &pdev->dev;
|
||||
rdev->driver_name = NVT_DRIVER_NAME;
|
||||
rdev->map_name = RC_MAP_RC6_MCE;
|
||||
- rdev->timeout = MS_TO_NS(100);
|
||||
+ rdev->timeout = US_TO_NS(1000);
|
||||
/* rx resolution is hardwired to 50us atm, 1, 25, 100 also possible */
|
||||
rdev->rx_resolution = US_TO_NS(CIR_SAMPLE_PERIOD);
|
||||
#if 0
|
@ -0,0 +1,28 @@
|
||||
--- linux/drivers/media/rc/ir-rc6-decoder.c 2012-11-25 22:08:13.148418669 -0800
|
||||
+++ linux.patch/drivers/media/rc/ir-rc6-decoder.c 2012-11-25 22:07:48.864417975 -0800
|
||||
@@ -39,7 +39,6 @@
|
||||
#define RC6_STARTBIT_MASK 0x08 /* for the header bits */
|
||||
#define RC6_6A_MCE_TOGGLE_MASK 0x8000 /* for the body bits */
|
||||
#define RC6_6A_LCC_MASK 0xffff0000 /* RC6-6A-32 long customer code mask */
|
||||
-#define RC6_6A_MCE_CC 0x800f0000 /* MCE customer code */
|
||||
#ifndef CHAR_BIT
|
||||
#define CHAR_BIT 8 /* Normally in <limits.h> */
|
||||
#endif
|
||||
@@ -257,14 +256,9 @@ again:
|
||||
toggle = 0;
|
||||
break;
|
||||
case 32:
|
||||
- if ((scancode & RC6_6A_LCC_MASK) == RC6_6A_MCE_CC) {
|
||||
- protocol = RC_TYPE_RC6_MCE;
|
||||
- toggle = !!(scancode & RC6_6A_MCE_TOGGLE_MASK);
|
||||
- scancode &= ~RC6_6A_MCE_TOGGLE_MASK;
|
||||
- } else {
|
||||
- protocol = RC_TYPE_RC6_6A_32;
|
||||
- toggle = 0;
|
||||
- }
|
||||
+ protocol = RC_TYPE_RC6_MCE;
|
||||
+ toggle = !!(scancode & RC6_6A_MCE_TOGGLE_MASK);
|
||||
+ scancode &= ~RC6_6A_MCE_TOGGLE_MASK;
|
||||
break;
|
||||
default:
|
||||
IR_dprintk(1, "RC6(6A) unsupported length\n");
|
@ -0,0 +1,72 @@
|
||||
From 7051422474e4c4e302ede3d07ffd8ef2682e07a2 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Saraev <stefan@saraev.ca>
|
||||
Date: Tue, 22 Apr 2014 16:05:14 +0300
|
||||
Subject: [PATCH] [RFC] hid/sony: add autorepeat for PS3 remotes
|
||||
|
||||
adapted to 4.6
|
||||
|
||||
Betreff: [RFC] hid/sony: add autorepeat for PS3 remotes
|
||||
Von: David Dillow <dave@thedillows.org>
|
||||
Datum: 28.06.2013 04:28
|
||||
An: linux-input@vger.kernel.org
|
||||
Kopie (CC): Stephan Raue <stephan@openelec.tv>
|
||||
|
||||
Some applications using the PS3 remote would like to have autorepeat
|
||||
from the device. Use the input subsystem's software emulation to provide
|
||||
this capability, and enable those that don't need it to turn it off.
|
||||
---
|
||||
I'm not sure this is the correct approach, or if it is even appropriate
|
||||
for a remote to do autorepeat. However, the media/rc subsystem does do
|
||||
it by default, and it's been requested by users, so there is at least
|
||||
some demand.
|
||||
|
||||
This compiled against the hid-sony driver with the PS3 remote changes
|
||||
merged, but I have done no testing of it. If the approach seems
|
||||
reasonable, I'll try to test it when the MythTV is idle.
|
||||
|
||||
Signed-off-by: Matt DeVillier <matt.devillier@gmail.com>
|
||||
---
|
||||
drivers/hid/hid-sony.c | 21 +++++++++++++++++++++
|
||||
1 file changed, 21 insertions(+)
|
||||
|
||||
diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c
|
||||
index 310436a..84f7f41 100644
|
||||
--- a/drivers/hid/hid-sony.c
|
||||
+++ b/drivers/hid/hid-sony.c
|
||||
@@ -1120,6 +1120,25 @@ static int ps3remote_mapping(struct hid_device *hdev, struct hid_input *hi,
|
||||
return 1;
|
||||
}
|
||||
|
||||
+static int ps3remote_setup_repeat(struct hid_device *hdev)
|
||||
+{
|
||||
+ struct hid_input *hidinput = list_first_entry(&hdev->inputs,
|
||||
+ struct hid_input, list);
|
||||
+ struct input_dev *input = hidinput->input;
|
||||
+
|
||||
+ /*
|
||||
+ * Set up autorepeat defaults per the remote control subsystem;
|
||||
+ * this must be done after hid_hw_start(), as having these non-zero
|
||||
+ * at the time of input_register_device() tells the input system that
|
||||
+ * the hardware does the autorepeat, and the PS3 remote does not.
|
||||
+ */
|
||||
+ set_bit(EV_REP, input->evbit);
|
||||
+ input->rep[REP_DELAY] = 500;
|
||||
+ input->rep[REP_PERIOD] = 125;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static u8 *sony_report_fixup(struct hid_device *hdev, u8 *rdesc,
|
||||
unsigned int *rsize)
|
||||
{
|
||||
@@ -2372,6 +2391,8 @@ static int sony_probe(struct hid_device *hdev, const struct hid_device_id *id)
|
||||
sony_init_output_report(sc, dualshock4_send_output_report);
|
||||
} else if (sc->quirks & MOTION_CONTROLLER) {
|
||||
sony_init_output_report(sc, motion_send_output_report);
|
||||
+ } else if (sc->quirks & PS3REMOTE) {
|
||||
+ ret = ps3remote_setup_repeat(hdev);
|
||||
} else {
|
||||
ret = 0;
|
||||
}
|
||||
--
|
||||
2.5.0
|
@ -0,0 +1,21 @@
|
||||
diff -Naur linux-3.16.1/drivers/media/rc/imon.c linux-3.16.1.patch/drivers/media/rc/imon.c
|
||||
--- linux-3.16.1/drivers/media/rc/imon.c 2014-08-14 04:36:35.000000000 +0200
|
||||
+++ linux-3.16.1.patch/drivers/media/rc/imon.c 2014-08-15 13:57:16.587620642 +0200
|
||||
@@ -1344,6 +1344,17 @@
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
+ * For users without stabilized, just ignore any value getting
|
||||
+ * to close to the diagonal.
|
||||
+ */
|
||||
+ if ((abs(rel_y) < 2 && abs(rel_x) < 2) ||
|
||||
+ abs(abs(rel_y) - abs(rel_x)) < 2 ) {
|
||||
+ spin_lock_irqsave(&ictx->kc_lock, flags);
|
||||
+ ictx->kc = KEY_UNKNOWN;
|
||||
+ spin_unlock_irqrestore(&ictx->kc_lock, flags);
|
||||
+ return;
|
||||
+ }
|
||||
+ /*
|
||||
* Hack alert: instead of using keycodes, we have
|
||||
* to use hard-coded scancodes here...
|
||||
*/
|
@ -0,0 +1,86 @@
|
||||
From 203eaba8afbb984349b0b11e4e3d4e5d3eb4df4b Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Saraev <stefan@saraev.ca>
|
||||
Date: Mon, 18 Apr 2016 23:51:56 +0300
|
||||
Subject: [PATCH] ALSA: hda - Avoid outputting HDMI audio before prepare() and
|
||||
after close()
|
||||
|
||||
adapted to 4.6
|
||||
|
||||
From a6024295fd3290a8c9c5519a03316081ee82378a Mon Sep 17 00:00:00 2001
|
||||
From: Anssi Hannula <anssi.hannula@iki.fi>
|
||||
Date: Sat, 16 Feb 2013 17:42:46 +0200
|
||||
Subject: [PATCH] ALSA: hda - Avoid outputting HDMI audio before prepare() and
|
||||
after close()
|
||||
|
||||
Some HDMI codecs (at least NVIDIA 0x10de000b:0x10de0101:0x100100) start
|
||||
transmitting an empty audio stream as soon as PIN_OUT and AC_DIG1_ENABLE
|
||||
are enabled.
|
||||
|
||||
Since commit 6169b673618bf0b2518ce413b54925782a603f06 ("ALSA: hda -
|
||||
Always turn on pins for HDMI/DP") this happens at first open() time, and
|
||||
will continue even after close().
|
||||
|
||||
Additionally, some codecs (at least Intel PantherPoint HDMI) currently
|
||||
continue transmitting HDMI audio even after close() in case some actual
|
||||
audio was output after open() (this happens regardless of PIN_OUT).
|
||||
|
||||
Empty HDMI audio transmission when not intended has the effect that a
|
||||
possible HDMI audio sink/receiver may prefer the empty HDMI audio stream
|
||||
over an actual audio stream on its S/PDIF inputs.
|
||||
|
||||
To avoid the issue before first prepare(), set stream format to 0 on
|
||||
codec initialization. 0 is not a valid format value for HDMI and will
|
||||
prevent the audio stream from being output.
|
||||
|
||||
Additionally, at close() time, make sure that the stream is cleaned up.
|
||||
This will ensure that the format is reset to 0 at that time, preventing
|
||||
audio from being output in that case.
|
||||
|
||||
Thanks to OpenELEC developers and users for their help in investigating
|
||||
this issue on the affected NVIDIA "ION2" hardware. Testing of the final
|
||||
version on NVIDIA ION2 was done by OpenELEC user "MrXIII". Testing on
|
||||
Intel PantherPoint was done by myself.
|
||||
|
||||
Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
|
||||
Cc: stable@vger.kernel.org
|
||||
---
|
||||
sound/pci/hda/patch_hdmi.c | 14 ++++++++++++++
|
||||
1 file changed, 14 insertions(+)
|
||||
|
||||
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
|
||||
index 5af372d..18bad9a 100644
|
||||
--- a/sound/pci/hda/patch_hdmi.c
|
||||
+++ b/sound/pci/hda/patch_hdmi.c
|
||||
@@ -1630,6 +1630,14 @@ static int hdmi_add_cvt(struct hda_codec *codec, hda_nid_t cvt_nid)
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
+ /*
|
||||
+ * Some HDMI codecs (at least NVIDIA 0x10de000b:0x10de0101:0x100100)
|
||||
+ * start transmitting an empty audio stream as soon as PIN_OUT and
|
||||
+ * AC_DIG1_ENABLE are enabled, which happens at open() time.
|
||||
+ * To avoid that, set format to 0, which is not valid for HDMI.
|
||||
+ */
|
||||
+ snd_hda_codec_write(codec, cvt_nid, 0, AC_VERB_SET_STREAM_FORMAT, 0);
|
||||
+
|
||||
if (spec->num_cvts < ARRAY_SIZE(spec->cvt_nids))
|
||||
spec->cvt_nids[spec->num_cvts] = cvt_nid;
|
||||
spec->num_cvts++;
|
||||
@@ -1783,6 +1791,12 @@ static int hdmi_pcm_close(struct hda_pcm_stream *hinfo,
|
||||
int pinctl;
|
||||
|
||||
if (hinfo->nid) {
|
||||
+ /*
|
||||
+ * Make sure no empty audio is output after this point by
|
||||
+ * setting stream format to 0, which is not valid for HDMI.
|
||||
+ */
|
||||
+ __snd_hda_codec_cleanup_stream(codec, hinfo->nid, 1);
|
||||
+
|
||||
pcm_idx = hinfo_to_pcm_index(codec, hinfo);
|
||||
if (snd_BUG_ON(pcm_idx < 0))
|
||||
return -EINVAL;
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
||||
|
@ -0,0 +1,113 @@
|
||||
From 0db9810b18ffc46709ad00831c426712d5489aea Mon Sep 17 00:00:00 2001
|
||||
From: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Date: Sat, 13 Aug 2016 21:32:17 +0100
|
||||
Subject: [PATCH 1/2] drm/i915: Show RPS autotuning thresholds along waitboost
|
||||
|
||||
---
|
||||
drivers/gpu/drm/i915/i915_debugfs.c | 62 +++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 62 insertions(+)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
|
||||
index 1035468..2cff44a 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_debugfs.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
|
||||
@@ -2434,6 +2434,68 @@ static int i915_rps_boost_info(struct seq_file *m, void *data)
|
||||
spin_unlock(&dev_priv->rps.client_lock);
|
||||
mutex_unlock(&dev->filelist_mutex);
|
||||
|
||||
+ if (INTEL_INFO(dev)->gen >= 6) {
|
||||
+ u32 rpmodectl, rpinclimit, rpdeclimit;
|
||||
+ u32 rpstat, cagf;
|
||||
+ u32 rpupei, rpcurup, rpprevup;
|
||||
+ u32 rpdownei, rpcurdown, rpprevdown;
|
||||
+
|
||||
+ intel_uncore_forcewake_get(dev_priv, FORCEWAKE_ALL);
|
||||
+
|
||||
+ rpmodectl = I915_READ(GEN6_RP_CONTROL);
|
||||
+ rpinclimit = I915_READ(GEN6_RP_UP_THRESHOLD);
|
||||
+ rpdeclimit = I915_READ(GEN6_RP_DOWN_THRESHOLD);
|
||||
+
|
||||
+ rpstat = I915_READ(GEN6_RPSTAT1);
|
||||
+ rpupei = I915_READ(GEN6_RP_CUR_UP_EI) & GEN6_CURICONT_MASK;
|
||||
+ rpcurup = I915_READ(GEN6_RP_CUR_UP) & GEN6_CURBSYTAVG_MASK;
|
||||
+ rpprevup = I915_READ(GEN6_RP_PREV_UP) & GEN6_CURBSYTAVG_MASK;
|
||||
+ rpdownei = I915_READ(GEN6_RP_CUR_DOWN_EI) & GEN6_CURIAVG_MASK;
|
||||
+ rpcurdown = I915_READ(GEN6_RP_CUR_DOWN) & GEN6_CURBSYTAVG_MASK;
|
||||
+ rpprevdown = I915_READ(GEN6_RP_PREV_DOWN) & GEN6_CURBSYTAVG_MASK;
|
||||
+ intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
|
||||
+
|
||||
+ if (IS_GEN9(dev))
|
||||
+ cagf = (rpstat & GEN9_CAGF_MASK) >> GEN9_CAGF_SHIFT;
|
||||
+ else if (IS_HASWELL(dev) || IS_BROADWELL(dev))
|
||||
+ cagf = (rpstat & HSW_CAGF_MASK) >> HSW_CAGF_SHIFT;
|
||||
+ else
|
||||
+ cagf = (rpstat & GEN6_CAGF_MASK) >> GEN6_CAGF_SHIFT;
|
||||
+ cagf = intel_gpu_freq(dev_priv, cagf);
|
||||
+
|
||||
+
|
||||
+ seq_printf(m, "RP CUR UP EI: %d (%dus)\n",
|
||||
+ rpupei, GT_PM_INTERVAL_TO_US(dev_priv, rpupei));
|
||||
+ seq_printf(m, "RP CUR UP: %d (%dus)\n",
|
||||
+ rpcurup, GT_PM_INTERVAL_TO_US(dev_priv, rpcurup));
|
||||
+ seq_printf(m, "RP PREV UP: %d (%dus)\n",
|
||||
+ rpprevup, GT_PM_INTERVAL_TO_US(dev_priv, rpprevup));
|
||||
+ seq_printf(m, "Up threshold: %d%%\n",
|
||||
+ dev_priv->rps.up_threshold);
|
||||
+
|
||||
+ seq_printf(m, "RP CUR DOWN EI: %d (%dus)\n",
|
||||
+ rpdownei, GT_PM_INTERVAL_TO_US(dev_priv, rpdownei));
|
||||
+ seq_printf(m, "RP CUR DOWN: %d (%dus)\n",
|
||||
+ rpcurdown, GT_PM_INTERVAL_TO_US(dev_priv, rpcurdown));
|
||||
+ seq_printf(m, "RP PREV DOWN: %d (%dus)\n",
|
||||
+ rpprevdown, GT_PM_INTERVAL_TO_US(dev_priv, rpprevdown));
|
||||
+ seq_printf(m, "Down threshold: %d%%\n",
|
||||
+ dev_priv->rps.down_threshold);
|
||||
+
|
||||
+ seq_printf(m, "Current freq: %d MHz\n",
|
||||
+ intel_gpu_freq(dev_priv, dev_priv->rps.cur_freq));
|
||||
+ seq_printf(m, "Actual freq: %d MHz\n", cagf);
|
||||
+ seq_printf(m, "Idle freq: %d MHz\n",
|
||||
+ intel_gpu_freq(dev_priv, dev_priv->rps.idle_freq));
|
||||
+ seq_printf(m, "Min freq: %d MHz\n",
|
||||
+ intel_gpu_freq(dev_priv, dev_priv->rps.min_freq));
|
||||
+ seq_printf(m, "Max freq: %d MHz\n",
|
||||
+ intel_gpu_freq(dev_priv, dev_priv->rps.max_freq));
|
||||
+ seq_printf(m,
|
||||
+ "efficient (RPe) frequency: %d MHz\n",
|
||||
+ intel_gpu_freq(dev_priv, dev_priv->rps.efficient_freq));
|
||||
+ }
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
||||
From d77c081cd5ea0d278b314ee2043556d2bd9aacaf Mon Sep 17 00:00:00 2001
|
||||
From: fritsch <peter.fruehberger@gmail.com>
|
||||
Date: Sat, 13 Aug 2016 22:56:37 +0200
|
||||
Subject: [PATCH 2/2] drm/i915: intel-pm enable thresholds
|
||||
|
||||
---
|
||||
drivers/gpu/drm/i915/intel_pm.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
|
||||
index 2863b92..f3aaef2 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_pm.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_pm.c
|
||||
@@ -4511,8 +4511,7 @@ static void valleyview_set_rps(struct drm_device *dev, u8 val)
|
||||
|
||||
if (val != dev_priv->rps.cur_freq) {
|
||||
vlv_punit_write(dev_priv, PUNIT_REG_GPU_FREQ_REQ, val);
|
||||
- if (!IS_CHERRYVIEW(dev_priv))
|
||||
- gen6_set_rps_thresholds(dev_priv, val);
|
||||
+ gen6_set_rps_thresholds(dev_priv, val);
|
||||
}
|
||||
|
||||
dev_priv->rps.cur_freq = val;
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
@ -0,0 +1,110 @@
|
||||
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
|
||||
index f68c789..a6b6dfe 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_drv.h
|
||||
+++ b/drivers/gpu/drm/i915/i915_drv.h
|
||||
@@ -3948,6 +3948,7 @@ __raw_write(64, q)
|
||||
#define INTEL_BROADCAST_RGB_AUTO 0
|
||||
#define INTEL_BROADCAST_RGB_FULL 1
|
||||
#define INTEL_BROADCAST_RGB_LIMITED 2
|
||||
+#define INTEL_BROADCAST_RGB_VIDEO 3
|
||||
|
||||
static inline i915_reg_t i915_vgacntrl_reg(struct drm_device *dev)
|
||||
{
|
||||
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
|
||||
index ff399b9..f2ac0ff 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_drv.h
|
||||
+++ b/drivers/gpu/drm/i915/intel_drv.h
|
||||
@@ -522,6 +522,13 @@ struct intel_crtc_state {
|
||||
*/
|
||||
bool limited_color_range;
|
||||
|
||||
+ /*
|
||||
+ *
|
||||
+ * Use reduced/limited/broadcast rgb range without compressing.
|
||||
+ *
|
||||
+ */
|
||||
+ bool video_color_range;
|
||||
+
|
||||
/* Bitmask of encoder types (enum intel_output_type)
|
||||
* driven by the pipe.
|
||||
*/
|
||||
@@ -805,6 +812,7 @@ struct intel_hdmi {
|
||||
} dp_dual_mode;
|
||||
bool limited_color_range;
|
||||
bool color_range_auto;
|
||||
+ bool color_range_video;
|
||||
bool has_hdmi_sink;
|
||||
bool has_audio;
|
||||
enum hdmi_force_audio force_audio;
|
||||
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
|
||||
index 4df9f38..8b64508 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_hdmi.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
|
||||
@@ -462,7 +462,8 @@ static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder,
|
||||
}
|
||||
|
||||
if (intel_hdmi->rgb_quant_range_selectable) {
|
||||
- if (intel_crtc->config->limited_color_range)
|
||||
+ if (intel_crtc->config->limited_color_range ||
|
||||
+ intel_crtc->config->video_color_range)
|
||||
frame.avi.quantization_range =
|
||||
HDMI_QUANTIZATION_RANGE_LIMITED;
|
||||
else
|
||||
@@ -1308,6 +1309,8 @@ bool intel_hdmi_compute_config(struct intel_encoder *encoder,
|
||||
pipe_config->limited_color_range =
|
||||
intel_hdmi->limited_color_range;
|
||||
}
|
||||
+ if (intel_hdmi->color_range_video)
|
||||
+ pipe_config->video_color_range = true;
|
||||
|
||||
if (adjusted_mode->flags & DRM_MODE_FLAG_DBLCLK) {
|
||||
pipe_config->pixel_multiplier = 2;
|
||||
@@ -1588,25 +1591,35 @@ intel_hdmi_set_property(struct drm_connector *connector,
|
||||
if (property == dev_priv->broadcast_rgb_property) {
|
||||
bool old_auto = intel_hdmi->color_range_auto;
|
||||
bool old_range = intel_hdmi->limited_color_range;
|
||||
+ bool old_range_video = intel_hdmi->color_range_video;
|
||||
|
||||
switch (val) {
|
||||
case INTEL_BROADCAST_RGB_AUTO:
|
||||
intel_hdmi->color_range_auto = true;
|
||||
+ intel_hdmi->color_range_video = false;
|
||||
break;
|
||||
case INTEL_BROADCAST_RGB_FULL:
|
||||
intel_hdmi->color_range_auto = false;
|
||||
intel_hdmi->limited_color_range = false;
|
||||
+ intel_hdmi->color_range_video = false;
|
||||
break;
|
||||
case INTEL_BROADCAST_RGB_LIMITED:
|
||||
intel_hdmi->color_range_auto = false;
|
||||
intel_hdmi->limited_color_range = true;
|
||||
+ intel_hdmi->color_range_video = false;
|
||||
+ break;
|
||||
+ case INTEL_BROADCAST_RGB_VIDEO:
|
||||
+ intel_hdmi->color_range_auto = false;
|
||||
+ intel_hdmi->limited_color_range = false;
|
||||
+ intel_hdmi->color_range_video = true;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (old_auto == intel_hdmi->color_range_auto &&
|
||||
- old_range == intel_hdmi->limited_color_range)
|
||||
+ old_range == intel_hdmi->limited_color_range &&
|
||||
+ old_range_video == intel_hdmi->color_range_video)
|
||||
return 0;
|
||||
|
||||
goto done;
|
||||
diff --git a/drivers/gpu/drm/i915/intel_modes.c b/drivers/gpu/drm/i915/intel_modes.c
|
||||
index f2584d0..5a6f853 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_modes.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_modes.c
|
||||
@@ -103,6 +103,7 @@ static const struct drm_prop_enum_list broadcast_rgb_names[] = {
|
||||
{ INTEL_BROADCAST_RGB_AUTO, "Automatic" },
|
||||
{ INTEL_BROADCAST_RGB_FULL, "Full" },
|
||||
{ INTEL_BROADCAST_RGB_LIMITED, "Limited 16:235" },
|
||||
+ { INTEL_BROADCAST_RGB_VIDEO, "Video 16:235 pass-through" },
|
||||
};
|
||||
|
||||
void
|
@ -0,0 +1,25 @@
|
||||
From c314d9af9d774c052bea324e1a140ccdba0ca070 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Saraev <stefan@saraev.ca>
|
||||
Date: Tue, 8 Apr 2014 14:02:53 +0300
|
||||
Subject: [PATCH] pm: disable async suspend/resume by default
|
||||
|
||||
---
|
||||
kernel/power/main.c | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/kernel/power/main.c b/kernel/power/main.c
|
||||
index 1d1bf63..361db93 100644
|
||||
--- a/kernel/power/main.c
|
||||
+++ b/kernel/power/main.c
|
||||
@@ -46,7 +46,7 @@ int pm_notifier_call_chain(unsigned long val)
|
||||
}
|
||||
|
||||
/* If set, devices may be suspended and resumed asynchronously. */
|
||||
-int pm_async_enabled = 1;
|
||||
+int pm_async_enabled = 0;
|
||||
|
||||
static ssize_t pm_async_show(struct kobject *kobj, struct kobj_attribute *attr,
|
||||
char *buf)
|
||||
--
|
||||
1.7.2.5
|
||||
|
@ -0,0 +1,26 @@
|
||||
From 57f0b99ca9a2db948fa70988c447553683368be1 Mon Sep 17 00:00:00 2001
|
||||
From: Nell Hardcastle <nell@dev-nell.com>
|
||||
Date: Thu, 29 May 2014 22:06:50 -0700
|
||||
Subject: [PATCH] eMMC: Don't initialize partitions on RPMB flagged areas.
|
||||
|
||||
Prevents a lot of pointless hanging at boot on some devices.
|
||||
---
|
||||
drivers/mmc/card/block.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
|
||||
index 4409d79..56df902 100644
|
||||
--- a/drivers/mmc/card/block.c
|
||||
+++ b/drivers/mmc/card/block.c
|
||||
@@ -2254,7 +2254,7 @@ static int mmc_blk_alloc_parts(struct mmc_card *card, struct mmc_blk_data *md)
|
||||
return 0;
|
||||
|
||||
for (idx = 0; idx < card->nr_parts; idx++) {
|
||||
- if (card->part[idx].size) {
|
||||
+ if (card->part[idx].size && !(card->part[idx].area_type & MMC_BLK_DATA_AREA_RPMB)) {
|
||||
ret = mmc_blk_alloc_part(card, md,
|
||||
card->part[idx].part_cfg,
|
||||
card->part[idx].size >> 9,
|
||||
--
|
||||
1.7.10.4
|
||||
|
@ -1,7 +1,37 @@
|
||||
diff -Naur linux-3.19/drivers/hid/hid-core.c linux-3.19.patch/drivers/hid/hid-core.c
|
||||
--- linux-3.19/drivers/hid/hid-core.c 2015-02-09 03:54:22.000000000 +0100
|
||||
+++ linux-3.19.patch/drivers/hid/hid-core.c 2015-02-11 00:06:14.966131308 +0100
|
||||
@@ -1886,6 +1886,10 @@
|
||||
diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
|
||||
index cd4599c..86b22f7 100644
|
||||
--- a/drivers/hid/Kconfig
|
||||
+++ b/drivers/hid/Kconfig
|
||||
@@ -768,6 +768,12 @@ config HID_STEELSERIES
|
||||
---help---
|
||||
Support for Steelseries SRW-S1 steering wheel
|
||||
|
||||
+config HID_SPINELPLUS
|
||||
+ tristate "Spinel Plus remote control"
|
||||
+ depends on USB_HID
|
||||
+ ---help---
|
||||
+ Say Y here if you have a Spinel Plus (0471:206c/20cc/0613/2168) remote
|
||||
+
|
||||
config HID_SUNPLUS
|
||||
tristate "Sunplus wireless desktop"
|
||||
depends on HID
|
||||
diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile
|
||||
index 86b2b57..89dbf38 100644
|
||||
--- a/drivers/hid/Makefile
|
||||
+++ b/drivers/hid/Makefile
|
||||
@@ -88,6 +88,7 @@ obj-$(CONFIG_HID_SAMSUNG) += hid-samsung.o
|
||||
obj-$(CONFIG_HID_SMARTJOYPLUS) += hid-sjoy.o
|
||||
obj-$(CONFIG_HID_SONY) += hid-sony.o
|
||||
obj-$(CONFIG_HID_SPEEDLINK) += hid-speedlink.o
|
||||
+obj-$(CONFIG_HID_SPINELPLUS) += hid-spinelplus.o
|
||||
obj-$(CONFIG_HID_STEELSERIES) += hid-steelseries.o
|
||||
obj-$(CONFIG_HID_SUNPLUS) += hid-sunplus.o
|
||||
obj-$(CONFIG_HID_GREENASIA) += hid-gaff.o
|
||||
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
|
||||
index 2b89c70..c83cfdc 100644
|
||||
--- a/drivers/hid/hid-core.c
|
||||
+++ b/drivers/hid/hid-core.c
|
||||
@@ -2014,6 +2014,10 @@ static const struct hid_device_id hid_have_special_driver[] = {
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_WKB2000) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, USB_DEVICE_ID_PENMOUNT_6000) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE) },
|
||||
@ -11,25 +41,28 @@ diff -Naur linux-3.19/drivers/hid/hid-core.c linux-3.19.patch/drivers/hid/hid-co
|
||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_PHILIPS, USB_DEVICE_ID_PHILIPS_SPINEL_PLUS_4) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, HID_ANY_ID) },
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_KEYBOARD) },
|
||||
#if IS_ENABLED(CONFIG_HID_ROCCAT)
|
||||
diff -Naur linux-3.19/drivers/hid/hid-ids.h linux-3.19.patch/drivers/hid/hid-ids.h
|
||||
--- linux-3.19/drivers/hid/hid-ids.h 2015-02-09 03:54:22.000000000 +0100
|
||||
+++ linux-3.19.patch/drivers/hid/hid-ids.h 2015-02-11 00:04:45.885977057 +0100
|
||||
@@ -743,6 +743,10 @@
|
||||
|
||||
{ HID_USB_DEVICE(USB_VENDOR_ID_RISO_KAGAKU, USB_DEVICE_ID_RI_KA_WEBMAIL) },
|
||||
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
|
||||
index 9845189..e016cd1 100644
|
||||
--- a/drivers/hid/hid-ids.h
|
||||
+++ b/drivers/hid/hid-ids.h
|
||||
@@ -813,6 +813,10 @@
|
||||
|
||||
#define USB_VENDOR_ID_PHILIPS 0x0471
|
||||
#define USB_DEVICE_ID_PHILIPS_IEEE802154_DONGLE 0x0617
|
||||
+#define USB_DEVICE_ID_PHILIPS_SPINEL_PLUS_1 0x206c
|
||||
+#define USB_DEVICE_ID_PHILIPS_SPINEL_PLUS_2 0x20cc
|
||||
+#define USB_DEVICE_ID_PHILIPS_SPINEL_PLUS_3 0x0613
|
||||
+#define USB_DEVICE_ID_PHILIPS_SPINEL_PLUS_4 0x2168
|
||||
|
||||
|
||||
#define USB_VENDOR_ID_PI_ENGINEERING 0x05f3
|
||||
#define USB_DEVICE_ID_PI_ENGINEERING_VEC_USB_FOOTPEDAL 0xff
|
||||
diff -Naur linux-3.19/drivers/hid/hid-spinelplus.c linux-3.19.patch/drivers/hid/hid-spinelplus.c
|
||||
--- linux-3.19/drivers/hid/hid-spinelplus.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ linux-3.19.patch/drivers/hid/hid-spinelplus.c 2015-02-11 00:04:45.886977059 +0100
|
||||
@@ -0,0 +1,104 @@
|
||||
diff --git a/drivers/hid/hid-spinelplus.c b/drivers/hid/hid-spinelplus.c
|
||||
new file mode 100644
|
||||
index 0000000..381c7b3
|
||||
--- /dev/null
|
||||
+++ b/drivers/hid/hid-spinelplus.c
|
||||
@@ -0,0 +1,95 @@
|
||||
+/*
|
||||
+ * HID driver for "PHILIPS MCE USB IR Receiver- Spinel plus" remotes
|
||||
+ *
|
||||
@ -122,43 +155,6 @@ diff -Naur linux-3.19/drivers/hid/hid-spinelplus.c linux-3.19.patch/drivers/hid/
|
||||
+ .probe = spinelplus_probe,
|
||||
+};
|
||||
+
|
||||
+static int __init spinelplus_init(void)
|
||||
+{
|
||||
+ return hid_register_driver(&spinelplus_driver);
|
||||
+}
|
||||
+module_hid_driver(spinelplus_driver);
|
||||
+
|
||||
+static void __exit spinelplus_exit(void)
|
||||
+{
|
||||
+ hid_unregister_driver(&spinelplus_driver);
|
||||
+}
|
||||
+
|
||||
+module_init(spinelplus_init);
|
||||
+module_exit(spinelplus_exit);
|
||||
+MODULE_LICENSE("GPL");
|
||||
diff -Naur linux-3.19/drivers/hid/Kconfig linux-3.19.patch/drivers/hid/Kconfig
|
||||
--- linux-3.19/drivers/hid/Kconfig 2015-02-09 03:54:22.000000000 +0100
|
||||
+++ linux-3.19.patch/drivers/hid/Kconfig 2015-02-11 00:04:45.886977059 +0100
|
||||
@@ -702,6 +702,12 @@
|
||||
---help---
|
||||
Support for Steelseries SRW-S1 steering wheel
|
||||
|
||||
+config HID_SPINELPLUS
|
||||
+ tristate "Spinel Plus remote control"
|
||||
+ depends on USB_HID
|
||||
+ ---help---
|
||||
+ Say Y here if you have a Spinel Plus (0471:206c/20cc/0613/2168) remote
|
||||
+
|
||||
config HID_SUNPLUS
|
||||
tristate "Sunplus wireless desktop"
|
||||
depends on HID
|
||||
diff -Naur linux-3.19/drivers/hid/Makefile linux-3.19.patch/drivers/hid/Makefile
|
||||
--- linux-3.19/drivers/hid/Makefile 2015-02-09 03:54:22.000000000 +0100
|
||||
+++ linux-3.19.patch/drivers/hid/Makefile 2015-02-11 00:04:45.886977059 +0100
|
||||
@@ -107,6 +107,7 @@
|
||||
obj-$(CONFIG_HID_SMARTJOYPLUS) += hid-sjoy.o
|
||||
obj-$(CONFIG_HID_SONY) += hid-sony.o
|
||||
obj-$(CONFIG_HID_SPEEDLINK) += hid-speedlink.o
|
||||
+obj-$(CONFIG_HID_SPINELPLUS) += hid-spinelplus.o
|
||||
obj-$(CONFIG_HID_STEELSERIES) += hid-steelseries.o
|
||||
obj-$(CONFIG_HID_SUNPLUS) += hid-sunplus.o
|
||||
obj-$(CONFIG_HID_GREENASIA) += hid-gaff.o
|
||||
|
@ -0,0 +1,38 @@
|
||||
diff --git a/drivers/media/rc/rc-main.c b/drivers/media/rc/rc-main.c
|
||||
index d845336..a89d7bd 100644
|
||||
--- a/drivers/media/rc/rc-main.c
|
||||
+++ b/drivers/media/rc/rc-main.c
|
||||
@@ -1699,6 +1699,16 @@ static int rc_setup_rx_device(struct rc_dev *dev)
|
||||
if (dev->close)
|
||||
dev->input_dev->close = ir_close;
|
||||
|
||||
+ dev->input_dev->dev.parent = &dev->dev;
|
||||
+ memcpy(&dev->input_dev->id, &dev->input_id, sizeof(dev->input_id));
|
||||
+ dev->input_dev->phys = dev->input_phys;
|
||||
+ dev->input_dev->name = dev->input_name;
|
||||
+
|
||||
+ /* rc_open will be called here */
|
||||
+ rc = input_register_device(dev->input_dev);
|
||||
+ if (rc)
|
||||
+ goto out_table;
|
||||
+
|
||||
/*
|
||||
* Default delay of 250ms is too short for some protocols, especially
|
||||
* since the timeout is currently set to 250ms. Increase it to 500ms,
|
||||
@@ -1714,16 +1724,6 @@ static int rc_setup_rx_device(struct rc_dev *dev)
|
||||
*/
|
||||
dev->input_dev->rep[REP_PERIOD] = 125;
|
||||
|
||||
- dev->input_dev->dev.parent = &dev->dev;
|
||||
- memcpy(&dev->input_dev->id, &dev->input_id, sizeof(dev->input_id));
|
||||
- dev->input_dev->phys = dev->input_phys;
|
||||
- dev->input_dev->name = dev->input_name;
|
||||
-
|
||||
- /* rc_open will be called here */
|
||||
- rc = input_register_device(dev->input_dev);
|
||||
- if (rc)
|
||||
- goto out_table;
|
||||
-
|
||||
return 0;
|
||||
|
||||
out_table:
|
@ -1,89 +1,3 @@
|
||||
From 0db9810b18ffc46709ad00831c426712d5489aea Mon Sep 17 00:00:00 2001
|
||||
From: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Date: Sat, 13 Aug 2016 21:32:17 +0100
|
||||
Subject: [PATCH 1/2] drm/i915: Show RPS autotuning thresholds along waitboost
|
||||
|
||||
---
|
||||
drivers/gpu/drm/i915/i915_debugfs.c | 62 +++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 62 insertions(+)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
|
||||
index 1035468..2cff44a 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_debugfs.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
|
||||
@@ -2434,6 +2434,68 @@ static int i915_rps_boost_info(struct seq_file *m, void *data)
|
||||
spin_unlock(&dev_priv->rps.client_lock);
|
||||
mutex_unlock(&dev->filelist_mutex);
|
||||
|
||||
+ if (INTEL_INFO(dev)->gen >= 6) {
|
||||
+ u32 rpmodectl, rpinclimit, rpdeclimit;
|
||||
+ u32 rpstat, cagf;
|
||||
+ u32 rpupei, rpcurup, rpprevup;
|
||||
+ u32 rpdownei, rpcurdown, rpprevdown;
|
||||
+
|
||||
+ intel_uncore_forcewake_get(dev_priv, FORCEWAKE_ALL);
|
||||
+
|
||||
+ rpmodectl = I915_READ(GEN6_RP_CONTROL);
|
||||
+ rpinclimit = I915_READ(GEN6_RP_UP_THRESHOLD);
|
||||
+ rpdeclimit = I915_READ(GEN6_RP_DOWN_THRESHOLD);
|
||||
+
|
||||
+ rpstat = I915_READ(GEN6_RPSTAT1);
|
||||
+ rpupei = I915_READ(GEN6_RP_CUR_UP_EI) & GEN6_CURICONT_MASK;
|
||||
+ rpcurup = I915_READ(GEN6_RP_CUR_UP) & GEN6_CURBSYTAVG_MASK;
|
||||
+ rpprevup = I915_READ(GEN6_RP_PREV_UP) & GEN6_CURBSYTAVG_MASK;
|
||||
+ rpdownei = I915_READ(GEN6_RP_CUR_DOWN_EI) & GEN6_CURIAVG_MASK;
|
||||
+ rpcurdown = I915_READ(GEN6_RP_CUR_DOWN) & GEN6_CURBSYTAVG_MASK;
|
||||
+ rpprevdown = I915_READ(GEN6_RP_PREV_DOWN) & GEN6_CURBSYTAVG_MASK;
|
||||
+ intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
|
||||
+
|
||||
+ if (IS_GEN9(dev))
|
||||
+ cagf = (rpstat & GEN9_CAGF_MASK) >> GEN9_CAGF_SHIFT;
|
||||
+ else if (IS_HASWELL(dev) || IS_BROADWELL(dev))
|
||||
+ cagf = (rpstat & HSW_CAGF_MASK) >> HSW_CAGF_SHIFT;
|
||||
+ else
|
||||
+ cagf = (rpstat & GEN6_CAGF_MASK) >> GEN6_CAGF_SHIFT;
|
||||
+ cagf = intel_gpu_freq(dev_priv, cagf);
|
||||
+
|
||||
+
|
||||
+ seq_printf(m, "RP CUR UP EI: %d (%dus)\n",
|
||||
+ rpupei, GT_PM_INTERVAL_TO_US(dev_priv, rpupei));
|
||||
+ seq_printf(m, "RP CUR UP: %d (%dus)\n",
|
||||
+ rpcurup, GT_PM_INTERVAL_TO_US(dev_priv, rpcurup));
|
||||
+ seq_printf(m, "RP PREV UP: %d (%dus)\n",
|
||||
+ rpprevup, GT_PM_INTERVAL_TO_US(dev_priv, rpprevup));
|
||||
+ seq_printf(m, "Up threshold: %d%%\n",
|
||||
+ dev_priv->rps.up_threshold);
|
||||
+
|
||||
+ seq_printf(m, "RP CUR DOWN EI: %d (%dus)\n",
|
||||
+ rpdownei, GT_PM_INTERVAL_TO_US(dev_priv, rpdownei));
|
||||
+ seq_printf(m, "RP CUR DOWN: %d (%dus)\n",
|
||||
+ rpcurdown, GT_PM_INTERVAL_TO_US(dev_priv, rpcurdown));
|
||||
+ seq_printf(m, "RP PREV DOWN: %d (%dus)\n",
|
||||
+ rpprevdown, GT_PM_INTERVAL_TO_US(dev_priv, rpprevdown));
|
||||
+ seq_printf(m, "Down threshold: %d%%\n",
|
||||
+ dev_priv->rps.down_threshold);
|
||||
+
|
||||
+ seq_printf(m, "Current freq: %d MHz\n",
|
||||
+ intel_gpu_freq(dev_priv, dev_priv->rps.cur_freq));
|
||||
+ seq_printf(m, "Actual freq: %d MHz\n", cagf);
|
||||
+ seq_printf(m, "Idle freq: %d MHz\n",
|
||||
+ intel_gpu_freq(dev_priv, dev_priv->rps.idle_freq));
|
||||
+ seq_printf(m, "Min freq: %d MHz\n",
|
||||
+ intel_gpu_freq(dev_priv, dev_priv->rps.min_freq));
|
||||
+ seq_printf(m, "Max freq: %d MHz\n",
|
||||
+ intel_gpu_freq(dev_priv, dev_priv->rps.max_freq));
|
||||
+ seq_printf(m,
|
||||
+ "efficient (RPe) frequency: %d MHz\n",
|
||||
+ intel_gpu_freq(dev_priv, dev_priv->rps.efficient_freq));
|
||||
+ }
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
||||
From d77c081cd5ea0d278b314ee2043556d2bd9aacaf Mon Sep 17 00:00:00 2001
|
||||
From: fritsch <peter.fruehberger@gmail.com>
|
||||
Date: Sat, 13 Aug 2016 22:56:37 +0200
|
||||
|
@ -1,20 +1,20 @@
|
||||
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
|
||||
index f68c789..a6b6dfe 100644
|
||||
index 0a4b42d..b3aa01e 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_drv.h
|
||||
+++ b/drivers/gpu/drm/i915/i915_drv.h
|
||||
@@ -3948,6 +3948,7 @@ __raw_write(64, q)
|
||||
@@ -3896,6 +3896,7 @@ __raw_write(64, q)
|
||||
#define INTEL_BROADCAST_RGB_AUTO 0
|
||||
#define INTEL_BROADCAST_RGB_FULL 1
|
||||
#define INTEL_BROADCAST_RGB_LIMITED 2
|
||||
+#define INTEL_BROADCAST_RGB_VIDEO 3
|
||||
|
||||
static inline i915_reg_t i915_vgacntrl_reg(struct drm_device *dev)
|
||||
static inline i915_reg_t i915_vgacntrl_reg(struct drm_i915_private *dev_priv)
|
||||
{
|
||||
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
|
||||
index ff399b9..f2ac0ff 100644
|
||||
index 344f238..1143551 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_drv.h
|
||||
+++ b/drivers/gpu/drm/i915/intel_drv.h
|
||||
@@ -522,6 +522,13 @@ struct intel_crtc_state {
|
||||
@@ -563,6 +563,13 @@ struct intel_crtc_state {
|
||||
*/
|
||||
bool limited_color_range;
|
||||
|
||||
@ -28,7 +28,7 @@ index ff399b9..f2ac0ff 100644
|
||||
/* Bitmask of encoder types (enum intel_output_type)
|
||||
* driven by the pipe.
|
||||
*/
|
||||
@@ -805,6 +812,7 @@ struct intel_hdmi {
|
||||
@@ -840,6 +847,7 @@ struct intel_hdmi {
|
||||
} dp_dual_mode;
|
||||
bool limited_color_range;
|
||||
bool color_range_auto;
|
||||
@ -37,20 +37,19 @@ index ff399b9..f2ac0ff 100644
|
||||
bool has_audio;
|
||||
enum hdmi_force_audio force_audio;
|
||||
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
|
||||
index 4df9f38..8b64508 100644
|
||||
index ebae2bd..ed925e5 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_hdmi.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
|
||||
@@ -462,7 +462,8 @@ static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder,
|
||||
@@ -469,7 +469,7 @@ static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder,
|
||||
}
|
||||
|
||||
if (intel_hdmi->rgb_quant_range_selectable) {
|
||||
- if (intel_crtc->config->limited_color_range)
|
||||
+ if (intel_crtc->config->limited_color_range ||
|
||||
+ intel_crtc->config->video_color_range)
|
||||
frame.avi.quantization_range =
|
||||
HDMI_QUANTIZATION_RANGE_LIMITED;
|
||||
else
|
||||
@@ -1308,6 +1309,8 @@ bool intel_hdmi_compute_config(struct intel_encoder *encoder,
|
||||
drm_hdmi_avi_infoframe_quant_range(&frame.avi, adjusted_mode,
|
||||
- crtc_state->limited_color_range ?
|
||||
+ (crtc_state->limited_color_range || crtc_state->video_color_range) ?
|
||||
HDMI_QUANTIZATION_RANGE_LIMITED :
|
||||
HDMI_QUANTIZATION_RANGE_FULL,
|
||||
intel_hdmi->rgb_quant_range_selectable);
|
||||
@@ -1336,6 +1336,8 @@ bool intel_hdmi_compute_config(struct intel_encoder *encoder,
|
||||
pipe_config->limited_color_range =
|
||||
intel_hdmi->limited_color_range;
|
||||
}
|
||||
@ -59,7 +58,7 @@ index 4df9f38..8b64508 100644
|
||||
|
||||
if (adjusted_mode->flags & DRM_MODE_FLAG_DBLCLK) {
|
||||
pipe_config->pixel_multiplier = 2;
|
||||
@@ -1588,25 +1591,35 @@ intel_hdmi_set_property(struct drm_connector *connector,
|
||||
@@ -1593,25 +1595,35 @@ intel_hdmi_set_property(struct drm_connector *connector,
|
||||
if (property == dev_priv->broadcast_rgb_property) {
|
||||
bool old_auto = intel_hdmi->color_range_auto;
|
||||
bool old_range = intel_hdmi->limited_color_range;
|
||||
@ -97,10 +96,10 @@ index 4df9f38..8b64508 100644
|
||||
|
||||
goto done;
|
||||
diff --git a/drivers/gpu/drm/i915/intel_modes.c b/drivers/gpu/drm/i915/intel_modes.c
|
||||
index f2584d0..5a6f853 100644
|
||||
index 951e834..d817558 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_modes.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_modes.c
|
||||
@@ -103,6 +103,7 @@ static const struct drm_prop_enum_list broadcast_rgb_names[] = {
|
||||
@@ -102,6 +102,7 @@ static const struct drm_prop_enum_list broadcast_rgb_names[] = {
|
||||
{ INTEL_BROADCAST_RGB_AUTO, "Automatic" },
|
||||
{ INTEL_BROADCAST_RGB_FULL, "Full" },
|
||||
{ INTEL_BROADCAST_RGB_LIMITED, "Limited 16:235" },
|
||||
|
@ -8,10 +8,10 @@ Prevents a lot of pointless hanging at boot on some devices.
|
||||
drivers/mmc/card/block.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
|
||||
diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
|
||||
index 4409d79..56df902 100644
|
||||
--- a/drivers/mmc/card/block.c
|
||||
+++ b/drivers/mmc/card/block.c
|
||||
--- a/drivers/mmc/core/block.c
|
||||
+++ b/drivers/mmc/core/block.c
|
||||
@@ -2254,7 +2254,7 @@ static int mmc_blk_alloc_parts(struct mmc_card *card, struct mmc_blk_data *md)
|
||||
return 0;
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="bcm2835-bootloader"
|
||||
PKG_VERSION="856c68d"
|
||||
PKG_VERSION="6ba0dab"
|
||||
PKG_ARCH="arm"
|
||||
PKG_LICENSE="nonfree"
|
||||
PKG_SITE="http://www.broadcom.com"
|
||||
|
@ -0,0 +1,114 @@
|
||||
diff -Naur a/kernel/nv-linux.h b/kernel/nv-linux.h
|
||||
--- a/kernel/nv-linux.h
|
||||
+++ b/kernel/nv-linux.h
|
||||
@@ -2082,6 +2082,8 @@ static inline NvU64 nv_node_end_pfn(int nid)
|
||||
* 2016 Dec 14:5b56d49fc31dbb0487e14ead790fc81ca9fb2c99
|
||||
*/
|
||||
|
||||
+#include <linux/version.h>
|
||||
+
|
||||
#if defined(NV_GET_USER_PAGES_REMOTE_PRESENT)
|
||||
#if defined(NV_GET_USER_PAGES_HAS_WRITE_AND_FORCE_ARGS)
|
||||
#define NV_GET_USER_PAGES get_user_pages
|
||||
@@ -2129,8 +2131,13 @@ static inline NvU64 nv_node_end_pfn(int nid)
|
||||
|
||||
#else
|
||||
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
|
||||
return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
|
||||
pages, vmas);
|
||||
+#else
|
||||
+ return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
|
||||
+ pages, vmas, NULL);
|
||||
+#endif
|
||||
|
||||
#endif
|
||||
|
||||
diff -Naur a/kernel/nv-pat.c b/kernel/nv-pat.c
|
||||
--- a/kernel/nv-pat.c
|
||||
+++ b/kernel/nv-pat.c
|
||||
@@ -203,6 +203,7 @@ void nv_disable_pat_support(void)
|
||||
}
|
||||
|
||||
#if defined(NV_ENABLE_PAT_SUPPORT) && defined(NV_ENABLE_HOTPLUG_CPU)
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
|
||||
static int
|
||||
nvidia_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu)
|
||||
{
|
||||
@@ -234,6 +235,34 @@ static struct notifier_block nv_hotcpu_nfb = {
|
||||
.notifier_call = nvidia_cpu_callback,
|
||||
.priority = 0
|
||||
};
|
||||
+#else
|
||||
+static int nvidia_cpu_online(unsigned int hcpu)
|
||||
+{
|
||||
+ unsigned int cpu = get_cpu();
|
||||
+ if (cpu == hcpu)
|
||||
+ nv_setup_pat_entries(NULL);
|
||||
+ else
|
||||
+ NV_SMP_CALL_FUNCTION(nv_setup_pat_entries, (void *)(long int)hcpu, 1);
|
||||
+
|
||||
+ put_cpu();
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int nvidia_cpu_down_prep(unsigned int hcpu)
|
||||
+{
|
||||
+ unsigned int cpu = get_cpu();
|
||||
+ if (cpu == hcpu)
|
||||
+ nv_restore_pat_entries(NULL);
|
||||
+ else
|
||||
+ NV_SMP_CALL_FUNCTION(nv_restore_pat_entries, (void *)(long int)hcpu, 1);
|
||||
+
|
||||
+ put_cpu();
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
#endif
|
||||
|
||||
int nv_init_pat_support(nv_stack_t *sp)
|
||||
@@ -255,7 +284,14 @@ int nv_init_pat_support(nv_stack_t *sp)
|
||||
#if defined(NV_ENABLE_PAT_SUPPORT) && defined(NV_ENABLE_HOTPLUG_CPU)
|
||||
if (nv_pat_mode == NV_PAT_MODE_BUILTIN)
|
||||
{
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
|
||||
if (register_hotcpu_notifier(&nv_hotcpu_nfb) != 0)
|
||||
+#else
|
||||
+ if (cpuhp_setup_state(CPUHP_AP_ONLINE_DYN,
|
||||
+ "gpu/nvidia:online",
|
||||
+ nvidia_cpu_online,
|
||||
+ nvidia_cpu_down_prep) != 0)
|
||||
+#endif
|
||||
{
|
||||
nv_disable_pat_support();
|
||||
nv_printf(NV_DBG_ERRORS,
|
||||
@@ -280,7 +316,11 @@ void nv_teardown_pat_support(void)
|
||||
{
|
||||
nv_disable_pat_support();
|
||||
#if defined(NV_ENABLE_PAT_SUPPORT) && defined(NV_ENABLE_HOTPLUG_CPU)
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
|
||||
unregister_hotcpu_notifier(&nv_hotcpu_nfb);
|
||||
+#else
|
||||
+ cpuhp_remove_state_nocalls(CPUHP_AP_ONLINE_DYN);
|
||||
+#endif
|
||||
#endif
|
||||
}
|
||||
}
|
||||
diff -Naur a/kernel/uvm/nvidia_uvm_lite.c b/kernel/uvm/nvidia_uvm_lite.c
|
||||
--- a/kernel/uvm/nvidia_uvm_lite.c
|
||||
+++ b/kernel/uvm/nvidia_uvm_lite.c
|
||||
@@ -820,7 +820,11 @@ done:
|
||||
#if defined(NV_VM_OPERATIONS_STRUCT_HAS_FAULT)
|
||||
int _fault(struct vm_area_struct *vma, struct vm_fault *vmf)
|
||||
{
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
|
||||
unsigned long vaddr = (unsigned long)vmf->virtual_address;
|
||||
+#else
|
||||
+ unsigned long vaddr = (unsigned long)vmf->address;
|
||||
+#endif
|
||||
struct page *page = NULL;
|
||||
int retval;
|
||||
|
@ -0,0 +1,89 @@
|
||||
diff -Naur a/kernel/nv-drm.c b/kernel/nv-drm.c
|
||||
--- a/kernel/nv-drm.c 2017-03-31 03:42:21.000000000 +0200
|
||||
+++ b/kernel/nv-drm.c 2017-04-06 23:53:14.273356795 +0200
|
||||
@@ -48,7 +48,7 @@
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
-static int nv_drm_unload(
|
||||
+static void nv_drm_unload(
|
||||
struct drm_device *dev
|
||||
)
|
||||
{
|
||||
@@ -60,7 +60,7 @@
|
||||
{
|
||||
BUG_ON(nvl->drm != dev);
|
||||
nvl->drm = NULL;
|
||||
- return 0;
|
||||
+ return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
- return -ENODEV;
|
||||
+ return;
|
||||
}
|
||||
|
||||
static void nv_gem_free(
|
||||
diff -Naur a/kernel/uvm/nvidia_uvm_linux.h b/kernel/uvm/nvidia_uvm_linux.h
|
||||
--- a/kernel/uvm/nvidia_uvm_linux.h 2017-03-31 03:42:21.000000000 +0200
|
||||
+++ b/kernel/uvm/nvidia_uvm_linux.h 2017-04-06 23:53:14.273356795 +0200
|
||||
@@ -124,6 +124,7 @@
|
||||
#include <linux/delay.h> /* mdelay, udelay */
|
||||
|
||||
#include <linux/sched.h> /* suser(), capable() replacement */
|
||||
+#include <linux/sched/signal.h>
|
||||
#include <linux/moduleparam.h> /* module_param() */
|
||||
#if !defined(NV_VMWARE)
|
||||
#include <asm/tlbflush.h> /* flush_tlb(), flush_tlb_all() */
|
||||
@@ -362,17 +363,6 @@
|
||||
void address_space_init_once(struct address_space *mapping);
|
||||
#endif
|
||||
|
||||
-#if !defined(NV_FATAL_SIGNAL_PENDING_PRESENT)
|
||||
- static inline int __fatal_signal_pending(struct task_struct *p)
|
||||
- {
|
||||
- return unlikely(sigismember(&p->pending.signal, SIGKILL));
|
||||
- }
|
||||
-
|
||||
- static inline int fatal_signal_pending(struct task_struct *p)
|
||||
- {
|
||||
- return signal_pending(p) && __fatal_signal_pending(p);
|
||||
- }
|
||||
-#endif
|
||||
|
||||
//
|
||||
// Before the current->cred structure was introduced, current->euid,
|
||||
diff -Naur a/kernel/uvm/nvidia_uvm_lite.c b/kernel/uvm/nvidia_uvm_lite.c
|
||||
--- a/kernel/uvm/nvidia_uvm_lite.c 2017-03-31 03:42:21.000000000 +0200
|
||||
+++ b/kernel/uvm/nvidia_uvm_lite.c 2017-04-06 23:53:14.273356795 +0200
|
||||
@@ -818,7 +818,7 @@
|
||||
}
|
||||
|
||||
#if defined(NV_VM_OPERATIONS_STRUCT_HAS_FAULT)
|
||||
-int _fault(struct vm_area_struct *vma, struct vm_fault *vmf)
|
||||
+int _fault(struct vm_fault *vmf)
|
||||
{
|
||||
unsigned long vaddr = (unsigned long)vmf->virtual_address;
|
||||
struct page *page = NULL;
|
||||
@@ -828,7 +828,7 @@
|
||||
struct page *page = NULL;
|
||||
int retval;
|
||||
|
||||
- retval = _fault_common(vma, vaddr, &page, vmf->flags);
|
||||
+ retval = _fault_common(NULL, vaddr, &page, vmf->flags);
|
||||
|
||||
vmf->page = page;
|
||||
|
||||
@@ -866,7 +866,7 @@
|
||||
// it's dealing with anonymous mapping (see handle_pte_fault).
|
||||
//
|
||||
#if defined(NV_VM_OPERATIONS_STRUCT_HAS_FAULT)
|
||||
-int _sigbus_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
|
||||
+int _sigbus_fault(struct vm_fault *vmf)
|
||||
{
|
||||
vmf->page = NULL;
|
||||
return VM_FAULT_SIGBUS;
|
1
packages/x11/driver/xf86-video-nvidia-legacy/udev.d
Symbolic link
1
packages/x11/driver/xf86-video-nvidia-legacy/udev.d
Symbolic link
@ -0,0 +1 @@
|
||||
../xf86-video-nvidia/udev.d/
|
@ -23,10 +23,9 @@ tree = html.fromstring(page.content)
|
||||
# NVIDIA Quadro GPUs = 2
|
||||
# NVIDIA NVS GPUs = 3
|
||||
# NVIDIA Tesla GPUs = 4
|
||||
# NVIDIA GRID GPUs = 5
|
||||
|
||||
ids = []
|
||||
for table in range(1, 6):
|
||||
for table in range(1, 5):
|
||||
ids = ids + tree.xpath('//html/body/div[@class="appendix"]/div[@class="informaltable"][' + str(table) + ']/table/tbody/tr[starts-with(@id, "devid")]/td[2]//text()')
|
||||
|
||||
# If three IDs are listed, the first is the PCI Device ID, the second is the PCI Subsystem Vendor ID, and the third is the PCI Subsystem Device ID.
|
||||
|
@ -163,7 +163,6 @@ ATTRS{device}=="0x1185", GOTO="configure_nvidia"
|
||||
ATTRS{device}=="0x1187", GOTO="configure_nvidia"
|
||||
ATTRS{device}=="0x1188", GOTO="configure_nvidia"
|
||||
ATTRS{device}=="0x1189", GOTO="configure_nvidia"
|
||||
ATTRS{device}=="0x118a", GOTO="configure_nvidia"
|
||||
ATTRS{device}=="0x118e", GOTO="configure_nvidia"
|
||||
ATTRS{device}=="0x118f", GOTO="configure_nvidia"
|
||||
ATTRS{device}=="0x1193", GOTO="configure_nvidia"
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,11 +0,0 @@
|
||||
diff -Naur a/core/rtw_br_ext.c b/core/rtw_br_ext.c
|
||||
--- a/core/rtw_br_ext.c 2013-09-11 05:56:55.000000000 +0200
|
||||
+++ b/core/rtw_br_ext.c 2016-02-10 08:06:48.999417391 +0100
|
||||
@@ -51,6 +51,7 @@
|
||||
#include <linux/icmpv6.h>
|
||||
#include <net/ndisc.h>
|
||||
#include <net/checksum.h>
|
||||
+#include <net/ip6_checksum.h>
|
||||
#endif
|
||||
#endif
|
||||
|
@ -1,11 +0,0 @@
|
||||
diff -Naur a/core/rtw_br_ext.c b/core/rtw_br_ext.c
|
||||
--- a/core/rtw_br_ext.c 2016-01-18 10:56:14.000000000 -0800
|
||||
+++ b/core/rtw_br_ext.c 2016-04-08 00:55:50.276738518 -0700
|
||||
@@ -49,6 +49,7 @@
|
||||
#include <linux/icmpv6.h>
|
||||
#include <net/ndisc.h>
|
||||
#include <net/checksum.h>
|
||||
+#include <net/ip6_checksum.h>
|
||||
#endif
|
||||
#endif
|
||||
|
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm 4.9.24 Kernel Configuration
|
||||
# Linux/arm 4.9.36 Kernel Configuration
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARM_HAS_SG_CHAIN=y
|
||||
@ -2802,6 +2802,7 @@ CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC=m
|
||||
CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC_PLUS=m
|
||||
CONFIG_SND_BCM2708_SOC_FE_PI_AUDIO=m
|
||||
CONFIG_SND_BCM2708_SOC_ALLO_BOSS_DAC=m
|
||||
CONFIG_SND_BCM2708_SOC_ALLO_DIGIONE=m
|
||||
CONFIG_SND_PISOUND=m
|
||||
# CONFIG_SND_DESIGNWARE_I2S is not set
|
||||
|
||||
@ -2996,7 +2997,7 @@ CONFIG_HID_SONY=y
|
||||
CONFIG_SONY_FF=y
|
||||
# CONFIG_HID_SPEEDLINK is not set
|
||||
# CONFIG_HID_STEELSERIES is not set
|
||||
CONFIG_HID_SPINELPLUS=y
|
||||
CONFIG_HID_SPINELPLUS=m
|
||||
CONFIG_HID_SUNPLUS=y
|
||||
CONFIG_HID_RMI=y
|
||||
# CONFIG_HID_GREENASIA is not set
|
||||
|
@ -57,7 +57,7 @@
|
||||
|
||||
# Kernel to use. values can be:
|
||||
# default: default mainline kernel
|
||||
LINUX="default"
|
||||
LINUX="default-rpi"
|
||||
|
||||
# NOOBS supported hex versions (legacy)
|
||||
NOOBS_HEX="2,3,4,5,6,7,8,9,d,e,f,10,11,12,14,19,0092,0093"
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm 4.9.24 Kernel Configuration
|
||||
# Linux/arm 4.9.36 Kernel Configuration
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARM_HAS_SG_CHAIN=y
|
||||
@ -2895,6 +2895,7 @@ CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC=m
|
||||
CONFIG_SND_BCM2708_SOC_ALLO_PIANO_DAC_PLUS=m
|
||||
CONFIG_SND_BCM2708_SOC_FE_PI_AUDIO=m
|
||||
CONFIG_SND_BCM2708_SOC_ALLO_BOSS_DAC=m
|
||||
CONFIG_SND_BCM2708_SOC_ALLO_DIGIONE=m
|
||||
CONFIG_SND_PISOUND=m
|
||||
# CONFIG_SND_DESIGNWARE_I2S is not set
|
||||
|
||||
@ -3089,7 +3090,7 @@ CONFIG_HID_SONY=y
|
||||
CONFIG_SONY_FF=y
|
||||
# CONFIG_HID_SPEEDLINK is not set
|
||||
# CONFIG_HID_STEELSERIES is not set
|
||||
CONFIG_HID_SPINELPLUS=y
|
||||
CONFIG_HID_SPINELPLUS=m
|
||||
CONFIG_HID_SUNPLUS=y
|
||||
CONFIG_HID_RMI=y
|
||||
# CONFIG_HID_GREENASIA is not set
|
||||
|
@ -57,7 +57,7 @@
|
||||
|
||||
# Kernel to use. values can be:
|
||||
# default: default mainline kernel
|
||||
LINUX="default"
|
||||
LINUX="default-rpi"
|
||||
|
||||
# NOOBS supported hex versions (legacy)
|
||||
NOOBS_HEX="1040,1041,2082"
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user