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:
Christian Hewitt 2017-07-13 23:23:32 +04:00 committed by GitHub
commit 01fd0f8a8b
60 changed files with 18447 additions and 12384 deletions

View File

@ -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

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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 */ \

View File

@ -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 */ \

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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"

View File

@ -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);

View File

@ -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;

View File

@ -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"

View File

@ -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);

View File

@ -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;

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -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"

View File

@ -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"
;;

View File

@ -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__

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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");

View File

@ -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

View File

@ -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...
*/

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -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

View File

@ -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" },

View File

@ -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;

View File

@ -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"

View File

@ -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;

View File

@ -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;

View File

@ -0,0 +1 @@
../xf86-video-nvidia/udev.d/

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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