From be05966f716533849935a1dec75c1dba5fe56882 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Sun, 11 Jan 2015 12:34:42 +0100 Subject: [PATCH] linux: update to linux-3.18.2, update RPi support patch, update kernel configs, move patches which still must reworked to the todo folder Signed-off-by: Stephan Raue --- packages/linux/package.mk | 2 +- .../3.17.8/linux-224-tt-ct2-usb-tuners.patch | 1468 --------- ...x-225-dvbt2-support-for-dvbsky-t9580.patch | 137 - .../3.17.8/linux-999.05-upstream-fixes.patch | 32 - .../linux-003-no_dev_console.patch | 0 .../linux-011-intel-force-cs-stall.patch | 0 .../linux-012-intel-fix-ivb-stall.patch | 0 .../linux-052-XBOX_remote_support.patch | 0 .../linux-053-spinelplus-remote-0.2.patch | 0 ...1056c5564eec8a1b169c6e84ff3.6.114c13.patch | 0 ...-add_Formosa_eHome_Infrared_Receiver.patch | 0 ...-add_Adaptec_eHome_Infrared_Receiver.patch | 0 ...tomer-code-restriction-in-rc6-decode.patch | 0 ..._Manufacturing_Inc_Infrared_Receiver.patch | 0 ..._sony-add_autorepeat_for_PS3_remotes.patch | 0 .../linux-058.06-hid_sony-add_SMK_link.patch | 0 .../linux-060-add_AUGUST_DVB-T205.patch | 0 .../linux-062-imon_pad_ignore_diagonal.patch | 0 ...x-203-stb0899_enable_low_symbol_rate.patch | 0 .../{3.17.8 => 3.18.2}/linux-210-dvbsky.patch | 1044 +------ .../linux-211-dvbsky-s950v3-s952v3.patch | 35 +- ...linux-212-mantis_stb0899_faster_lock.patch | 0 .../linux-221-ngene-octopus.patch | 722 +++-- .../linux-222-stb0899_signal_quality.patch | 0 ...-video-artifacts-with-tt-3600-s2-usb.patch | 0 .../linux-226-geniatech-t230-tuner.patch | 0 .../linux-703-macmini2012-ethernet.patch | 0 ...Support-for-Buffalo-WLI-UC-G300HP-V1.patch | 0 .../linux-706-Sitecom-N300.patch | 0 .../linux-900-hide_tsc_error.patch | 0 ...x-950-saa716x_PCIe_interface_chipset.patch | 0 ...utputting-HDMI-audio-before-prepare-.patch | 0 .../linux-995-CX24120-13Z_frontend.patch | 0 ...able-async-suspend-resume-by-default.patch | 0 .../todo}/linux-010-intel-fix-gpu-hang.patch | 0 .../linux-051-ouya_controller_support.patch | 0 .../linux-059-remove_some_xpad_pids-0.2.patch | 0 .../todo/linux-061-valve-xpad-rework.patch | 0 .../linux-701-linksys_aes2500_brcmfmac.patch | 0 projects/Generic/linux/linux.i386.conf | 77 +- projects/Generic/linux/linux.x86_64.conf | 80 +- projects/RPi/linux/linux.arm.conf | 69 +- .../patches/linux/linux-01-RPi_support.patch | 2700 ++++++++++++++--- 43 files changed, 2878 insertions(+), 3488 deletions(-) delete mode 100644 packages/linux/patches/3.17.8/linux-224-tt-ct2-usb-tuners.patch delete mode 100644 packages/linux/patches/3.17.8/linux-225-dvbt2-support-for-dvbsky-t9580.patch delete mode 100644 packages/linux/patches/3.17.8/linux-999.05-upstream-fixes.patch rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-003-no_dev_console.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-011-intel-force-cs-stall.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-012-intel-fix-ivb-stall.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-052-XBOX_remote_support.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-053-spinelplus-remote-0.2.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-054-nuvoton_revert_d7b290a1056c5564eec8a1b169c6e84ff3.6.114c13.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-055-add_Formosa_eHome_Infrared_Receiver.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-056-add_Adaptec_eHome_Infrared_Receiver.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-057-Removed-MCE-customer-code-restriction-in-rc6-decode.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-057-add_SMK_Manufacturing_Inc_Infrared_Receiver.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-058.05-hid_sony-add_autorepeat_for_PS3_remotes.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-058.06-hid_sony-add_SMK_link.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-060-add_AUGUST_DVB-T205.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-062-imon_pad_ignore_diagonal.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-203-stb0899_enable_low_symbol_rate.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-210-dvbsky.patch (84%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-211-dvbsky-s950v3-s952v3.patch (99%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-212-mantis_stb0899_faster_lock.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-221-ngene-octopus.patch (97%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-222-stb0899_signal_quality.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-223-Fix-video-artifacts-with-tt-3600-s2-usb.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-226-geniatech-t230-tuner.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-703-macmini2012-ethernet.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-705-Support-for-Buffalo-WLI-UC-G300HP-V1.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-706-Sitecom-N300.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-900-hide_tsc_error.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-950-saa716x_PCIe_interface_chipset.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-990.06-hda-Avoid-outputting-HDMI-audio-before-prepare-.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-995-CX24120-13Z_frontend.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/linux-999.02-0001-pm-disable-async-suspend-resume-by-default.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2/todo}/linux-010-intel-fix-gpu-hang.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2/todo}/linux-051-ouya_controller_support.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2/todo}/linux-059-remove_some_xpad_pids-0.2.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/todo/linux-061-valve-xpad-rework.patch (100%) rename packages/linux/patches/{3.17.8 => 3.18.2}/todo/linux-701-linksys_aes2500_brcmfmac.patch (100%) diff --git a/packages/linux/package.mk b/packages/linux/package.mk index 3b257fde42..e5bc85c8b7 100644 --- a/packages/linux/package.mk +++ b/packages/linux/package.mk @@ -27,7 +27,7 @@ case "$LINUX" in PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz" ;; *) - PKG_VERSION="3.17.8" + PKG_VERSION="3.18.2" PKG_URL="http://www.kernel.org/pub/linux/kernel/v3.x/$PKG_NAME-$PKG_VERSION.tar.xz" ;; esac diff --git a/packages/linux/patches/3.17.8/linux-224-tt-ct2-usb-tuners.patch b/packages/linux/patches/3.17.8/linux-224-tt-ct2-usb-tuners.patch deleted file mode 100644 index 7c6de1e43b..0000000000 --- a/packages/linux/patches/3.17.8/linux-224-tt-ct2-usb-tuners.patch +++ /dev/null @@ -1,1468 +0,0 @@ -diff -urN a/drivers/media/dvb-core/dvb-usb-ids.h b/drivers/media/dvb-core/dvb-usb-ids.h ---- a/drivers/media/dvb-core/dvb-usb-ids.h 2014-10-15 13:29:30.000000000 +0300 -+++ b/drivers/media/dvb-core/dvb-usb-ids.h 2014-10-27 19:25:27.000000000 +0200 -@@ -245,6 +245,7 @@ - #define USB_PID_TECHNOTREND_CONNECT_S2400_8KEEPROM 0x3009 - #define USB_PID_TECHNOTREND_CONNECT_CT3650 0x300d - #define USB_PID_TECHNOTREND_TVSTICK_CT2_4400 0x3014 -+#define USB_PID_TECHNOTREND_CONNECT_CT2_4650_CI 0x3012 - #define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY 0x005a - #define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY_2 0x0081 - #define USB_PID_TERRATEC_CINERGY_HT_USB_XE 0x0058 -diff -urN a/drivers/media/dvb-frontends/Kconfig b/drivers/media/dvb-frontends/Kconfig ---- a/drivers/media/dvb-frontends/Kconfig 2014-10-27 19:09:11.767386606 +0200 -+++ b/drivers/media/dvb-frontends/Kconfig 2014-10-27 19:18:28.000000000 +0200 -@@ -768,6 +768,13 @@ - depends on DVB_CORE && I2C - default m if !MEDIA_SUBDRV_AUTOSELECT - -+config DVB_SP2 -+ tristate "CIMaX SP2" -+ depends on DVB_CORE && I2C -+ default m if !MEDIA_SUBDRV_AUTOSELECT -+ help -+ CIMaX SP2/SP2HF Common Interface module. -+ - config DVB_LGS8GL5 - tristate "Silicon Legend LGS-8GL5 demodulator (OFDM)" - depends on DVB_CORE && I2C -diff -urN a/drivers/media/dvb-frontends/Makefile b/drivers/media/dvb-frontends/Makefile ---- a/drivers/media/dvb-frontends/Makefile 2014-10-27 19:09:11.767386606 +0200 -+++ b/drivers/media/dvb-frontends/Makefile 2014-10-27 19:19:10.000000000 +0200 -@@ -110,6 +110,7 @@ - obj-$(CONFIG_DVB_TDA18212DD) += tda18212dd.o - obj-$(CONFIG_DVB_CXD2843) += cxd2843.o - obj-$(CONFIG_DVB_A8293) += a8293.o -+obj-$(CONFIG_DVB_SP2) += sp2.o - obj-$(CONFIG_DVB_TDA10071) += tda10071.o - obj-$(CONFIG_DVB_RTL2830) += rtl2830.o - obj-$(CONFIG_DVB_RTL2832) += rtl2832.o -diff -urN a/drivers/media/dvb-frontends/si2168.c b/drivers/media/dvb-frontends/si2168.c ---- a/drivers/media/dvb-frontends/si2168.c 2014-10-15 13:29:30.000000000 +0300 -+++ b/drivers/media/dvb-frontends/si2168.c 2014-10-27 19:15:12.000000000 +0200 -@@ -55,8 +55,7 @@ - break; - } - -- dev_dbg(&s->client->dev, "%s: cmd execution took %d ms\n", -- __func__, -+ dev_dbg(&s->client->dev, "cmd execution took %d ms\n", - jiffies_to_msecs(jiffies) - - (jiffies_to_msecs(timeout) - TIMEOUT)); - -@@ -75,7 +74,7 @@ - - return 0; - err: -- dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret); -+ dev_dbg(&s->client->dev, "failed=%d\n", ret); - return ret; - } - -@@ -150,12 +149,12 @@ - c->cnr.stat[0].scale = FE_SCALE_NOT_AVAILABLE; - } - -- dev_dbg(&s->client->dev, "%s: status=%02x args=%*ph\n", -- __func__, *status, cmd.rlen, cmd.args); -+ dev_dbg(&s->client->dev, "status=%02x args=%*ph\n", -+ *status, cmd.rlen, cmd.args); - - return 0; - err: -- dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret); -+ dev_dbg(&s->client->dev, "failed=%d\n", ret); - return ret; - } - -@@ -168,10 +167,10 @@ - u8 bandwidth, delivery_system; - - dev_dbg(&s->client->dev, -- "%s: delivery_system=%u modulation=%u frequency=%u bandwidth_hz=%u symbol_rate=%u inversion=%u\n", -- __func__, c->delivery_system, c->modulation, -+ "delivery_system=%u modulation=%u frequency=%u bandwidth_hz=%u symbol_rate=%u inversion=%u, stream_id=%d\n", -+ c->delivery_system, c->modulation, - c->frequency, c->bandwidth_hz, c->symbol_rate, -- c->inversion); -+ c->inversion, c->stream_id); - - if (!s->active) { - ret = -EAGAIN; -@@ -235,6 +234,18 @@ - if (ret) - goto err; - -+ if (c->delivery_system == SYS_DVBT2) { -+ /* select PLP */ -+ cmd.args[0] = 0x52; -+ cmd.args[1] = c->stream_id & 0xff; -+ cmd.args[2] = c->stream_id == NO_STREAM_ID_FILTER ? 0 : 1; -+ cmd.wlen = 3; -+ cmd.rlen = 1; -+ ret = si2168_cmd_execute(s, &cmd); -+ if (ret) -+ goto err; -+ } -+ - memcpy(cmd.args, "\x51\x03", 2); - cmd.wlen = 2; - cmd.rlen = 12; -@@ -297,13 +308,6 @@ - if (ret) - goto err; - -- memcpy(cmd.args, "\x14\x00\x01\x10\x16\x00", 6); -- cmd.wlen = 6; -- cmd.rlen = 4; -- ret = si2168_cmd_execute(s, &cmd); -- if (ret) -- goto err; -- - memcpy(cmd.args, "\x14\x00\x09\x10\xe3\x18", 6); - cmd.wlen = 6; - cmd.rlen = 4; -@@ -343,7 +347,7 @@ - - return 0; - err: -- dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret); -+ dev_dbg(&s->client->dev, "failed=%d\n", ret); - return ret; - } - -@@ -357,8 +361,9 @@ - struct si2168_cmd cmd; - unsigned int chip_id; - -- dev_dbg(&s->client->dev, "%s:\n", __func__); -+ dev_dbg(&s->client->dev, "\n"); - -+ /* initialize */ - memcpy(cmd.args, "\xc0\x12\x00\x0c\x00\x0d\x16\x00\x00\x00\x00\x00\x00", 13); - cmd.wlen = 13; - cmd.rlen = 0; -@@ -366,6 +371,26 @@ - if (ret) - goto err; - -+ if (s->fw_loaded) { -+ /* resume */ -+ memcpy(cmd.args, "\xc0\x06\x08\x0f\x00\x20\x21\x01", 8); -+ cmd.wlen = 8; -+ cmd.rlen = 1; -+ ret = si2168_cmd_execute(s, &cmd); -+ if (ret) -+ goto err; -+ -+ memcpy(cmd.args, "\x85", 1); -+ cmd.wlen = 1; -+ cmd.rlen = 1; -+ ret = si2168_cmd_execute(s, &cmd); -+ if (ret) -+ goto err; -+ -+ goto warm; -+ } -+ -+ /* power up */ - memcpy(cmd.args, "\xc0\x06\x01\x0f\x00\x20\x20\x01", 8); - cmd.wlen = 8; - cmd.rlen = 1; -@@ -400,16 +425,16 @@ - break; - default: - dev_err(&s->client->dev, -- "%s: unkown chip version Si21%d-%c%c%c\n", -- KBUILD_MODNAME, cmd.args[2], cmd.args[1], -+ "unknown chip version Si21%d-%c%c%c\n", -+ cmd.args[2], cmd.args[1], - cmd.args[3], cmd.args[4]); - ret = -EINVAL; - goto err; - } - - /* cold state - try to download firmware */ -- dev_info(&s->client->dev, "%s: found a '%s' in cold state\n", -- KBUILD_MODNAME, si2168_ops.info.name); -+ dev_info(&s->client->dev, "found a '%s' in cold state\n", -+ si2168_ops.info.name); - - /* request the firmware, this will block and timeout */ - ret = request_firmware(&fw, fw_file, &s->client->dev); -@@ -422,18 +447,18 @@ - - if (ret == 0) { - dev_notice(&s->client->dev, -- "%s: please install firmware file '%s'\n", -- KBUILD_MODNAME, SI2168_B40_FIRMWARE); -+ "please install firmware file '%s'\n", -+ SI2168_B40_FIRMWARE); - } else { - dev_err(&s->client->dev, -- "%s: firmware file '%s' not found\n", -- KBUILD_MODNAME, fw_file); -+ "firmware file '%s' not found\n", -+ fw_file); - goto err; - } - } - -- dev_info(&s->client->dev, "%s: downloading firmware from file '%s'\n", -- KBUILD_MODNAME, fw_file); -+ dev_info(&s->client->dev, "downloading firmware from file '%s'\n", -+ fw_file); - - for (remaining = fw->size; remaining > 0; remaining -= i2c_wr_max) { - len = remaining; -@@ -446,8 +471,8 @@ - ret = si2168_cmd_execute(s, &cmd); - if (ret) { - dev_err(&s->client->dev, -- "%s: firmware download failed=%d\n", -- KBUILD_MODNAME, ret); -+ "firmware download failed=%d\n", -+ ret); - goto err; - } - } -@@ -462,8 +487,20 @@ - if (ret) - goto err; - -- dev_info(&s->client->dev, "%s: found a '%s' in warm state\n", -- KBUILD_MODNAME, si2168_ops.info.name); -+ /* set ts mode */ -+ memcpy(cmd.args, "\x14\x00\x01\x10\x10\x00", 6); -+ cmd.args[4] |= s->ts_mode; -+ cmd.wlen = 6; -+ cmd.rlen = 4; -+ ret = si2168_cmd_execute(s, &cmd); -+ if (ret) -+ goto err; -+ -+ s->fw_loaded = true; -+ -+warm: -+ dev_info(&s->client->dev, "found a '%s' in warm state\n", -+ si2168_ops.info.name); - - s->active = true; - -@@ -472,7 +509,7 @@ - if (fw) - release_firmware(fw); - -- dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret); -+ dev_dbg(&s->client->dev, "failed=%d\n", ret); - return ret; - } - -@@ -482,7 +519,7 @@ - int ret; - struct si2168_cmd cmd; - -- dev_dbg(&s->client->dev, "%s:\n", __func__); -+ dev_dbg(&s->client->dev, "\n"); - - s->active = false; - -@@ -495,7 +532,7 @@ - - return 0; - err: -- dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret); -+ dev_dbg(&s->client->dev, "failed=%d\n", ret); - return ret; - } - -@@ -528,8 +565,7 @@ - /* open tuner I2C gate */ - ret = __i2c_transfer(s->client->adapter, &gate_open_msg, 1); - if (ret != 1) { -- dev_warn(&s->client->dev, "%s: i2c write failed=%d\n", -- KBUILD_MODNAME, ret); -+ dev_warn(&s->client->dev, "i2c write failed=%d\n", ret); - if (ret >= 0) - ret = -EREMOTEIO; - } else { -@@ -553,8 +589,7 @@ - /* close tuner I2C gate */ - ret = __i2c_transfer(s->client->adapter, &gate_close_msg, 1); - if (ret != 1) { -- dev_warn(&s->client->dev, "%s: i2c write failed=%d\n", -- KBUILD_MODNAME, ret); -+ dev_warn(&s->client->dev, "i2c write failed=%d\n", ret); - if (ret >= 0) - ret = -EREMOTEIO; - } else { -@@ -587,7 +622,8 @@ - FE_CAN_GUARD_INTERVAL_AUTO | - FE_CAN_HIERARCHY_AUTO | - FE_CAN_MUTE_TS | -- FE_CAN_2G_MODULATION -+ FE_CAN_2G_MODULATION | -+ FE_CAN_MULTISTREAM - }, - - .get_tune_settings = si2168_get_tune_settings, -@@ -607,12 +643,12 @@ - struct si2168 *s; - int ret; - -- dev_dbg(&client->dev, "%s:\n", __func__); -+ dev_dbg(&client->dev, "\n"); - - s = kzalloc(sizeof(struct si2168), GFP_KERNEL); - if (!s) { - ret = -ENOMEM; -- dev_err(&client->dev, "%s: kzalloc() failed\n", KBUILD_MODNAME); -+ dev_err(&client->dev, "kzalloc() failed\n"); - goto err; - } - -@@ -633,16 +669,17 @@ - - *config->i2c_adapter = s->adapter; - *config->fe = &s->fe; -+ s->ts_mode = config->ts_mode; -+ s->fw_loaded = false; - - i2c_set_clientdata(client, s); - - dev_info(&s->client->dev, -- "%s: Silicon Labs Si2168 successfully attached\n", -- KBUILD_MODNAME); -+ "Silicon Labs Si2168 successfully attached\n"); - return 0; - err: - kfree(s); -- dev_dbg(&client->dev, "%s: failed=%d\n", __func__, ret); -+ dev_dbg(&client->dev, "failed=%d\n", ret); - return ret; - } - -@@ -650,7 +687,7 @@ - { - struct si2168 *s = i2c_get_clientdata(client); - -- dev_dbg(&client->dev, "%s:\n", __func__); -+ dev_dbg(&client->dev, "\n"); - - i2c_del_mux_adapter(s->adapter); - -diff -urN a/drivers/media/dvb-frontends/si2168.h b/drivers/media/dvb-frontends/si2168.h ---- a/drivers/media/dvb-frontends/si2168.h 2014-10-15 13:29:30.000000000 +0300 -+++ b/drivers/media/dvb-frontends/si2168.h 2014-10-27 19:15:08.000000000 +0200 -@@ -34,6 +34,12 @@ - * returned by driver - */ - struct i2c_adapter **i2c_adapter; -+ -+ /* TS mode */ -+ u8 ts_mode; - }; - -+#define SI2168_TS_PARALLEL 0x06 -+#define SI2168_TS_SERIAL 0x03 -+ - #endif -diff -urN a/drivers/media/dvb-frontends/si2168_priv.h b/drivers/media/dvb-frontends/si2168_priv.h ---- a/drivers/media/dvb-frontends/si2168_priv.h 2014-10-15 13:29:30.000000000 +0300 -+++ b/drivers/media/dvb-frontends/si2168_priv.h 2014-10-27 19:15:20.000000000 +0200 -@@ -36,6 +36,8 @@ - fe_delivery_system_t delivery_system; - fe_status_t fe_status; - bool active; -+ bool fw_loaded; -+ u8 ts_mode; - }; - - /* firmare command struct */ -diff -urN a/drivers/media/dvb-frontends/sp2.c b/drivers/media/dvb-frontends/sp2.c ---- a/drivers/media/dvb-frontends/sp2.c 1970-01-01 02:00:00.000000000 +0200 -+++ b/drivers/media/dvb-frontends/sp2.c 2014-10-27 19:27:47.000000000 +0200 -@@ -0,0 +1,441 @@ -+/* -+ * CIMaX SP2/SP2HF (Atmel T90FJR) CI driver -+ * -+ * Copyright (C) 2014 Olli Salonen -+ * -+ * Heavily based on CIMax2(R) SP2 driver in conjunction with NetUp Dual -+ * DVB-S2 CI card (cimax2) with following copyrights: -+ * -+ * Copyright (C) 2009 NetUP Inc. -+ * Copyright (C) 2009 Igor M. Liplianin -+ * Copyright (C) 2009 Abylay Ospan -+ * -+ * 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. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ */ -+ -+#include "sp2_priv.h" -+ -+static int sp2_read_i2c(struct sp2 *s, u8 reg, u8 *buf, int len) -+{ -+ int ret; -+ struct i2c_client *client = s->client; -+ struct i2c_adapter *adap = client->adapter; -+ struct i2c_msg msg[] = { -+ { -+ .addr = client->addr, -+ .flags = 0, -+ .buf = ®, -+ .len = 1 -+ }, { -+ .addr = client->addr, -+ .flags = I2C_M_RD, -+ .buf = buf, -+ .len = len -+ } -+ }; -+ -+ ret = i2c_transfer(adap, msg, 2); -+ -+ if (ret != 2) { -+ dev_err(&client->dev, "i2c read error, reg = 0x%02x, status = %d\n", -+ reg, ret); -+ if (ret < 0) -+ return ret; -+ else -+ return -EIO; -+ } -+ -+ dev_dbg(&s->client->dev, "addr=0x%04x, reg = 0x%02x, data = %02x\n", -+ client->addr, reg, buf[0]); -+ -+ return 0; -+} -+ -+static int sp2_write_i2c(struct sp2 *s, u8 reg, u8 *buf, int len) -+{ -+ int ret; -+ u8 buffer[35]; -+ struct i2c_client *client = s->client; -+ struct i2c_adapter *adap = client->adapter; -+ struct i2c_msg msg = { -+ .addr = client->addr, -+ .flags = 0, -+ .buf = &buffer[0], -+ .len = len + 1 -+ }; -+ -+ if ((len + 1) > sizeof(buffer)) { -+ dev_err(&client->dev, "i2c wr reg=%02x: len=%d is too big!\n", -+ reg, len); -+ return -EINVAL; -+ } -+ -+ buffer[0] = reg; -+ memcpy(&buffer[1], buf, len); -+ -+ ret = i2c_transfer(adap, &msg, 1); -+ -+ if (ret != 1) { -+ dev_err(&client->dev, "i2c write error, reg = 0x%02x, status = %d\n", -+ reg, ret); -+ if (ret < 0) -+ return ret; -+ else -+ return -EIO; -+ } -+ -+ return 0; -+} -+ -+static int sp2_ci_op_cam(struct dvb_ca_en50221 *en50221, int slot, u8 acs, -+ u8 read, int addr, u8 data) -+{ -+ struct sp2 *s = en50221->data; -+ u8 store; -+ int mem, ret; -+ int (*ci_op_cam)(void*, u8, int, u8, int*) = s->ci_control; -+ -+ dev_dbg(&s->client->dev, "slot=%d, acs=0x%02x, addr=0x%04x, data = 0x%02x", -+ slot, acs, addr, data); -+ -+ if (slot != 0) -+ return -EINVAL; -+ -+ /* -+ * change module access type between IO space and attribute memory -+ * when needed -+ */ -+ if (s->module_access_type != acs) { -+ ret = sp2_read_i2c(s, 0x00, &store, 1); -+ -+ if (ret) -+ return ret; -+ -+ store &= ~(SP2_MOD_CTL_ACS1 | SP2_MOD_CTL_ACS0); -+ store |= acs; -+ -+ ret = sp2_write_i2c(s, 0x00, &store, 1); -+ if (ret) -+ return ret; -+ } -+ -+ s->module_access_type = acs; -+ -+ /* implementation of ci_op_cam is device specific */ -+ if (ci_op_cam) { -+ ret = ci_op_cam(s->priv, read, addr, data, &mem); -+ } else { -+ dev_err(&s->client->dev, "callback not defined"); -+ return -EINVAL; -+ } -+ -+ if (ret) -+ return ret; -+ -+ if (read) { -+ dev_dbg(&s->client->dev, "cam read, addr=0x%04x, data = 0x%04x", -+ addr, mem); -+ return mem; -+ } else { -+ return 0; -+ } -+} -+ -+int sp2_ci_read_attribute_mem(struct dvb_ca_en50221 *en50221, -+ int slot, int addr) -+{ -+ return sp2_ci_op_cam(en50221, slot, SP2_CI_ATTR_ACS, -+ SP2_CI_RD, addr, 0); -+} -+ -+int sp2_ci_write_attribute_mem(struct dvb_ca_en50221 *en50221, -+ int slot, int addr, u8 data) -+{ -+ return sp2_ci_op_cam(en50221, slot, SP2_CI_ATTR_ACS, -+ SP2_CI_WR, addr, data); -+} -+ -+int sp2_ci_read_cam_control(struct dvb_ca_en50221 *en50221, -+ int slot, u8 addr) -+{ -+ return sp2_ci_op_cam(en50221, slot, SP2_CI_IO_ACS, -+ SP2_CI_RD, addr, 0); -+} -+ -+int sp2_ci_write_cam_control(struct dvb_ca_en50221 *en50221, -+ int slot, u8 addr, u8 data) -+{ -+ return sp2_ci_op_cam(en50221, slot, SP2_CI_IO_ACS, -+ SP2_CI_WR, addr, data); -+} -+ -+int sp2_ci_slot_reset(struct dvb_ca_en50221 *en50221, int slot) -+{ -+ struct sp2 *s = en50221->data; -+ u8 buf; -+ int ret; -+ -+ dev_dbg(&s->client->dev, "slot: %d\n", slot); -+ -+ if (slot != 0) -+ return -EINVAL; -+ -+ /* RST on */ -+ buf = SP2_MOD_CTL_RST; -+ ret = sp2_write_i2c(s, 0x00, &buf, 1); -+ -+ if (ret) -+ return ret; -+ -+ usleep_range(500, 600); -+ -+ /* RST off */ -+ buf = 0x00; -+ ret = sp2_write_i2c(s, 0x00, &buf, 1); -+ -+ if (ret) -+ return ret; -+ -+ msleep(1000); -+ -+ return 0; -+} -+ -+int sp2_ci_slot_shutdown(struct dvb_ca_en50221 *en50221, int slot) -+{ -+ struct sp2 *s = en50221->data; -+ -+ dev_dbg(&s->client->dev, "slot:%d\n", slot); -+ -+ /* not implemented */ -+ return 0; -+} -+ -+int sp2_ci_slot_ts_enable(struct dvb_ca_en50221 *en50221, int slot) -+{ -+ struct sp2 *s = en50221->data; -+ u8 buf; -+ -+ dev_dbg(&s->client->dev, "slot:%d\n", slot); -+ -+ if (slot != 0) -+ return -EINVAL; -+ -+ sp2_read_i2c(s, 0x00, &buf, 1); -+ -+ /* disable bypass and enable TS */ -+ buf |= (SP2_MOD_CTL_TSOEN | SP2_MOD_CTL_TSIEN); -+ return sp2_write_i2c(s, 0, &buf, 1); -+} -+ -+int sp2_ci_poll_slot_status(struct dvb_ca_en50221 *en50221, -+ int slot, int open) -+{ -+ struct sp2 *s = en50221->data; -+ u8 buf[2]; -+ int ret; -+ -+ dev_dbg(&s->client->dev, "slot:%d open:%d\n", slot, open); -+ -+ /* -+ * CAM module INSERT/REMOVE processing. Slow operation because of i2c -+ * transfers. Throttle read to one per sec. -+ */ -+ if (time_after(jiffies, s->next_status_checked_time)) { -+ ret = sp2_read_i2c(s, 0x00, buf, 1); -+ s->next_status_checked_time = jiffies + msecs_to_jiffies(1000); -+ -+ if (ret) -+ return 0; -+ -+ if (buf[0] & SP2_MOD_CTL_DET) -+ s->status = DVB_CA_EN50221_POLL_CAM_PRESENT | -+ DVB_CA_EN50221_POLL_CAM_READY; -+ else -+ s->status = 0; -+ } -+ -+ return s->status; -+} -+ -+int sp2_init(struct sp2 *s) -+{ -+ int ret = 0; -+ u8 buf; -+ u8 cimax_init[34] = { -+ 0x00, /* module A control*/ -+ 0x00, /* auto select mask high A */ -+ 0x00, /* auto select mask low A */ -+ 0x00, /* auto select pattern high A */ -+ 0x00, /* auto select pattern low A */ -+ 0x44, /* memory access time A, 600 ns */ -+ 0x00, /* invert input A */ -+ 0x00, /* RFU */ -+ 0x00, /* RFU */ -+ 0x00, /* module B control*/ -+ 0x00, /* auto select mask high B */ -+ 0x00, /* auto select mask low B */ -+ 0x00, /* auto select pattern high B */ -+ 0x00, /* auto select pattern low B */ -+ 0x44, /* memory access time B, 600 ns */ -+ 0x00, /* invert input B */ -+ 0x00, /* RFU */ -+ 0x00, /* RFU */ -+ 0x00, /* auto select mask high Ext */ -+ 0x00, /* auto select mask low Ext */ -+ 0x00, /* auto select pattern high Ext */ -+ 0x00, /* auto select pattern low Ext */ -+ 0x00, /* RFU */ -+ 0x02, /* destination - module A */ -+ 0x01, /* power control reg, VCC power on */ -+ 0x00, /* RFU */ -+ 0x00, /* int status read only */ -+ 0x00, /* Interrupt Mask Register */ -+ 0x05, /* EXTINT=active-high, INT=push-pull */ -+ 0x00, /* USCG1 */ -+ 0x04, /* ack active low */ -+ 0x00, /* LOCK = 0 */ -+ 0x22, /* unknown */ -+ 0x00, /* synchronization? */ -+ }; -+ -+ dev_dbg(&s->client->dev, "\n"); -+ -+ s->ca.owner = THIS_MODULE; -+ s->ca.read_attribute_mem = sp2_ci_read_attribute_mem; -+ s->ca.write_attribute_mem = sp2_ci_write_attribute_mem; -+ s->ca.read_cam_control = sp2_ci_read_cam_control; -+ s->ca.write_cam_control = sp2_ci_write_cam_control; -+ s->ca.slot_reset = sp2_ci_slot_reset; -+ s->ca.slot_shutdown = sp2_ci_slot_shutdown; -+ s->ca.slot_ts_enable = sp2_ci_slot_ts_enable; -+ s->ca.poll_slot_status = sp2_ci_poll_slot_status; -+ s->ca.data = s; -+ s->module_access_type = 0; -+ -+ /* initialize all regs */ -+ ret = sp2_write_i2c(s, 0x00, &cimax_init[0], 34); -+ if (ret) -+ goto err; -+ -+ /* lock registers */ -+ buf = 1; -+ ret = sp2_write_i2c(s, 0x1f, &buf, 1); -+ if (ret) -+ goto err; -+ -+ /* power on slots */ -+ ret = sp2_write_i2c(s, 0x18, &buf, 1); -+ if (ret) -+ goto err; -+ -+ ret = dvb_ca_en50221_init(s->dvb_adap, &s->ca, 0, 1); -+ if (ret) -+ goto err; -+ -+ return 0; -+ -+err: -+ dev_dbg(&s->client->dev, "init failed=%d\n", ret); -+ return ret; -+} -+ -+int sp2_exit(struct i2c_client *client) -+{ -+ struct sp2 *s; -+ -+ dev_dbg(&client->dev, "\n"); -+ -+ if (client == NULL) -+ return 0; -+ -+ s = i2c_get_clientdata(client); -+ if (s == NULL) -+ return 0; -+ -+ if (s->ca.data == NULL) -+ return 0; -+ -+ dvb_ca_en50221_release(&s->ca); -+ -+ return 0; -+} -+ -+static int sp2_probe(struct i2c_client *client, -+ const struct i2c_device_id *id) -+{ -+ struct sp2_config *cfg = client->dev.platform_data; -+ struct sp2 *s; -+ int ret; -+ -+ dev_dbg(&client->dev, "\n"); -+ -+ s = kzalloc(sizeof(struct sp2), GFP_KERNEL); -+ if (!s) { -+ ret = -ENOMEM; -+ dev_err(&client->dev, "kzalloc() failed\n"); -+ goto err; -+ } -+ -+ s->client = client; -+ s->dvb_adap = cfg->dvb_adap; -+ s->priv = cfg->priv; -+ s->ci_control = cfg->ci_control; -+ -+ i2c_set_clientdata(client, s); -+ -+ ret = sp2_init(s); -+ if (ret) -+ goto err; -+ -+ dev_info(&s->client->dev, "CIMaX SP2 successfully attached\n"); -+ return 0; -+err: -+ dev_dbg(&client->dev, "init failed=%d\n", ret); -+ kfree(s); -+ -+ return ret; -+} -+ -+static int sp2_remove(struct i2c_client *client) -+{ -+ struct si2157 *s = i2c_get_clientdata(client); -+ -+ dev_dbg(&client->dev, "\n"); -+ -+ sp2_exit(client); -+ if (s != NULL) -+ kfree(s); -+ -+ return 0; -+} -+ -+static const struct i2c_device_id sp2_id[] = { -+ {"sp2", 0}, -+ {} -+}; -+MODULE_DEVICE_TABLE(i2c, sp2_id); -+ -+static struct i2c_driver sp2_driver = { -+ .driver = { -+ .owner = THIS_MODULE, -+ .name = "sp2", -+ }, -+ .probe = sp2_probe, -+ .remove = sp2_remove, -+ .id_table = sp2_id, -+}; -+ -+module_i2c_driver(sp2_driver); -+ -+MODULE_DESCRIPTION("CIMaX SP2/HF CI driver"); -+MODULE_AUTHOR("Olli Salonen "); -+MODULE_LICENSE("GPL"); -diff -urN a/drivers/media/dvb-frontends/sp2.h b/drivers/media/dvb-frontends/sp2.h ---- a/drivers/media/dvb-frontends/sp2.h 1970-01-01 02:00:00.000000000 +0200 -+++ b/drivers/media/dvb-frontends/sp2.h 2014-10-27 19:27:47.000000000 +0200 -@@ -0,0 +1,53 @@ -+/* -+ * CIMaX SP2/HF CI driver -+ * -+ * Copyright (C) 2014 Olli Salonen -+ * -+ * 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. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ */ -+ -+#ifndef SP2_H -+#define SP2_H -+ -+#include -+#include "dvb_ca_en50221.h" -+ -+/* -+ * I2C address -+ * 0x40 (port 0) -+ * 0x41 (port 1) -+ */ -+struct sp2_config { -+ /* dvb_adapter to attach the ci to */ -+ struct dvb_adapter *dvb_adap; -+ -+ /* function ci_control handles the device specific ci ops */ -+ void *ci_control; -+ -+ /* priv is passed back to function ci_control */ -+ void *priv; -+}; -+ -+extern int sp2_ci_read_attribute_mem(struct dvb_ca_en50221 *en50221, -+ int slot, int addr); -+extern int sp2_ci_write_attribute_mem(struct dvb_ca_en50221 *en50221, -+ int slot, int addr, u8 data); -+extern int sp2_ci_read_cam_control(struct dvb_ca_en50221 *en50221, -+ int slot, u8 addr); -+extern int sp2_ci_write_cam_control(struct dvb_ca_en50221 *en50221, -+ int slot, u8 addr, u8 data); -+extern int sp2_ci_slot_reset(struct dvb_ca_en50221 *en50221, int slot); -+extern int sp2_ci_slot_shutdown(struct dvb_ca_en50221 *en50221, int slot); -+extern int sp2_ci_slot_ts_enable(struct dvb_ca_en50221 *en50221, int slot); -+extern int sp2_ci_poll_slot_status(struct dvb_ca_en50221 *en50221, -+ int slot, int open); -+ -+#endif -diff -urN a/drivers/media/dvb-frontends/sp2_priv.h b/drivers/media/dvb-frontends/sp2_priv.h ---- a/drivers/media/dvb-frontends/sp2_priv.h 1970-01-01 02:00:00.000000000 +0200 -+++ b/drivers/media/dvb-frontends/sp2_priv.h 2014-10-27 19:27:47.000000000 +0200 -@@ -0,0 +1,50 @@ -+/* -+ * CIMaX SP2/HF CI driver -+ * -+ * Copyright (C) 2014 Olli Salonen -+ * -+ * 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. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ */ -+ -+#ifndef SP2_PRIV_H -+#define SP2_PRIV_H -+ -+#include "sp2.h" -+#include "dvb_frontend.h" -+ -+/* state struct */ -+struct sp2 { -+ int status; -+ struct i2c_client *client; -+ struct dvb_adapter *dvb_adap; -+ struct dvb_ca_en50221 ca; -+ int module_access_type; -+ unsigned long next_status_checked_time; -+ void *priv; -+ void *ci_control; -+}; -+ -+#define SP2_CI_ATTR_ACS 0x00 -+#define SP2_CI_IO_ACS 0x04 -+#define SP2_CI_WR 0 -+#define SP2_CI_RD 1 -+ -+/* Module control register (0x00 module A, 0x09 module B) bits */ -+#define SP2_MOD_CTL_DET 0x01 -+#define SP2_MOD_CTL_AUTO 0x02 -+#define SP2_MOD_CTL_ACS0 0x04 -+#define SP2_MOD_CTL_ACS1 0x08 -+#define SP2_MOD_CTL_HAD 0x10 -+#define SP2_MOD_CTL_TSIEN 0x20 -+#define SP2_MOD_CTL_TSOEN 0x40 -+#define SP2_MOD_CTL_RST 0x80 -+ -+#endif -diff -urN a/drivers/media/tuners/si2157.c b/drivers/media/tuners/si2157.c ---- a/drivers/media/tuners/si2157.c 2014-10-15 13:29:30.000000000 +0300 -+++ b/drivers/media/tuners/si2157.c 2014-10-27 19:16:29.000000000 +0200 -@@ -1,5 +1,5 @@ - /* -- * Silicon Labs Si2157/2158 silicon tuner driver -+ * Silicon Labs Si2147/2157/2158 silicon tuner driver - * - * Copyright (C) 2014 Antti Palosaari - * -@@ -55,8 +55,7 @@ - break; - } - -- dev_dbg(&s->client->dev, "%s: cmd execution took %d ms\n", -- __func__, -+ dev_dbg(&s->client->dev, "cmd execution took %d ms\n", - jiffies_to_msecs(jiffies) - - (jiffies_to_msecs(timeout) - TIMEOUT)); - -@@ -75,7 +74,7 @@ - - return 0; - err: -- dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret); -+ dev_dbg(&s->client->dev, "failed=%d\n", ret); - return ret; - } - -@@ -88,9 +87,12 @@ - u8 *fw_file; - unsigned int chip_id; - -- dev_dbg(&s->client->dev, "%s:\n", __func__); -+ dev_dbg(&s->client->dev, "\n"); - -- /* configure? */ -+ if (s->fw_loaded) -+ goto warm; -+ -+ /* power up */ - memcpy(cmd.args, "\xc0\x00\x0c\x00\x00\x01\x01\x01\x01\x01\x01\x02\x00\x00\x01", 15); - cmd.wlen = 15; - cmd.rlen = 1; -@@ -111,45 +113,47 @@ - - #define SI2158_A20 ('A' << 24 | 58 << 16 | '2' << 8 | '0' << 0) - #define SI2157_A30 ('A' << 24 | 57 << 16 | '3' << 8 | '0' << 0) -+ #define SI2147_A30 ('A' << 24 | 47 << 16 | '3' << 8 | '0' << 0) - - switch (chip_id) { - case SI2158_A20: - fw_file = SI2158_A20_FIRMWARE; - break; - case SI2157_A30: -+ case SI2147_A30: - goto skip_fw_download; - break; - default: - dev_err(&s->client->dev, -- "%s: unkown chip version Si21%d-%c%c%c\n", -- KBUILD_MODNAME, cmd.args[2], cmd.args[1], -+ "unknown chip version Si21%d-%c%c%c\n", -+ cmd.args[2], cmd.args[1], - cmd.args[3], cmd.args[4]); - ret = -EINVAL; - goto err; - } - - /* cold state - try to download firmware */ -- dev_info(&s->client->dev, "%s: found a '%s' in cold state\n", -- KBUILD_MODNAME, si2157_ops.info.name); -+ dev_info(&s->client->dev, "found a '%s' in cold state\n", -+ si2157_ops.info.name); - - /* request the firmware, this will block and timeout */ - ret = request_firmware(&fw, fw_file, &s->client->dev); - if (ret) { -- dev_err(&s->client->dev, "%s: firmware file '%s' not found\n", -- KBUILD_MODNAME, fw_file); -+ dev_err(&s->client->dev, "firmware file '%s' not found\n", -+ fw_file); - goto err; - } - - /* firmware should be n chunks of 17 bytes */ - if (fw->size % 17 != 0) { -- dev_err(&s->client->dev, "%s: firmware file '%s' is invalid\n", -- KBUILD_MODNAME, fw_file); -+ dev_err(&s->client->dev, "firmware file '%s' is invalid\n", -+ fw_file); - ret = -EINVAL; - goto err; - } - -- dev_info(&s->client->dev, "%s: downloading firmware from file '%s'\n", -- KBUILD_MODNAME, fw_file); -+ dev_info(&s->client->dev, "downloading firmware from file '%s'\n", -+ fw_file); - - for (remaining = fw->size; remaining > 0; remaining -= 17) { - len = fw->data[fw->size - remaining]; -@@ -159,8 +163,8 @@ - ret = si2157_cmd_execute(s, &cmd); - if (ret) { - dev_err(&s->client->dev, -- "%s: firmware download failed=%d\n", -- KBUILD_MODNAME, ret); -+ "firmware download failed=%d\n", -+ ret); - goto err; - } - } -@@ -177,14 +181,17 @@ - if (ret) - goto err; - -- s->active = true; -+ s->fw_loaded = true; - -+warm: -+ s->active = true; - return 0; -+ - err: - if (fw) - release_firmware(fw); - -- dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret); -+ dev_dbg(&s->client->dev, "failed=%d\n", ret); - return ret; - } - -@@ -194,20 +201,21 @@ - int ret; - struct si2157_cmd cmd; - -- dev_dbg(&s->client->dev, "%s:\n", __func__); -+ dev_dbg(&s->client->dev, "\n"); - - s->active = false; - -- memcpy(cmd.args, "\x13", 1); -- cmd.wlen = 1; -- cmd.rlen = 0; -+ /* standby */ -+ memcpy(cmd.args, "\x16\x00", 2); -+ cmd.wlen = 2; -+ cmd.rlen = 1; - ret = si2157_cmd_execute(s, &cmd); - if (ret) - goto err; - - return 0; - err: -- dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret); -+ dev_dbg(&s->client->dev, "failed=%d\n", ret); - return ret; - } - -@@ -220,8 +228,8 @@ - u8 bandwidth, delivery_system; - - dev_dbg(&s->client->dev, -- "%s: delivery_system=%d frequency=%u bandwidth_hz=%u\n", -- __func__, c->delivery_system, c->frequency, -+ "delivery_system=%d frequency=%u bandwidth_hz=%u\n", -+ c->delivery_system, c->frequency, - c->bandwidth_hz); - - if (!s->active) { -@@ -239,6 +247,9 @@ - bandwidth = 0x0f; - - switch (c->delivery_system) { -+ case SYS_ATSC: -+ delivery_system = 0x00; -+ break; - case SYS_DVBT: - case SYS_DVBT2: /* it seems DVB-T and DVB-T2 both are 0x20 here */ - delivery_system = 0x20; -@@ -256,7 +267,14 @@ - if (s->inversion) - cmd.args[5] = 0x01; - cmd.wlen = 6; -- cmd.rlen = 1; -+ cmd.rlen = 4; -+ ret = si2157_cmd_execute(s, &cmd); -+ if (ret) -+ goto err; -+ -+ memcpy(cmd.args, "\x14\x00\x02\x07\x01\x00", 6); -+ cmd.wlen = 6; -+ cmd.rlen = 4; - ret = si2157_cmd_execute(s, &cmd); - if (ret) - goto err; -@@ -275,7 +293,7 @@ - - return 0; - err: -- dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret); -+ dev_dbg(&s->client->dev, "failed=%d\n", ret); - return ret; - } - -@@ -310,13 +328,14 @@ - s = kzalloc(sizeof(struct si2157), GFP_KERNEL); - if (!s) { - ret = -ENOMEM; -- dev_err(&client->dev, "%s: kzalloc() failed\n", KBUILD_MODNAME); -+ dev_err(&client->dev, "kzalloc() failed\n"); - goto err; - } - - s->client = client; - s->fe = cfg->fe; - s->inversion = cfg->inversion; -+ s->fw_loaded = false; - mutex_init(&s->i2c_mutex); - - /* check if the tuner is there */ -@@ -333,11 +352,10 @@ - i2c_set_clientdata(client, s); - - dev_info(&s->client->dev, -- "%s: Silicon Labs Si2157/Si2158 successfully attached\n", -- KBUILD_MODNAME); -+ "Silicon Labs Si2157/Si2158 successfully attached\n"); - return 0; - err: -- dev_dbg(&client->dev, "%s: failed=%d\n", __func__, ret); -+ dev_dbg(&client->dev, "failed=%d\n", ret); - kfree(s); - - return ret; -@@ -348,7 +366,7 @@ - struct si2157 *s = i2c_get_clientdata(client); - struct dvb_frontend *fe = s->fe; - -- dev_dbg(&client->dev, "%s:\n", __func__); -+ dev_dbg(&client->dev, "\n"); - - memset(&fe->ops.tuner_ops, 0, sizeof(struct dvb_tuner_ops)); - fe->tuner_priv = NULL; -diff -urN a/drivers/media/tuners/si2157.h b/drivers/media/tuners/si2157.h ---- a/drivers/media/tuners/si2157.h 2014-10-15 13:29:30.000000000 +0300 -+++ b/drivers/media/tuners/si2157.h 2014-10-27 19:16:29.000000000 +0200 -@@ -1,5 +1,5 @@ - /* -- * Silicon Labs Si2157/2158 silicon tuner driver -+ * Silicon Labs Si2147/2157/2158 silicon tuner driver - * - * Copyright (C) 2014 Antti Palosaari - * -diff -urN a/drivers/media/tuners/si2157_priv.h b/drivers/media/tuners/si2157_priv.h ---- a/drivers/media/tuners/si2157_priv.h 2014-10-15 13:29:30.000000000 +0300 -+++ b/drivers/media/tuners/si2157_priv.h 2014-10-27 20:24:59.000000000 +0200 -@@ -1,5 +1,5 @@ - /* -- * Silicon Labs Si2157/2158 silicon tuner driver -+ * Silicon Labs Si2147/2157/2158 silicon tuner driver - * - * Copyright (C) 2014 Antti Palosaari - * -@@ -26,6 +26,7 @@ - struct i2c_client *client; - struct dvb_frontend *fe; - bool active; -+ bool fw_loaded; - bool inversion; - }; - -diff -urN a/drivers/media/usb/dvb-usb/cxusb.c b/drivers/media/usb/dvb-usb/cxusb.c ---- a/drivers/media/usb/dvb-usb/cxusb.c 2014-10-15 13:29:30.000000000 +0300 -+++ b/drivers/media/usb/dvb-usb/cxusb.c 2014-10-28 21:23:03.837980680 +0200 -@@ -44,6 +44,7 @@ - #include "atbm8830.h" - #include "si2168.h" - #include "si2157.h" -+#include "sp2.h" - - /* Max transfer size done by I2C transfer functions */ - #define MAX_XFER_SIZE 80 -@@ -175,7 +176,7 @@ - - for (i = 0; i < num; i++) { - -- if (d->udev->descriptor.idVendor == USB_VID_MEDION) -+ if (le16_to_cpu(d->udev->descriptor.idVendor) == USB_VID_MEDION) - switch (msg[i].addr) { - case 0x63: - cxusb_gpio_tuner(d, 0); -@@ -672,6 +673,70 @@ - { 0x0025, KEY_POWER }, - }; - -+static int cxusb_tt_ct2_4400_read_mac_address(struct dvb_usb_device *d, u8 mac[6]) -+{ -+ u8 wbuf[2]; -+ u8 rbuf[6]; -+ int ret; -+ struct i2c_msg msg[] = { -+ { -+ .addr = 0x51, -+ .flags = 0, -+ .buf = wbuf, -+ .len = 2, -+ }, { -+ .addr = 0x51, -+ .flags = I2C_M_RD, -+ .buf = rbuf, -+ .len = 6, -+ } -+ }; -+ -+ wbuf[0] = 0x1e; -+ wbuf[1] = 0x00; -+ ret = cxusb_i2c_xfer(&d->i2c_adap, msg, 2); -+ -+ if (ret == 2) { -+ memcpy(mac, rbuf, 6); -+ return 0; -+ } else { -+ if (ret < 0) -+ return ret; -+ return -EIO; -+ } -+} -+ -+static int cxusb_tt_ct2_4650_ci_ctrl(void *priv, u8 read, int addr, -+ u8 data, int *mem) -+{ -+ struct dvb_usb_device *d = priv; -+ u8 wbuf[3]; -+ u8 rbuf[2]; -+ int ret; -+ -+ wbuf[0] = (addr >> 8) & 0xff; -+ wbuf[1] = addr & 0xff; -+ -+ if (read) { -+ ret = cxusb_ctrl_msg(d, CMD_SP2_CI_READ, wbuf, 2, rbuf, 2); -+ } else { -+ wbuf[2] = data; -+ ret = cxusb_ctrl_msg(d, CMD_SP2_CI_WRITE, wbuf, 3, rbuf, 1); -+ } -+ -+ if (ret) -+ goto err; -+ -+ if (read) -+ *mem = rbuf[1]; -+ -+ return 0; -+err: -+ deb_info("%s: ci usb write returned %d\n", __func__, ret); -+ return ret; -+ -+} -+ - static int cxusb_dee1601_demod_init(struct dvb_frontend* fe) - { - static u8 clock_config [] = { CLOCK_CTL, 0x38, 0x28 }; -@@ -1350,9 +1415,12 @@ - struct i2c_adapter *adapter; - struct i2c_client *client_demod; - struct i2c_client *client_tuner; -+ struct i2c_client *client_ci; - struct i2c_board_info info; - struct si2168_config si2168_config; - struct si2157_config si2157_config; -+ struct sp2_config sp2_config; -+ u8 o[2], i; - - /* reset the tuner */ - if (cxusb_tt_ct2_4400_gpio_tuner(d, 0) < 0) { -@@ -1369,6 +1437,13 @@ - /* attach frontend */ - si2168_config.i2c_adapter = &adapter; - si2168_config.fe = &adap->fe_adap[0].fe; -+ si2168_config.ts_mode = SI2168_TS_PARALLEL; -+ -+ /* CT2-4400v2 TS gets corrupted without this */ -+ if (d->udev->descriptor.idProduct == -+ USB_PID_TECHNOTREND_TVSTICK_CT2_4400) -+ si2168_config.ts_mode |= 0x40; -+ - memset(&info, 0, sizeof(struct i2c_board_info)); - strlcpy(info.type, "si2168", I2C_NAME_SIZE); - info.addr = 0x64; -@@ -1408,6 +1483,48 @@ - - st->i2c_client_tuner = client_tuner; - -+ /* initialize CI */ -+ if (d->udev->descriptor.idProduct == -+ USB_PID_TECHNOTREND_CONNECT_CT2_4650_CI) { -+ -+ memcpy(o, "\xc0\x01", 2); -+ cxusb_ctrl_msg(d, CMD_GPIO_WRITE, o, 2, &i, 1); -+ msleep(100); -+ -+ memcpy(o, "\xc0\x00", 2); -+ cxusb_ctrl_msg(d, CMD_GPIO_WRITE, o, 2, &i, 1); -+ msleep(100); -+ -+ memset(&sp2_config, 0, sizeof(sp2_config)); -+ sp2_config.dvb_adap = &adap->dvb_adap; -+ sp2_config.priv = d; -+ sp2_config.ci_control = cxusb_tt_ct2_4650_ci_ctrl; -+ memset(&info, 0, sizeof(struct i2c_board_info)); -+ strlcpy(info.type, "sp2", I2C_NAME_SIZE); -+ info.addr = 0x40; -+ info.platform_data = &sp2_config; -+ request_module(info.type); -+ client_ci = i2c_new_device(&d->i2c_adap, &info); -+ if (client_ci == NULL || client_ci->dev.driver == NULL) { -+ module_put(client_tuner->dev.driver->owner); -+ i2c_unregister_device(client_tuner); -+ module_put(client_demod->dev.driver->owner); -+ i2c_unregister_device(client_demod); -+ return -ENODEV; -+ } -+ if (!try_module_get(client_ci->dev.driver->owner)) { -+ i2c_unregister_device(client_ci); -+ module_put(client_tuner->dev.driver->owner); -+ i2c_unregister_device(client_tuner); -+ module_put(client_demod->dev.driver->owner); -+ i2c_unregister_device(client_demod); -+ return -ENODEV; -+ } -+ -+ st->i2c_client_ci = client_ci; -+ -+ } -+ - return 0; - } - -@@ -1537,6 +1654,13 @@ - struct cxusb_state *st = d->priv; - struct i2c_client *client; - -+ /* remove I2C client for CI */ -+ client = st->i2c_client_ci; -+ if (client) { -+ module_put(client->dev.driver->owner); -+ i2c_unregister_device(client); -+ } -+ - /* remove I2C client for tuner */ - client = st->i2c_client_tuner; - if (client) { -@@ -1576,6 +1700,7 @@ - { USB_DEVICE(USB_VID_CONEXANT, USB_PID_CONEXANT_D680_DMB) }, - { USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_D689) }, - { USB_DEVICE(USB_VID_TECHNOTREND, USB_PID_TECHNOTREND_TVSTICK_CT2_4400) }, -+ { USB_DEVICE(USB_VID_TECHNOTREND, USB_PID_TECHNOTREND_CONNECT_CT2_4650_CI) }, - {} /* Terminating entry */ - }; - MODULE_DEVICE_TABLE (usb, cxusb_table); -@@ -2230,6 +2355,8 @@ - .size_of_priv = sizeof(struct cxusb_state), - - .num_adapters = 1, -+ .read_mac_address = cxusb_tt_ct2_4400_read_mac_address, -+ - .adapter = { - { - .num_frontends = 1, -@@ -2265,13 +2392,18 @@ - .rc_interval = 150, - }, - -- .num_device_descs = 1, -+ .num_device_descs = 2, - .devices = { - { - "TechnoTrend TVStick CT2-4400", - { NULL }, - { &cxusb_table[20], NULL }, - }, -+ { -+ "TechnoTrend TT-connect CT2-4650 CI", -+ { NULL }, -+ { &cxusb_table[21], NULL }, -+ }, - } - }; - -diff -urN a/drivers/media/usb/dvb-usb/cxusb.h b/drivers/media/usb/dvb-usb/cxusb.h ---- a/drivers/media/usb/dvb-usb/cxusb.h 2014-10-15 13:29:30.000000000 +0300 -+++ b/drivers/media/usb/dvb-usb/cxusb.h 2014-10-28 21:23:03.849980680 +0200 -@@ -28,10 +28,14 @@ - #define CMD_ANALOG 0x50 - #define CMD_DIGITAL 0x51 - -+#define CMD_SP2_CI_WRITE 0x70 -+#define CMD_SP2_CI_READ 0x71 -+ - struct cxusb_state { - u8 gpio_write_state[3]; - struct i2c_client *i2c_client_demod; - struct i2c_client *i2c_client_tuner; -+ struct i2c_client *i2c_client_ci; - }; - - #endif -diff -urN a/drivers/media/usb/dvb-usb/Kconfig b/drivers/media/usb/dvb-usb/Kconfig ---- a/drivers/media/usb/dvb-usb/Kconfig 2014-10-15 13:29:30.000000000 +0300 -+++ b/drivers/media/usb/dvb-usb/Kconfig 2014-10-27 21:42:07.000000000 +0200 -@@ -118,6 +118,7 @@ - select DVB_ATBM8830 if MEDIA_SUBDRV_AUTOSELECT - select DVB_LGS8GXX if MEDIA_SUBDRV_AUTOSELECT - select DVB_SI2168 if MEDIA_SUBDRV_AUTOSELECT -+ select DVB_SP2 if MEDIA_SUBDRV_AUTOSELECT - select MEDIA_TUNER_SIMPLE if MEDIA_SUBDRV_AUTOSELECT - select MEDIA_TUNER_XC2028 if MEDIA_SUBDRV_AUTOSELECT - select MEDIA_TUNER_MXL5005S if MEDIA_SUBDRV_AUTOSELECT -diff -urN a/drivers/media/usb/em28xx/em28xx-dvb.c b/drivers/media/usb/em28xx/em28xx-dvb.c ---- a/drivers/media/usb/em28xx/em28xx-dvb.c 2014-10-15 13:29:30.000000000 +0300 -+++ b/drivers/media/usb/em28xx/em28xx-dvb.c 2014-10-27 19:30:07.000000000 +0200 -@@ -1533,6 +1533,7 @@ - /* attach demod */ - si2168_config.i2c_adapter = &adapter; - si2168_config.fe = &dvb->fe[0]; -+ si2168_config.ts_mode = SI2168_TS_PARALLEL; - memset(&info, 0, sizeof(struct i2c_board_info)); - strlcpy(info.type, "si2168", I2C_NAME_SIZE); - info.addr = 0x64; diff --git a/packages/linux/patches/3.17.8/linux-225-dvbt2-support-for-dvbsky-t9580.patch b/packages/linux/patches/3.17.8/linux-225-dvbt2-support-for-dvbsky-t9580.patch deleted file mode 100644 index a0c03991be..0000000000 --- a/packages/linux/patches/3.17.8/linux-225-dvbt2-support-for-dvbsky-t9580.patch +++ /dev/null @@ -1,137 +0,0 @@ -diff -urN b/drivers/media/pci/cx23885/cx23885-dvb.c c/drivers/media/pci/cx23885/cx23885-dvb.c ---- b/drivers/media/pci/cx23885/cx23885-dvb.c 2014-10-27 19:08:58.000000000 +0200 -+++ c/drivers/media/pci/cx23885/cx23885-dvb.c 2014-10-28 08:49:07.456447843 +0200 -@@ -75,6 +75,8 @@ - #include "a8293.h" - #include "mb86a20s.h" - #include "si2165.h" -+#include "si2168.h" -+#include "si2157.h" - - static unsigned int debug; - -@@ -955,6 +957,12 @@ - struct videobuf_dvb_frontend *fe0, *fe1 = NULL; - int mfe_shared = 0; /* bus not shared by default */ - int ret; -+ struct si2168_config si2168_config; -+ struct si2157_config si2157_config; -+ struct i2c_board_info info; -+ struct i2c_adapter *adapter; -+ struct i2c_client *client_demod; -+ struct i2c_client *client_tuner; - - /* Get the first frontend */ - fe0 = videobuf_dvb_get_frontend(&port->frontends, 1); -@@ -1589,6 +1597,50 @@ - break; - /* port C */ - case 2: -+ i2c_bus = &dev->i2c_bus[0]; -+ -+ /* attach frontend */ -+ memset(&si2168_config, 0, sizeof(si2168_config)); -+ si2168_config.i2c_adapter = &adapter; -+ si2168_config.fe = &fe0->dvb.frontend; -+ 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; -+ info.platform_data = &si2168_config; -+ request_module(info.type); -+ client_demod = i2c_new_device(&i2c_bus->i2c_adap, &info); -+ if (client_demod == NULL || -+ client_demod->dev.driver == NULL) -+ goto frontend_detach; -+ if (!try_module_get(client_demod->dev.driver->owner)) { -+ i2c_unregister_device(client_demod); -+ goto frontend_detach; -+ } -+ port->i2c_client_demod = client_demod; -+ -+ /* attach tuner */ -+ memset(&si2157_config, 0, sizeof(si2157_config)); -+ si2157_config.fe = fe0->dvb.frontend; -+ memset(&info, 0, sizeof(struct i2c_board_info)); -+ strlcpy(info.type, "si2157", I2C_NAME_SIZE); -+ info.addr = 0x60; -+ info.platform_data = &si2157_config; -+ request_module(info.type); -+ client_tuner = i2c_new_device(adapter, &info); -+ if (client_tuner == NULL || -+ client_tuner->dev.driver == NULL) { -+ module_put(client_demod->dev.driver->owner); -+ i2c_unregister_device(client_demod); -+ goto frontend_detach; -+ } -+ if (!try_module_get(client_tuner->dev.driver->owner)) { -+ i2c_unregister_device(client_tuner); -+ module_put(client_demod->dev.driver->owner); -+ i2c_unregister_device(client_demod); -+ goto frontend_detach; -+ } -+ port->i2c_client_tuner = client_tuner; - break; - } - break; -@@ -1818,6 +1870,7 @@ - int cx23885_dvb_unregister(struct cx23885_tsport *port) - { - struct videobuf_dvb_frontend *fe0; -+ struct i2c_client *client; - - /* FIXME: in an error condition where the we have - * an expected number of frontends (attach problem) -@@ -1826,6 +1879,21 @@ - * This comment only applies to future boards IF they - * implement MFE support. - */ -+ -+ /* remove I2C client for tuner */ -+ client = port->i2c_client_tuner; -+ if (client) { -+ module_put(client->dev.driver->owner); -+ i2c_unregister_device(client); -+ } -+ -+ /* remove I2C client for demodulator */ -+ client = port->i2c_client_demod; -+ if (client) { -+ module_put(client->dev.driver->owner); -+ i2c_unregister_device(client); -+ } -+ - fe0 = videobuf_dvb_get_frontend(&port->frontends, 1); - if (fe0 && fe0->dvb.frontend) - videobuf_dvb_unregister_bus(&port->frontends); -diff -urN b/drivers/media/pci/cx23885/cx23885.h c/drivers/media/pci/cx23885/cx23885.h ---- b/drivers/media/pci/cx23885/cx23885.h 2014-10-27 19:08:58.000000000 +0200 -+++ c/drivers/media/pci/cx23885/cx23885.h 2014-10-28 08:48:17.700446770 +0200 -@@ -334,6 +334,9 @@ - /* Workaround for a temp dvb_frontend that the tuner can attached to */ - struct dvb_frontend analog_fe; - -+ struct i2c_client *i2c_client_demod; -+ struct i2c_client *i2c_client_tuner; -+ - int (*set_frontend)(struct dvb_frontend *fe); - }; - -diff -urN b/drivers/media/pci/cx23885/Kconfig c/drivers/media/pci/cx23885/Kconfig ---- b/drivers/media/pci/cx23885/Kconfig 2014-10-27 19:08:58.000000000 +0200 -+++ c/drivers/media/pci/cx23885/Kconfig 2014-10-28 08:50:30.804449641 +0200 -@@ -34,12 +34,14 @@ - select DVB_A8293 if MEDIA_SUBDRV_AUTOSELECT - select DVB_MB86A20S if MEDIA_SUBDRV_AUTOSELECT - select DVB_SI2165 if MEDIA_SUBDRV_AUTOSELECT -+ select DVB_SI2168 if MEDIA_SUBDRV_AUTOSELECT - select MEDIA_TUNER_MT2063 if MEDIA_SUBDRV_AUTOSELECT - select MEDIA_TUNER_MT2131 if MEDIA_SUBDRV_AUTOSELECT - select MEDIA_TUNER_XC2028 if MEDIA_SUBDRV_AUTOSELECT - select MEDIA_TUNER_TDA8290 if MEDIA_SUBDRV_AUTOSELECT - select MEDIA_TUNER_TDA18271 if MEDIA_SUBDRV_AUTOSELECT - select MEDIA_TUNER_XC5000 if MEDIA_SUBDRV_AUTOSELECT -+ select MEDIA_TUNER_SI2157 if MEDIA_SUBDRV_AUTOSELECT - select DVB_TUNER_DIB0070 if MEDIA_SUBDRV_AUTOSELECT - ---help--- - This is a video4linux driver for Conexant 23885 based diff --git a/packages/linux/patches/3.17.8/linux-999.05-upstream-fixes.patch b/packages/linux/patches/3.17.8/linux-999.05-upstream-fixes.patch deleted file mode 100644 index 70b9e87c37..0000000000 --- a/packages/linux/patches/3.17.8/linux-999.05-upstream-fixes.patch +++ /dev/null @@ -1,32 +0,0 @@ -From cef83483341e258beed49ce78fb2cc0c46ab1757 Mon Sep 17 00:00:00 2001 -From: Mauro Carvalho Chehab -Date: Thu, 30 Oct 2014 06:54:12 -0300 -Subject: [media] rc5-decoder: BZ#85721: Fix RC5-SZ decoding -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Changeset e87b540be2dd broke RC5-SZ decoding, as it forgot to add -the extra bit check for the enabled protocols at the beginning of -the logic. - -Signed-off-by: Mauro Carvalho Chehab -Acked-by: David Härdeman -Signed-off-by: Mauro Carvalho Chehab - -diff --git a/drivers/media/rc/ir-rc5-decoder.c b/drivers/media/rc/ir-rc5-decoder.c -index 2ef7639..84fa6e9 100644 ---- a/drivers/media/rc/ir-rc5-decoder.c -+++ b/drivers/media/rc/ir-rc5-decoder.c -@@ -53,7 +53,7 @@ static int ir_rc5_decode(struct rc_dev *dev, struct ir_raw_event ev) - u32 scancode; - enum rc_type protocol; - -- if (!(dev->enabled_protocols & (RC_BIT_RC5 | RC_BIT_RC5X))) -+ if (!(dev->enabled_protocols & (RC_BIT_RC5 | RC_BIT_RC5X | RC_BIT_RC5_SZ))) - return 0; - - if (!is_timing_event(ev)) { --- -cgit v0.10.1 - diff --git a/packages/linux/patches/3.17.8/linux-003-no_dev_console.patch b/packages/linux/patches/3.18.2/linux-003-no_dev_console.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-003-no_dev_console.patch rename to packages/linux/patches/3.18.2/linux-003-no_dev_console.patch diff --git a/packages/linux/patches/3.17.8/linux-011-intel-force-cs-stall.patch b/packages/linux/patches/3.18.2/linux-011-intel-force-cs-stall.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-011-intel-force-cs-stall.patch rename to packages/linux/patches/3.18.2/linux-011-intel-force-cs-stall.patch diff --git a/packages/linux/patches/3.17.8/linux-012-intel-fix-ivb-stall.patch b/packages/linux/patches/3.18.2/linux-012-intel-fix-ivb-stall.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-012-intel-fix-ivb-stall.patch rename to packages/linux/patches/3.18.2/linux-012-intel-fix-ivb-stall.patch diff --git a/packages/linux/patches/3.17.8/linux-052-XBOX_remote_support.patch b/packages/linux/patches/3.18.2/linux-052-XBOX_remote_support.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-052-XBOX_remote_support.patch rename to packages/linux/patches/3.18.2/linux-052-XBOX_remote_support.patch diff --git a/packages/linux/patches/3.17.8/linux-053-spinelplus-remote-0.2.patch b/packages/linux/patches/3.18.2/linux-053-spinelplus-remote-0.2.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-053-spinelplus-remote-0.2.patch rename to packages/linux/patches/3.18.2/linux-053-spinelplus-remote-0.2.patch diff --git a/packages/linux/patches/3.17.8/linux-054-nuvoton_revert_d7b290a1056c5564eec8a1b169c6e84ff3.6.114c13.patch b/packages/linux/patches/3.18.2/linux-054-nuvoton_revert_d7b290a1056c5564eec8a1b169c6e84ff3.6.114c13.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-054-nuvoton_revert_d7b290a1056c5564eec8a1b169c6e84ff3.6.114c13.patch rename to packages/linux/patches/3.18.2/linux-054-nuvoton_revert_d7b290a1056c5564eec8a1b169c6e84ff3.6.114c13.patch diff --git a/packages/linux/patches/3.17.8/linux-055-add_Formosa_eHome_Infrared_Receiver.patch b/packages/linux/patches/3.18.2/linux-055-add_Formosa_eHome_Infrared_Receiver.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-055-add_Formosa_eHome_Infrared_Receiver.patch rename to packages/linux/patches/3.18.2/linux-055-add_Formosa_eHome_Infrared_Receiver.patch diff --git a/packages/linux/patches/3.17.8/linux-056-add_Adaptec_eHome_Infrared_Receiver.patch b/packages/linux/patches/3.18.2/linux-056-add_Adaptec_eHome_Infrared_Receiver.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-056-add_Adaptec_eHome_Infrared_Receiver.patch rename to packages/linux/patches/3.18.2/linux-056-add_Adaptec_eHome_Infrared_Receiver.patch diff --git a/packages/linux/patches/3.17.8/linux-057-Removed-MCE-customer-code-restriction-in-rc6-decode.patch b/packages/linux/patches/3.18.2/linux-057-Removed-MCE-customer-code-restriction-in-rc6-decode.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-057-Removed-MCE-customer-code-restriction-in-rc6-decode.patch rename to packages/linux/patches/3.18.2/linux-057-Removed-MCE-customer-code-restriction-in-rc6-decode.patch diff --git a/packages/linux/patches/3.17.8/linux-057-add_SMK_Manufacturing_Inc_Infrared_Receiver.patch b/packages/linux/patches/3.18.2/linux-057-add_SMK_Manufacturing_Inc_Infrared_Receiver.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-057-add_SMK_Manufacturing_Inc_Infrared_Receiver.patch rename to packages/linux/patches/3.18.2/linux-057-add_SMK_Manufacturing_Inc_Infrared_Receiver.patch diff --git a/packages/linux/patches/3.17.8/linux-058.05-hid_sony-add_autorepeat_for_PS3_remotes.patch b/packages/linux/patches/3.18.2/linux-058.05-hid_sony-add_autorepeat_for_PS3_remotes.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-058.05-hid_sony-add_autorepeat_for_PS3_remotes.patch rename to packages/linux/patches/3.18.2/linux-058.05-hid_sony-add_autorepeat_for_PS3_remotes.patch diff --git a/packages/linux/patches/3.17.8/linux-058.06-hid_sony-add_SMK_link.patch b/packages/linux/patches/3.18.2/linux-058.06-hid_sony-add_SMK_link.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-058.06-hid_sony-add_SMK_link.patch rename to packages/linux/patches/3.18.2/linux-058.06-hid_sony-add_SMK_link.patch diff --git a/packages/linux/patches/3.17.8/linux-060-add_AUGUST_DVB-T205.patch b/packages/linux/patches/3.18.2/linux-060-add_AUGUST_DVB-T205.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-060-add_AUGUST_DVB-T205.patch rename to packages/linux/patches/3.18.2/linux-060-add_AUGUST_DVB-T205.patch diff --git a/packages/linux/patches/3.17.8/linux-062-imon_pad_ignore_diagonal.patch b/packages/linux/patches/3.18.2/linux-062-imon_pad_ignore_diagonal.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-062-imon_pad_ignore_diagonal.patch rename to packages/linux/patches/3.18.2/linux-062-imon_pad_ignore_diagonal.patch diff --git a/packages/linux/patches/3.17.8/linux-203-stb0899_enable_low_symbol_rate.patch b/packages/linux/patches/3.18.2/linux-203-stb0899_enable_low_symbol_rate.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-203-stb0899_enable_low_symbol_rate.patch rename to packages/linux/patches/3.18.2/linux-203-stb0899_enable_low_symbol_rate.patch diff --git a/packages/linux/patches/3.17.8/linux-210-dvbsky.patch b/packages/linux/patches/3.18.2/linux-210-dvbsky.patch similarity index 84% rename from packages/linux/patches/3.17.8/linux-210-dvbsky.patch rename to packages/linux/patches/3.18.2/linux-210-dvbsky.patch index 2e635d2f74..c150ff33c1 100644 --- a/packages/linux/patches/3.17.8/linux-210-dvbsky.patch +++ b/packages/linux/patches/3.18.2/linux-210-dvbsky.patch @@ -1,11 +1,12 @@ -From 36a453623c141f69f5f72337e0d0180dbc19b014 Mon Sep 17 00:00:00 2001 +From da7ca4812b1e286cbd3ae6998cb9ab78ed4c4a2d Mon Sep 17 00:00:00 2001 From: Stefan Saraev -Date: Mon, 6 Oct 2014 12:39:47 +0300 +Date: Wed, 29 Oct 2014 16:37:20 +0200 Subject: [PATCH] dvbsky +t950 dropped. now mainline --- drivers/media/dvb-frontends/Kconfig | 14 + - drivers/media/dvb-frontends/Makefile | 3 +- + drivers/media/dvb-frontends/Makefile | 4 + drivers/media/dvb-frontends/dvbsky_m88dc2800.c | 2124 ++++++++++++++++++++ drivers/media/dvb-frontends/dvbsky_m88dc2800.h | 44 + drivers/media/dvb-frontends/dvbsky_m88ds3103.c | 1707 ++++++++++++++++ @@ -14,33 +15,25 @@ Subject: [PATCH] dvbsky drivers/media/pci/cx23885/Kconfig | 2 + drivers/media/pci/cx23885/cimax2.c | 23 +- drivers/media/pci/cx23885/cimax2.h | 4 +- - drivers/media/pci/cx23885/cx23885-cards.c | 182 ++ + drivers/media/pci/cx23885/cx23885-cards.c | 160 ++ drivers/media/pci/cx23885/cx23885-core.c | 6 + - drivers/media/pci/cx23885/cx23885-dvb.c | 179 ++- - drivers/media/pci/cx23885/cx23885-input.c | 24 + - drivers/media/pci/cx23885/cx23885.h | 10 +- + drivers/media/pci/cx23885/cx23885-dvb.c | 164 ++- + drivers/media/pci/cx23885/cx23885-input.c | 21 + + drivers/media/pci/cx23885/cx23885.h | 9 +- drivers/media/pci/cx88/Kconfig | 1 + drivers/media/pci/cx88/cx88-cards.c | 22 + drivers/media/pci/cx88/cx88-dvb.c | 85 + drivers/media/pci/cx88/cx88-input.c | 4 + drivers/media/pci/cx88/cx88.h | 1 + - drivers/media/rc/keymaps/Makefile | 1 + - drivers/media/rc/keymaps/rc-dvbsky.c | 78 + - drivers/media/usb/dvb-usb-v2/Kconfig | 6 + - drivers/media/usb/dvb-usb-v2/Makefile | 3 + - drivers/media/usb/dvb-usb-v2/dvbsky.c | 739 +++++++ - include/media/rc-map.h | 1 + - 26 files changed, 5714 insertions(+), 5 deletions(-) + 20 files changed, 4847 insertions(+), 4 deletions(-) create mode 100644 drivers/media/dvb-frontends/dvbsky_m88dc2800.c create mode 100644 drivers/media/dvb-frontends/dvbsky_m88dc2800.h create mode 100644 drivers/media/dvb-frontends/dvbsky_m88ds3103.c create mode 100644 drivers/media/dvb-frontends/dvbsky_m88ds3103.h create mode 100644 drivers/media/dvb-frontends/dvbsky_m88ds3103_priv.h - create mode 100644 drivers/media/rc/keymaps/rc-dvbsky.c - create mode 100644 drivers/media/usb/dvb-usb-v2/dvbsky.c diff --git a/drivers/media/dvb-frontends/Kconfig b/drivers/media/dvb-frontends/Kconfig -index 8587675..b78ad4b 100644 +index 664626f..ed4642e 100644 --- a/drivers/media/dvb-frontends/Kconfig +++ b/drivers/media/dvb-frontends/Kconfig @@ -230,6 +230,20 @@ config DVB_CX24117 @@ -65,16 +58,17 @@ index 8587675..b78ad4b 100644 tristate "Silicon Labs SI21XX based" depends on DVB_CORE && I2C diff --git a/drivers/media/dvb-frontends/Makefile b/drivers/media/dvb-frontends/Makefile -index 4629ee8..941b247 100644 +index 1a20209..0afc6eb 100644 --- a/drivers/media/dvb-frontends/Makefile +++ b/drivers/media/dvb-frontends/Makefile -@@ -117,4 +117,5 @@ obj-$(CONFIG_DVB_RTL2832) += rtl2832.o - obj-$(CONFIG_DVB_RTL2832_SDR) += rtl2832_sdr.o - obj-$(CONFIG_DVB_M88RS2000) += m88rs2000.o +@@ -120,3 +120,7 @@ obj-$(CONFIG_DVB_M88RS2000) += m88rs2000.o obj-$(CONFIG_DVB_AF9033) += af9033.o -- + obj-$(CONFIG_DVB_AS102_FE) += as102_fe.o + obj-$(CONFIG_DVB_TC90522) += tc90522.o ++ +obj-$(CONFIG_DVB_DVBSKY_M88DS3103) += dvbsky_m88ds3103.o +obj-$(CONFIG_DVB_DVBSKY_M88DC2800) += dvbsky_m88dc2800.o ++ diff --git a/drivers/media/dvb-frontends/dvbsky_m88dc2800.c b/drivers/media/dvb-frontends/dvbsky_m88dc2800.c new file mode 100644 index 0000000..3c933b4 @@ -4437,10 +4431,10 @@ index 0000000..dfb3f8b + +#endif /* dvbsky_m88ds3103_PRIV_H */ diff --git a/drivers/media/pci/cx23885/Kconfig b/drivers/media/pci/cx23885/Kconfig -index e12c006..7b769f7 100644 +index f613314..903c42a 100644 --- a/drivers/media/pci/cx23885/Kconfig +++ b/drivers/media/pci/cx23885/Kconfig -@@ -23,6 +23,8 @@ config VIDEO_CX23885 +@@ -22,6 +22,8 @@ config VIDEO_CX23885 select DVB_STB6100 if MEDIA_SUBDRV_AUTOSELECT select DVB_STV6110 if MEDIA_SUBDRV_AUTOSELECT select DVB_CX24116 if MEDIA_SUBDRV_AUTOSELECT @@ -4450,10 +4444,10 @@ index e12c006..7b769f7 100644 select DVB_STV0900 if MEDIA_SUBDRV_AUTOSELECT select DVB_DS3000 if MEDIA_SUBDRV_AUTOSELECT diff --git a/drivers/media/pci/cx23885/cimax2.c b/drivers/media/pci/cx23885/cimax2.c -index 16fa7ea..2b63f78 100644 +index 631e4f2..2ff349a 100644 --- a/drivers/media/pci/cx23885/cimax2.c +++ b/drivers/media/pci/cx23885/cimax2.c -@@ -426,7 +426,7 @@ int netup_poll_ci_slot_status(struct dvb_ca_en50221 *en50221, +@@ -422,7 +422,7 @@ int netup_poll_ci_slot_status(struct dvb_ca_en50221 *en50221, return state->status; } @@ -4462,7 +4456,7 @@ index 16fa7ea..2b63f78 100644 { struct netup_ci_state *state; u8 cimax_init[34] = { -@@ -475,6 +475,11 @@ int netup_ci_init(struct cx23885_tsport *port) +@@ -471,6 +471,11 @@ int netup_ci_init(struct cx23885_tsport *port) goto err; } @@ -4474,7 +4468,7 @@ index 16fa7ea..2b63f78 100644 port->port_priv = state; switch (port->nr) { -@@ -548,3 +553,19 @@ void netup_ci_exit(struct cx23885_tsport *port) +@@ -544,3 +549,19 @@ void netup_ci_exit(struct cx23885_tsport *port) dvb_ca_en50221_release(&state->ca); kfree(state); } @@ -4495,10 +4489,10 @@ index 16fa7ea..2b63f78 100644 + return 1; +} diff --git a/drivers/media/pci/cx23885/cimax2.h b/drivers/media/pci/cx23885/cimax2.h -index 518744a..39f3db7 100644 +index 565e958..0ce6d15 100644 --- a/drivers/media/pci/cx23885/cimax2.h +++ b/drivers/media/pci/cx23885/cimax2.h -@@ -41,7 +41,9 @@ extern int netup_ci_slot_ts_ctl(struct dvb_ca_en50221 *en50221, int slot); +@@ -37,7 +37,9 @@ extern int netup_ci_slot_ts_ctl(struct dvb_ca_en50221 *en50221, int slot); extern int netup_ci_slot_status(struct cx23885_dev *dev, u32 pci_status); extern int netup_poll_ci_slot_status(struct dvb_ca_en50221 *en50221, int slot, int open); @@ -4510,10 +4504,10 @@ index 518744a..39f3db7 100644 + #endif diff --git a/drivers/media/pci/cx23885/cx23885-cards.c b/drivers/media/pci/cx23885/cx23885-cards.c -index c2b6080..51b8b56 100644 +index 88c257d..0b3a071 100644 --- a/drivers/media/pci/cx23885/cx23885-cards.c +++ b/drivers/media/pci/cx23885/cx23885-cards.c -@@ -613,6 +613,34 @@ struct cx23885_board cx23885_boards[] = { +@@ -609,6 +609,29 @@ struct cx23885_board cx23885_boards[] = { .name = "TeVii S471", .portb = CX23885_MPEG_DVB, }, @@ -4539,16 +4533,11 @@ index c2b6080..51b8b56 100644 + .ci_type = 3, + .name = "DVBSKY C2800E DVB-C CI", + .portb = CX23885_MPEG_DVB, -+ }, -+ [CX23885_BOARD_DVBSKY_T9580] = { -+ .name = "DVBSKY T9580", -+ .portb = CX23885_MPEG_DVB, -+ .portc = CX23885_MPEG_DVB, + }, [CX23885_BOARD_PROF_8000] = { .name = "Prof Revolution DVB-S2 8000", .portb = CX23885_MPEG_DVB, -@@ -903,6 +931,30 @@ struct cx23885_subid cx23885_subids[] = { +@@ -904,6 +927,26 @@ struct cx23885_subid cx23885_subids[] = { .subdevice = 0x9022, .card = CX23885_BOARD_TEVII_S471, }, { @@ -4571,17 +4560,13 @@ index c2b6080..51b8b56 100644 + .subvendor = 0x4254, + .subdevice = 0x2800, + .card = CX23885_BOARD_DVBSKY_C2800E_CI, -+ }, { -+ .subvendor = 0x4254, -+ .subdevice = 0x9580, -+ .card = CX23885_BOARD_DVBSKY_T9580, + }, { .subvendor = 0x8000, .subdevice = 0x3034, .card = CX23885_BOARD_PROF_8000, -@@ -1528,9 +1580,84 @@ void cx23885_gpio_setup(struct cx23885_dev *dev) - cx_set(GP0_IO, 0x00040004); - mdelay(60); +@@ -1541,9 +1584,83 @@ void cx23885_gpio_setup(struct cx23885_dev *dev) + mdelay(100); + cx23885_gpio_set(dev, GPIO_2 | GPIO_11); break; + case CX23885_BOARD_DVBSKY_S950: + case CX23885_BOARD_BST_PS8512: @@ -4591,7 +4576,6 @@ index c2b6080..51b8b56 100644 + cx23885_gpio_set(dev, GPIO_2); + break; + case CX23885_BOARD_DVBSKY_S952: -+ case CX23885_BOARD_DVBSKY_T9580: + cx_write(MC417_CTL, 0x00000037);/* enable GPIO3-18 pins */ + + cx23885_gpio_enable(dev, GPIO_2, 1); @@ -4664,7 +4648,7 @@ index c2b6080..51b8b56 100644 int cx23885_ir_init(struct cx23885_dev *dev) { static struct v4l2_subdev_io_pin_config ir_rxtx_pin_cfg[] = { -@@ -1618,6 +1745,23 @@ int cx23885_ir_init(struct cx23885_dev *dev) +@@ -1631,6 +1748,22 @@ int cx23885_ir_init(struct cx23885_dev *dev) v4l2_subdev_call(dev->sd_cx25840, core, s_io_pin_config, ir_rx_pin_cfg_count, ir_rx_pin_cfg); break; @@ -4673,7 +4657,6 @@ index c2b6080..51b8b56 100644 + case CX23885_BOARD_DVBSKY_S952: + case CX23885_BOARD_DVBSKY_S950_CI: + case CX23885_BOARD_DVBSKY_C2800E_CI: -+ case CX23885_BOARD_DVBSKY_T9580: + dev->sd_ir = cx23885_find_hw(dev, CX23885_HW_AV_CORE); + if (dev->sd_ir == NULL) { + ret = -ENODEV; @@ -4688,7 +4671,7 @@ index c2b6080..51b8b56 100644 case CX23885_BOARD_HAUPPAUGE_HVR1250: if (!enable_885_ir) break; -@@ -1648,6 +1792,12 @@ void cx23885_ir_fini(struct cx23885_dev *dev) +@@ -1661,6 +1794,11 @@ void cx23885_ir_fini(struct cx23885_dev *dev) cx23888_ir_remove(dev); dev->sd_ir = NULL; break; @@ -4697,11 +4680,10 @@ index c2b6080..51b8b56 100644 + case CX23885_BOARD_DVBSKY_S952: + case CX23885_BOARD_DVBSKY_S950_CI: + case CX23885_BOARD_DVBSKY_C2800E_CI: -+ case CX23885_BOARD_DVBSKY_T9580: case CX23885_BOARD_TERRATEC_CINERGY_T_PCIE_DUAL: case CX23885_BOARD_TEVII_S470: case CX23885_BOARD_HAUPPAUGE_HVR1250: -@@ -1695,6 +1845,12 @@ void cx23885_ir_pci_int_enable(struct cx23885_dev *dev) +@@ -1708,6 +1846,11 @@ void cx23885_ir_pci_int_enable(struct cx23885_dev *dev) if (dev->sd_ir) cx23885_irq_add_enable(dev, PCI_MSK_IR); break; @@ -4710,11 +4692,10 @@ index c2b6080..51b8b56 100644 + case CX23885_BOARD_DVBSKY_S952: + case CX23885_BOARD_DVBSKY_S950_CI: + case CX23885_BOARD_DVBSKY_C2800E_CI: -+ case CX23885_BOARD_DVBSKY_T9580: case CX23885_BOARD_TERRATEC_CINERGY_T_PCIE_DUAL: case CX23885_BOARD_TEVII_S470: case CX23885_BOARD_HAUPPAUGE_HVR1250: -@@ -1800,6 +1956,10 @@ void cx23885_card_setup(struct cx23885_dev *dev) +@@ -1813,6 +1956,10 @@ void cx23885_card_setup(struct cx23885_dev *dev) ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */ ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; break; @@ -4725,7 +4706,7 @@ index c2b6080..51b8b56 100644 case CX23885_BOARD_TEVII_S470: case CX23885_BOARD_TEVII_S471: case CX23885_BOARD_DVBWORLD_2005: -@@ -1851,6 +2011,22 @@ void cx23885_card_setup(struct cx23885_dev *dev) +@@ -1872,6 +2019,14 @@ void cx23885_card_setup(struct cx23885_dev *dev) ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */ ts2->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; break; @@ -4737,18 +4718,10 @@ index c2b6080..51b8b56 100644 + ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */ + ts2->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; + break; -+ case CX23885_BOARD_DVBSKY_T9580: -+ ts1->gen_ctrl_val = 0x5; /* Parallel */ -+ ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */ -+ ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; -+ ts2->gen_ctrl_val = 0x8; /* Serial bus */ -+ ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */ -+ ts2->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; -+ break; case CX23885_BOARD_HAUPPAUGE_HVR1250: case CX23885_BOARD_HAUPPAUGE_HVR1500: case CX23885_BOARD_HAUPPAUGE_HVR1500Q: -@@ -1910,6 +2086,12 @@ void cx23885_card_setup(struct cx23885_dev *dev) +@@ -1931,6 +2086,11 @@ void cx23885_card_setup(struct cx23885_dev *dev) case CX23885_BOARD_MPX885: case CX23885_BOARD_MYGICA_X8507: case CX23885_BOARD_TERRATEC_CINERGY_T_PCIE_DUAL: @@ -4757,15 +4730,14 @@ index c2b6080..51b8b56 100644 + case CX23885_BOARD_DVBSKY_S952: + case CX23885_BOARD_DVBSKY_S950_CI: + case CX23885_BOARD_DVBSKY_C2800E_CI: -+ case CX23885_BOARD_DVBSKY_T9580: case CX23885_BOARD_AVERMEDIA_HC81R: case CX23885_BOARD_TBS_6980: case CX23885_BOARD_TBS_6981: diff --git a/drivers/media/pci/cx23885/cx23885-core.c b/drivers/media/pci/cx23885/cx23885-core.c -index edcd79d..4b57eef 100644 +index 331edda..32881a6 100644 --- a/drivers/media/pci/cx23885/cx23885-core.c +++ b/drivers/media/pci/cx23885/cx23885-core.c -@@ -1909,6 +1909,10 @@ static irqreturn_t cx23885_irq(int irq, void *dev_id) +@@ -1772,6 +1772,10 @@ static irqreturn_t cx23885_irq(int irq, void *dev_id) (pci_status & PCI_MSK_GPIO0)) handled += altera_ci_irq(dev); @@ -4776,7 +4748,7 @@ index edcd79d..4b57eef 100644 if (ts1_status) { if (cx23885_boards[dev->board].portb == CX23885_MPEG_DVB) handled += cx23885_irq_ts(ts1, ts1_status); -@@ -2141,6 +2145,8 @@ static int cx23885_initdev(struct pci_dev *pci_dev, +@@ -2013,6 +2017,8 @@ static int cx23885_initdev(struct pci_dev *pci_dev, cx23885_irq_add_enable(dev, PCI_MSK_GPIO1 | PCI_MSK_GPIO0); break; case CX23885_BOARD_NETUP_DUAL_DVB_T_C_CI_RF: @@ -4786,10 +4758,10 @@ index edcd79d..4b57eef 100644 break; } diff --git a/drivers/media/pci/cx23885/cx23885-dvb.c b/drivers/media/pci/cx23885/cx23885-dvb.c -index 968fecc..966e1d0 100644 +index 13734b8..5726509 100644 --- a/drivers/media/pci/cx23885/cx23885-dvb.c +++ b/drivers/media/pci/cx23885/cx23885-dvb.c -@@ -53,6 +53,8 @@ +@@ -49,6 +49,8 @@ #include "lnbh24.h" #include "cx24116.h" #include "cx24117.h" @@ -4798,7 +4770,7 @@ index 968fecc..966e1d0 100644 #include "cimax2.h" #include "lgs8gxx.h" #include "netup-eeprom.h" -@@ -515,6 +517,93 @@ static struct xc5000_config mygica_x8507_xc5000_config = { +@@ -551,6 +553,93 @@ static struct xc5000_config mygica_x8507_xc5000_config = { .if_khz = 4000, }; @@ -4892,7 +4864,7 @@ index 968fecc..966e1d0 100644 static struct stv090x_config prof_8000_stv090x_config = { .device = STV0903, .demod_mode = STV090x_SINGLE, -@@ -1452,6 +1541,57 @@ static int dvb_register(struct cx23885_tsport *port) +@@ -1537,6 +1626,43 @@ static int dvb_register(struct cx23885_tsport *port) &tevii_ts2020_config, &i2c_bus->i2c_adap); } break; @@ -4933,24 +4905,10 @@ index 968fecc..966e1d0 100644 + &dvbsky_dc2800_config, + &i2c_bus->i2c_adap); + break; -+ case CX23885_BOARD_DVBSKY_T9580: -+ switch (port->nr) { -+ /* port B */ -+ case 1: -+ i2c_bus = &dev->i2c_bus[1]; -+ fe0->dvb.frontend = dvb_attach(dvbsky_m88ds3103_attach, -+ &dvbsky_ds3103_config_pri, -+ &i2c_bus->i2c_adap); -+ break; -+ /* port C */ -+ case 2: -+ break; -+ } -+ break; case CX23885_BOARD_PROF_8000: i2c_bus = &dev->i2c_bus[0]; -@@ -1548,7 +1688,7 @@ static int dvb_register(struct cx23885_tsport *port) +@@ -1724,7 +1850,7 @@ static int dvb_register(struct cx23885_tsport *port) printk(KERN_INFO "NetUP Dual DVB-S2 CI card port%d MAC=%pM\n", port->nr, port->frontends.adapter.proposed_mac); @@ -4959,14 +4917,13 @@ index 968fecc..966e1d0 100644 break; } case CX23885_BOARD_NETUP_DUAL_DVB_T_C_CI_RF: { -@@ -1575,6 +1715,41 @@ static int dvb_register(struct cx23885_tsport *port) - memcpy(port->frontends.adapter.proposed_mac, eeprom + 0xa0, 6); +@@ -1767,6 +1893,40 @@ static int dvb_register(struct cx23885_tsport *port) + (port->nr-1) * 8, 6); break; } + case CX23885_BOARD_BST_PS8512: + case CX23885_BOARD_DVBSKY_S950: -+ case CX23885_BOARD_DVBSKY_S952: -+ case CX23885_BOARD_DVBSKY_T9580:{ ++ case CX23885_BOARD_DVBSKY_S952:{ + u8 eeprom[256]; /* 24C02 i2c eeprom */ + + if(port->nr > 2) @@ -5001,7 +4958,7 @@ index 968fecc..966e1d0 100644 } return ret; -@@ -1657,6 +1832,8 @@ int cx23885_dvb_unregister(struct cx23885_tsport *port) +@@ -1871,6 +2031,8 @@ int cx23885_dvb_unregister(struct cx23885_tsport *port) switch (port->dev->board) { case CX23885_BOARD_NETUP_DUAL_DVBS2_CI: @@ -5011,10 +4968,10 @@ index 968fecc..966e1d0 100644 break; case CX23885_BOARD_NETUP_DUAL_DVB_T_C_CI_RF: diff --git a/drivers/media/pci/cx23885/cx23885-input.c b/drivers/media/pci/cx23885/cx23885-input.c -index 1940c18..af20f25 100644 +index 9d37fe6..7b34f7e 100644 --- a/drivers/media/pci/cx23885/cx23885-input.c +++ b/drivers/media/pci/cx23885/cx23885-input.c -@@ -89,6 +89,12 @@ void cx23885_input_rx_work_handler(struct cx23885_dev *dev, u32 events) +@@ -84,6 +84,11 @@ void cx23885_input_rx_work_handler(struct cx23885_dev *dev, u32 events) case CX23885_BOARD_TERRATEC_CINERGY_T_PCIE_DUAL: case CX23885_BOARD_TEVII_S470: case CX23885_BOARD_HAUPPAUGE_HVR1250: @@ -5023,11 +4980,10 @@ index 1940c18..af20f25 100644 + case CX23885_BOARD_DVBSKY_S952: + case CX23885_BOARD_DVBSKY_S950_CI: + case CX23885_BOARD_DVBSKY_C2800E_CI: -+ case CX23885_BOARD_DVBSKY_T9580: case CX23885_BOARD_MYGICA_X8507: case CX23885_BOARD_TBS_6980: case CX23885_BOARD_TBS_6981: -@@ -143,6 +149,12 @@ static int cx23885_input_ir_start(struct cx23885_dev *dev) +@@ -138,6 +143,11 @@ static int cx23885_input_ir_start(struct cx23885_dev *dev) case CX23885_BOARD_HAUPPAUGE_HVR1850: case CX23885_BOARD_HAUPPAUGE_HVR1290: case CX23885_BOARD_HAUPPAUGE_HVR1250: @@ -5036,11 +4992,10 @@ index 1940c18..af20f25 100644 + case CX23885_BOARD_DVBSKY_S952: + case CX23885_BOARD_DVBSKY_S950_CI: + case CX23885_BOARD_DVBSKY_C2800E_CI: -+ case CX23885_BOARD_DVBSKY_T9580: case CX23885_BOARD_MYGICA_X8507: /* * The IR controller on this board only returns pulse widths. -@@ -295,6 +307,18 @@ int cx23885_input_init(struct cx23885_dev *dev) +@@ -290,6 +300,17 @@ int cx23885_input_init(struct cx23885_dev *dev) /* A guess at the remote */ rc_map = RC_MAP_TEVII_NEC; break; @@ -5049,7 +5004,6 @@ index 1940c18..af20f25 100644 + case CX23885_BOARD_DVBSKY_S952: + case CX23885_BOARD_DVBSKY_S950_CI: + case CX23885_BOARD_DVBSKY_C2800E_CI: -+ case CX23885_BOARD_DVBSKY_T9580: + /* Integrated CX2388[58] IR controller */ + driver_type = RC_DRIVER_IR_RAW; + allowed_protos = RC_BIT_ALL; @@ -5060,25 +5014,24 @@ index 1940c18..af20f25 100644 /* Integrated CX23885 IR controller */ driver_type = RC_DRIVER_IR_RAW; diff --git a/drivers/media/pci/cx23885/cx23885.h b/drivers/media/pci/cx23885/cx23885.h -index 0e086c0..f870b83 100644 +index 6c35e61..18ccb51 100644 --- a/drivers/media/pci/cx23885/cx23885.h +++ b/drivers/media/pci/cx23885/cx23885.h -@@ -99,6 +99,14 @@ - #define CX23885_BOARD_HAUPPAUGE_IMPACTVCBE 43 +@@ -94,6 +94,13 @@ #define CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP2 44 + #define CX23885_BOARD_DVBSKY_T9580 45 -+#define CX23885_BOARD_BASE_INDEX 45 ++#define CX23885_BOARD_BASE_INDEX 46 +#define CX23885_BOARD_BST_PS8512 (CX23885_BOARD_BASE_INDEX) +#define CX23885_BOARD_DVBSKY_S952 (CX23885_BOARD_BASE_INDEX+1) +#define CX23885_BOARD_DVBSKY_S950 (CX23885_BOARD_BASE_INDEX+2) +#define CX23885_BOARD_DVBSKY_S950_CI (CX23885_BOARD_BASE_INDEX+3) +#define CX23885_BOARD_DVBSKY_C2800E_CI (CX23885_BOARD_BASE_INDEX+4) -+#define CX23885_BOARD_DVBSKY_T9580 (CX23885_BOARD_BASE_INDEX+5) + #define GPIO_0 0x00000001 #define GPIO_1 0x00000002 #define GPIO_2 0x00000004 -@@ -236,7 +244,7 @@ struct cx23885_board { +@@ -207,7 +214,7 @@ struct cx23885_board { */ u32 clk_freq; struct cx23885_input input[MAX_CX23885_INPUT]; @@ -5100,7 +5053,7 @@ index a63a9ad..7deb300 100644 select DVB_STV0288 if MEDIA_SUBDRV_AUTOSELECT select DVB_STB6000 if MEDIA_SUBDRV_AUTOSELECT diff --git a/drivers/media/pci/cx88/cx88-cards.c b/drivers/media/pci/cx88/cx88-cards.c -index e18a7ac..317511d 100644 +index 851754b..b90baa7 100644 --- a/drivers/media/pci/cx88/cx88-cards.c +++ b/drivers/media/pci/cx88/cx88-cards.c @@ -2314,6 +2314,18 @@ static const struct cx88_board cx88_boards[] = { @@ -5290,887 +5243,6 @@ index 28893a6..5fa5f48 100644 enum cx88_itype { CX88_VMUX_COMPOSITE1 = 1, -diff --git a/drivers/media/rc/keymaps/Makefile b/drivers/media/rc/keymaps/Makefile -index 0b8c549..abf6079 100644 ---- a/drivers/media/rc/keymaps/Makefile -+++ b/drivers/media/rc/keymaps/Makefile -@@ -28,6 +28,7 @@ obj-$(CONFIG_RC_MAP) += rc-adstech-dvb-t-pci.o \ - rc-dm1105-nec.o \ - rc-dntv-live-dvb-t.o \ - rc-dntv-live-dvbt-pro.o \ -+ rc-dvbsky.o \ - rc-em-terratec.o \ - rc-encore-enltv2.o \ - rc-encore-enltv.o \ -diff --git a/drivers/media/rc/keymaps/rc-dvbsky.c b/drivers/media/rc/keymaps/rc-dvbsky.c -new file mode 100644 -index 0000000..bfc41fb ---- /dev/null -+++ b/drivers/media/rc/keymaps/rc-dvbsky.c -@@ -0,0 +1,78 @@ -+/* rc-dvbsky.c - Keytable for Dvbsky Remote Controllers -+ * -+ * keymap imported from ir-keymaps.c -+ * -+ * -+ * Copyright (c) 2010-2012 by Nibble Max -+ * -+ * 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 -+#include -+/* -+ * This table contains the complete RC5 code, instead of just the data part -+ */ -+ -+static struct rc_map_table rc5_dvbsky[] = { -+ { 0x0000, KEY_0 }, -+ { 0x0001, KEY_1 }, -+ { 0x0002, KEY_2 }, -+ { 0x0003, KEY_3 }, -+ { 0x0004, KEY_4 }, -+ { 0x0005, KEY_5 }, -+ { 0x0006, KEY_6 }, -+ { 0x0007, KEY_7 }, -+ { 0x0008, KEY_8 }, -+ { 0x0009, KEY_9 }, -+ { 0x000a, KEY_MUTE }, -+ { 0x000d, KEY_OK }, -+ { 0x000b, KEY_STOP }, -+ { 0x000c, KEY_EXIT }, -+ { 0x000e, KEY_CAMERA }, /*Snap shot*/ -+ { 0x000f, KEY_SUBTITLE }, /*PIP*/ -+ { 0x0010, KEY_VOLUMEUP }, -+ { 0x0011, KEY_VOLUMEDOWN }, -+ { 0x0012, KEY_FAVORITES }, -+ { 0x0013, KEY_LIST }, /*Info*/ -+ { 0x0016, KEY_PAUSE }, -+ { 0x0017, KEY_PLAY }, -+ { 0x001f, KEY_RECORD }, -+ { 0x0020, KEY_CHANNELDOWN }, -+ { 0x0021, KEY_CHANNELUP }, -+ { 0x0025, KEY_POWER2 }, -+ { 0x0026, KEY_REWIND }, -+ { 0x0027, KEY_FASTFORWARD }, -+ { 0x0029, KEY_LAST }, -+ { 0x002b, KEY_MENU }, -+ { 0x002c, KEY_EPG }, -+ { 0x002d, KEY_ZOOM }, -+}; -+ -+static struct rc_map_list rc5_dvbsky_map = { -+ .map = { -+ .scan = rc5_dvbsky, -+ .size = ARRAY_SIZE(rc5_dvbsky), -+ .rc_type = RC_TYPE_RC5, -+ .name = RC_MAP_DVBSKY, -+ } -+}; -+ -+static int __init init_rc_map_rc5_dvbsky(void) -+{ -+ return rc_map_register(&rc5_dvbsky_map); -+} -+ -+static void __exit exit_rc_map_rc5_dvbsky(void) -+{ -+ rc_map_unregister(&rc5_dvbsky_map); -+} -+ -+module_init(init_rc_map_rc5_dvbsky) -+module_exit(exit_rc_map_rc5_dvbsky) -+ -+MODULE_LICENSE("GPL"); -+MODULE_AUTHOR("Nibble Max "); -diff --git a/drivers/media/usb/dvb-usb-v2/Kconfig b/drivers/media/usb/dvb-usb-v2/Kconfig -index 66645b0..e2f282b 100644 ---- a/drivers/media/usb/dvb-usb-v2/Kconfig -+++ b/drivers/media/usb/dvb-usb-v2/Kconfig -@@ -141,3 +141,9 @@ config DVB_USB_RTL28XXU - help - Say Y here to support the Realtek RTL28xxU DVB USB receiver. - -+config DVB_USB_DVBSKY -+ tristate "DVBSky USB2.0 support" -+ depends on DVB_USB_V2 -+ select DVB_DVBSKY_M88DS3103 if MEDIA_SUBDRV_AUTOSELECT -+ help -+ Say Y here to support the USB receivers from DVBSky. -diff --git a/drivers/media/usb/dvb-usb-v2/Makefile b/drivers/media/usb/dvb-usb-v2/Makefile -index bc38f03..f10d4df 100644 ---- a/drivers/media/usb/dvb-usb-v2/Makefile -+++ b/drivers/media/usb/dvb-usb-v2/Makefile -@@ -37,6 +37,9 @@ obj-$(CONFIG_DVB_USB_MXL111SF) += mxl111sf-tuner.o - dvb-usb-rtl28xxu-objs := rtl28xxu.o - obj-$(CONFIG_DVB_USB_RTL28XXU) += dvb-usb-rtl28xxu.o - -+dvb-usb-dvbsky-objs := dvbsky.o -+obj-$(CONFIG_DVB_USB_DVBSKY) += dvb-usb-dvbsky.o -+ - ccflags-y += -I$(srctree)/drivers/media/dvb-core - ccflags-y += -I$(srctree)/drivers/media/dvb-frontends - ccflags-y += -I$(srctree)/drivers/media/tuners -diff --git a/drivers/media/usb/dvb-usb-v2/dvbsky.c b/drivers/media/usb/dvb-usb-v2/dvbsky.c -new file mode 100644 -index 0000000..9033d92 ---- /dev/null -+++ b/drivers/media/usb/dvb-usb-v2/dvbsky.c -@@ -0,0 +1,739 @@ -+/* -+ * Driver for DVBSky USB2.0 receiver -+ * -+ * Copyright (C) 2013 Max nibble -+ * -+ * CIMax code is copied and modified from: -+ * CIMax2(R) SP2 driver in conjunction with NetUp Dual DVB-S2 CI card -+ * Copyright (C) 2009 NetUP Inc. -+ * Copyright (C) 2009 Igor M. Liplianin -+ * Copyright (C) 2009 Abylay Ospan -+ * -+ * 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. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ */ -+ -+#include "dvb_ca_en50221.h" -+#include "dvb_usb.h" -+#include "dvbsky_m88ds3103.h" -+ -+static int dvbsky_debug; -+module_param(dvbsky_debug, int, 0644); -+MODULE_PARM_DESC(dvbsky_debug, "Activates dvbsky usb debugging (default:0)"); -+ -+#define DVBSKY_CI_CTL 0x04 -+#define DVBSKY_CI_RD 1 -+ -+#define dprintk(args...) \ -+ do { \ -+ if (dvbsky_debug) \ -+ printk(KERN_INFO "dvbsky_usb: " args); \ -+ } while (0) -+ -+DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); -+ -+struct dvbsky_state { -+ struct mutex stream_mutex; -+ u8 has_ci; -+ u8 ci_attached; -+ struct dvb_ca_en50221 ci; -+ unsigned long next_status_checked_time; -+ u8 ci_i2c_addr; -+ u8 current_ci_flag; -+ int ci_status; -+}; -+ -+static int dvbsky_stream_ctrl(struct dvb_usb_device *d, u8 onoff) -+{ -+ struct dvbsky_state *state = d_to_priv(d); -+ int ret; -+ u8 obuf_pre[3] = { 0x37, 0, 0 }; -+ u8 obuf_post[3] = { 0x36, 3, 0 }; -+ dprintk("%s() -off \n", __func__); -+ mutex_lock(&state->stream_mutex); -+ ret = dvb_usbv2_generic_write(d, obuf_pre, 3); -+ if (!ret && onoff) { -+ msleep(10); -+ ret = dvb_usbv2_generic_write(d, obuf_post, 3); -+ dprintk("%s() -on \n", __func__); -+ } -+ mutex_unlock(&state->stream_mutex); -+ return ret; -+} -+ -+/* CI opertaions */ -+static int dvbsky_ci_read_i2c(struct i2c_adapter *i2c_adap, u8 addr, u8 reg, -+ u8 *buf, int len) -+{ -+ int ret; -+ struct i2c_msg msg[] = { -+ { -+ .addr = addr, -+ .flags = 0, -+ .buf = ®, -+ .len = 1 -+ }, { -+ .addr = addr, -+ .flags = I2C_M_RD, -+ .buf = buf, -+ .len = len -+ } -+ }; -+ -+ ret = i2c_transfer(i2c_adap, msg, 2); -+ -+ if (ret != 2) { -+ dprintk("%s: error, Reg = 0x%02x, Status = %d\n", __func__, reg, ret); -+ return -1; -+ } -+ return 0; -+} -+ -+static int dvbsky_ci_write_i2c(struct i2c_adapter *i2c_adap, u8 addr, u8 reg, -+ u8 *buf, int len) -+{ -+ int ret; -+ u8 buffer[len + 1]; -+ -+ struct i2c_msg msg = { -+ .addr = addr, -+ .flags = 0, -+ .buf = &buffer[0], -+ .len = len + 1 -+ }; -+ -+ buffer[0] = reg; -+ memcpy(&buffer[1], buf, len); -+ -+ ret = i2c_transfer(i2c_adap, &msg, 1); -+ -+ if (ret != 1) { -+ dprintk("%s: error, Reg=[0x%02x], Status=%d\n", __func__, reg, ret); -+ return -1; -+ } -+ return 0; -+} -+ -+static int dvbsky_ci_op_cam(struct dvb_ca_en50221 *ci, int slot, -+ u8 flag, u8 read, int addr, u8 data) -+{ -+ struct dvb_usb_device *d = ci->data; -+ struct dvbsky_state *state = d_to_priv(d); -+ u8 store; -+ int ret; -+ u8 command[4], respond[2], command_size, respond_size; -+ -+ /*dprintk("%s()\n", __func__);*/ -+ if (0 != slot) -+ return -EINVAL; -+ -+ if (state->current_ci_flag != flag) { -+ ret = dvbsky_ci_read_i2c(&d->i2c_adap, state->ci_i2c_addr, -+ 0, &store, 1); -+ if (ret != 0) -+ return ret; -+ -+ store &= ~0x0c; -+ store |= flag; -+ -+ ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr, -+ 0, &store, 1); -+ if (ret != 0) -+ return ret; -+ } -+ state->current_ci_flag = flag; -+ -+ command[1] = (u8)((addr >> 8) & 0xff); /*high part of address*/ -+ command[2] = (u8)(addr & 0xff); /*low part of address*/ -+ if (read) { -+ command[0] = 0x71; -+ command_size = 3; -+ respond_size = 2; -+ } else { -+ command[0] = 0x70; -+ command[3] = data; -+ command_size = 4; -+ respond_size = 1; -+ } -+ ret = dvb_usbv2_generic_rw(d, command, command_size, respond, respond_size); -+ -+ return (read) ? respond[1] : 0; -+} -+ -+static int dvbsky_ci_read_attribute_mem(struct dvb_ca_en50221 *ci, -+ int slot, int addr) -+{ -+ return dvbsky_ci_op_cam(ci, slot, 0, DVBSKY_CI_RD, addr, 0); -+} -+ -+static int dvbsky_ci_write_attribute_mem(struct dvb_ca_en50221 *ci, -+ int slot, int addr, u8 data) -+{ -+ return dvbsky_ci_op_cam(ci, slot, 0, 0, addr, data); -+} -+ -+static int dvbsky_ci_read_cam_ctl(struct dvb_ca_en50221 *ci, int slot, u8 addr) -+{ -+ return dvbsky_ci_op_cam(ci, slot, DVBSKY_CI_CTL, DVBSKY_CI_RD, addr, 0); -+} -+ -+static int dvbsky_ci_write_cam_ctl(struct dvb_ca_en50221 *ci, int slot, -+ u8 addr, u8 data) -+{ -+ return dvbsky_ci_op_cam(ci, slot, DVBSKY_CI_CTL, 0, addr, data); -+} -+ -+static int dvbsky_ci_slot_reset(struct dvb_ca_en50221 *ci, int slot) -+{ -+ struct dvb_usb_device *d = ci->data; -+ struct dvbsky_state *state = d_to_priv(d); -+ u8 buf = 0x80; -+ int ret; -+ dprintk("%s() slot=%d\n", __func__, slot); -+ -+ if (0 != slot) -+ return -EINVAL; -+ -+ udelay(500); -+ ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr, -+ 0, &buf, 1); -+ -+ if (ret != 0) -+ return ret; -+ -+ udelay(500); -+ -+ buf = 0x00; -+ ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr, -+ 0, &buf, 1); -+ msleep(1000); -+ dprintk("%s() slot=%d complete\n", __func__, slot); -+ return 0; -+ -+} -+ -+static int dvbsky_ci_slot_shutdown(struct dvb_ca_en50221 *ci, int slot) -+{ -+ /* not implemented */ -+ dprintk("%s()\n", __func__); -+ return 0; -+} -+ -+static int dvbsky_ci_slot_ts_enable(struct dvb_ca_en50221 *ci, int slot) -+{ -+ struct dvb_usb_device *d = ci->data; -+ struct dvbsky_state *state = d_to_priv(d); -+ u8 buf; -+ int ret; -+ -+ dprintk("%s()\n", __func__); -+ if (0 != slot) -+ return -EINVAL; -+ -+ dvbsky_ci_read_i2c(&d->i2c_adap, state->ci_i2c_addr, -+ 0, &buf, 1); -+ buf |= 0x60; -+ -+ ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr, -+ 0, &buf, 1); -+ return ret; -+} -+ -+static int dvbsky_ci_poll_slot_status(struct dvb_ca_en50221 *ci, int slot, -+ int open) -+{ -+ struct dvb_usb_device *d = ci->data; -+ struct dvbsky_state *state = d_to_priv(d); -+ int ret = 0; -+ u8 buf = 0; -+ /*dprintk("%s()\n", __func__);*/ -+ -+ /* CAM module INSERT/REMOVE processing. slow operation because of i2c -+ * transfers */ -+ if (time_after(jiffies, state->next_status_checked_time)) { -+ ret = dvbsky_ci_read_i2c(&d->i2c_adap, state->ci_i2c_addr, -+ 0, &buf, 1); -+ -+ /*dprintk("%s() status=%x\n", __func__, buf);*/ -+ -+ state->next_status_checked_time = jiffies -+ + msecs_to_jiffies(1000); -+ -+ if (ret != 0) -+ return 0; -+ -+ if (buf & 1) { -+ state->ci_status = DVB_CA_EN50221_POLL_CAM_PRESENT | -+ DVB_CA_EN50221_POLL_CAM_READY; -+ } -+ else -+ state->ci_status = 0; -+ } -+ /*dprintk("%s() ret=%x\n", __func__, state->ci_status);*/ -+ return state->ci_status; -+} -+ -+static int dvbsky_ci_init(struct dvb_usb_device *d) -+{ -+ struct dvbsky_state *state = d_to_priv(d); -+ int ret; -+ u8 cimax_init[34] = { -+ 0x00, /* module A control*/ -+ 0x00, /* auto select mask high A */ -+ 0x00, /* auto select mask low A */ -+ 0x00, /* auto select pattern high A */ -+ 0x00, /* auto select pattern low A */ -+ 0x44, /* memory access time A */ -+ 0x00, /* invert input A */ -+ 0x00, /* RFU */ -+ 0x00, /* RFU */ -+ 0x00, /* module B control*/ -+ 0x00, /* auto select mask high B */ -+ 0x00, /* auto select mask low B */ -+ 0x00, /* auto select pattern high B */ -+ 0x00, /* auto select pattern low B */ -+ 0x44, /* memory access time B */ -+ 0x00, /* invert input B */ -+ 0x00, /* RFU */ -+ 0x00, /* RFU */ -+ 0x00, /* auto select mask high Ext */ -+ 0x00, /* auto select mask low Ext */ -+ 0x00, /* auto select pattern high Ext */ -+ 0x00, /* auto select pattern low Ext */ -+ 0x00, /* RFU */ -+ 0x02, /* destination - module A */ -+ 0x01, /* power on (use it like store place) */ -+ 0x00, /* RFU */ -+ 0x00, /* int status read only */ -+ 0x00, /* Max: Disable the interrupt in USB solution.*/ -+ 0x05, /* EXTINT=active-high, INT=push-pull */ -+ 0x00, /* USCG1 */ -+ 0x04, /* ack active low */ -+ 0x00, /* LOCK = 0 */ -+ 0x22, /* serial mode, rising in, rising out, MSB first*/ -+ 0x00 /* synchronization */ -+ }; -+ dprintk("%s()\n", __func__); -+ state->current_ci_flag = 0xff; -+ state->ci_status = 0; -+ state->next_status_checked_time = jiffies + msecs_to_jiffies(1000); -+ state->ci_i2c_addr = 0x40; -+ -+ state->ci.owner = THIS_MODULE; -+ state->ci.read_attribute_mem = dvbsky_ci_read_attribute_mem; -+ state->ci.write_attribute_mem = dvbsky_ci_write_attribute_mem; -+ state->ci.read_cam_control = dvbsky_ci_read_cam_ctl; -+ state->ci.write_cam_control = dvbsky_ci_write_cam_ctl; -+ state->ci.slot_reset = dvbsky_ci_slot_reset; -+ state->ci.slot_shutdown = dvbsky_ci_slot_shutdown; -+ state->ci.slot_ts_enable = dvbsky_ci_slot_ts_enable; -+ state->ci.poll_slot_status = dvbsky_ci_poll_slot_status; -+ state->ci.data = d; -+ -+ ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr, -+ 0, &cimax_init[0], 34); -+ /* lock registers */ -+ ret |= dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr, -+ 0x1f, &cimax_init[0x18], 1); -+ /* power on slots */ -+ ret |= dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr, -+ 0x18, &cimax_init[0x18], 1); -+ if (0 != ret) -+ return ret; -+ -+ ret = dvb_ca_en50221_init(&d->adapter[0].dvb_adap, &state->ci, 0, 1); -+ if (ret) -+ return ret; -+ state->ci_attached = 1; -+ dprintk("%s() complete.\n", __func__); -+ return 0; -+} -+ -+static void dvbsky_ci_release(struct dvb_usb_device *d) -+{ -+ struct dvbsky_state *state = d_to_priv(d); -+ -+ /* detach CI */ -+ if (state->ci_attached) -+ dvb_ca_en50221_release(&state->ci); -+ -+ return; -+} -+ -+static int dvbsky_streaming_ctrl(struct dvb_frontend *fe, int onoff) -+{ -+ struct dvb_usb_device *d = fe_to_d(fe); -+ /*dprintk("%s() %d\n", __func__, onoff);*/ -+ return dvbsky_stream_ctrl(d, (onoff == 0) ? 0 : 1); -+} -+ -+/* GPIO */ -+static int dvbsky_gpio_ctrl(struct dvb_usb_device *d, u8 gport, u8 value) -+{ -+ u8 obuf[64], ibuf[64]; -+ obuf[0] = 0x0e; -+ obuf[1] = gport; -+ obuf[2] = value; -+ return dvb_usbv2_generic_rw(d, obuf, 3, ibuf, 1); -+} -+ -+/* I2C */ -+static int dvbsky_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msg[], -+ int num) -+{ -+ struct dvb_usb_device *d = i2c_get_adapdata(adap); -+ int ret = 0; -+ u8 ibuf[64], obuf[64]; -+ -+ if (mutex_lock_interruptible(&d->i2c_mutex) < 0) -+ return -EAGAIN; -+ -+ if (num > 2) { -+ printk(KERN_ERR "dvbsky_usb: too many i2c messages[%d] than 2.", num); -+ ret = -EOPNOTSUPP; -+ goto i2c_error; -+ } -+ -+ if(num == 1) { -+ if (msg[0].len > 60) { -+ printk(KERN_ERR "dvbsky_usb: too many i2c bytes[%d] than 60.", msg[0].len); -+ ret = -EOPNOTSUPP; -+ goto i2c_error; -+ } -+ if (msg[0].flags & I2C_M_RD) { -+ /* single read */ -+ obuf[0] = 0x09; -+ obuf[1] = 0; -+ obuf[2] = msg[0].len; -+ obuf[3] = msg[0].addr; -+ ret = dvb_usbv2_generic_rw(d, obuf, 4, ibuf, msg[0].len + 1); -+ /*dprintk("%s(): read status = %d\n", __func__, ibuf[0]);*/ -+ if (!ret) -+ memcpy(msg[0].buf, &ibuf[1], msg[0].len); -+ } else { -+ /* write */ -+ obuf[0] = 0x08; -+ obuf[1] = msg[0].addr; -+ obuf[2] = msg[0].len; -+ memcpy(&obuf[3], msg[0].buf, msg[0].len); -+ ret = dvb_usbv2_generic_rw(d, obuf, msg[0].len + 3, ibuf, 1); -+ /*dprintk("%s(): write status = %d\n", __func__, ibuf[0]);*/ -+ } -+ } else { -+ if ((msg[0].len > 60) || (msg[1].len > 60)) { -+ printk(KERN_ERR "dvbsky_usb: too many i2c bytes[w-%d][r-%d] than 60.", msg[0].len, msg[1].len); -+ ret = -EOPNOTSUPP; -+ goto i2c_error; -+ } -+ /* write then read */ -+ obuf[0] = 0x09; -+ obuf[1] = msg[0].len; -+ obuf[2] = msg[1].len; -+ obuf[3] = msg[0].addr; -+ memcpy(&obuf[4], msg[0].buf, msg[0].len); -+ ret = dvb_usbv2_generic_rw(d, obuf, msg[0].len + 4, ibuf, msg[1].len + 1); -+ /*dprintk("%s(): write then read status = %d\n", __func__, ibuf[0]);*/ -+ if (!ret) -+ memcpy(msg[1].buf, &ibuf[1], msg[1].len); -+ } -+i2c_error: -+ mutex_unlock(&d->i2c_mutex); -+ return (ret) ? ret : num; -+} -+ -+static u32 dvbsky_i2c_func(struct i2c_adapter *adapter) -+{ -+ return I2C_FUNC_I2C; -+} -+ -+static struct i2c_algorithm dvbsky_i2c_algo = { -+ .master_xfer = dvbsky_i2c_xfer, -+ .functionality = dvbsky_i2c_func, -+}; -+ -+#if IS_ENABLED(CONFIG_RC_CORE) -+static int dvbsky_rc_query(struct dvb_usb_device *d) -+{ -+ u32 code = 0xffff; -+ u8 obuf[2], ibuf[2], toggle; -+ int ret; -+ obuf[0] = 0x10; -+ ret = dvb_usbv2_generic_rw(d, obuf, 1, ibuf, 2); -+ if(ret == 0) -+ code = (ibuf[0] << 8) | ibuf[1]; -+ -+ if (code != 0xffff) { -+ dprintk("rc code: %x", code); -+ toggle = (code & 0x800) ? 1 : 0; -+ code &= 0x3f; -+ rc_keydown(d->rc_dev, RC_TYPE_UNKNOWN, code, toggle); -+ } -+ return 0; -+} -+ -+static int dvbsky_get_rc_config(struct dvb_usb_device *d, struct dvb_usb_rc *rc) -+{ -+ rc->allowed_protos = RC_BIT_RC5; -+ rc->query = dvbsky_rc_query; -+ rc->interval = 300; -+ return 0; -+} -+#else -+ #define dvbsky_get_rc_config NULL -+#endif -+ -+static int dvbsky_sync_ctrl(struct dvb_frontend *fe) -+{ -+ struct dvb_usb_device *d = fe_to_d(fe); -+ return dvbsky_stream_ctrl(d, 1); -+} -+ -+static int dvbsky_usb_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage) -+{ -+ struct dvb_usb_device *d = fe_to_d(fe); -+ u8 value; -+ -+ if (voltage == SEC_VOLTAGE_OFF) -+ value = 0; -+ else -+ value = 1; -+ return dvbsky_gpio_ctrl(d, 0x80, value); -+} -+ -+static int dvbsky_usb_ci_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage) -+{ -+ struct dvb_usb_device *d = fe_to_d(fe); -+ u8 value; -+ -+ if (voltage == SEC_VOLTAGE_OFF) -+ value = 0; -+ else -+ value = 1; -+ return dvbsky_gpio_ctrl(d, 0x00, value); -+} -+ -+static int dvbsky_read_mac_addr(struct dvb_usb_adapter *adap, u8 mac[6]) -+{ -+ struct dvb_usb_device *d = adap_to_d(adap); -+ u8 obuf[] = { 0x1e, 0x00 }; -+ u8 ibuf[6] = { 0 }; -+ struct i2c_msg msg[] = { -+ { -+ .addr = 0x51, -+ .flags = 0, -+ .buf = obuf, -+ .len = 2, -+ }, { -+ .addr = 0x51, -+ .flags = I2C_M_RD, -+ .buf = ibuf, -+ .len = 6, -+ -+ } -+ }; -+ -+ if (i2c_transfer(&d->i2c_adap, msg, 2) == 2) -+ memcpy(mac, ibuf, 6); -+ -+ printk(KERN_INFO "dvbsky_usb MAC address=%pM\n", mac); -+ -+ return 0; -+} -+ -+static struct dvbsky_m88ds3103_config dvbsky_usb_ds3103_config = { -+ .demod_address = 0x68, -+ .ci_mode = 1, -+ .pin_ctrl = 0x83, -+ .ts_mode = 0, -+ .start_ctrl = dvbsky_sync_ctrl, -+ .set_voltage = dvbsky_usb_set_voltage, -+}; -+ -+static int dvbsky_s960_attach(struct dvb_usb_adapter *adap) -+{ -+ struct dvbsky_state *state = adap_to_priv(adap); -+ struct dvb_usb_device *d = adap_to_d(adap); -+ int ret = 0; -+ -+ dprintk("%s()\n", __func__); -+ -+ dvbsky_gpio_ctrl(d, 0x04, 1); -+ -+ dvbsky_gpio_ctrl(d, 0x83, 0); -+ msleep(50); -+ dvbsky_gpio_ctrl(d, 0x83, 1); -+ msleep(20); -+ -+ adap->fe[0] = dvb_attach(dvbsky_m88ds3103_attach, -+ &dvbsky_usb_ds3103_config, -+ &d->i2c_adap); -+ if (!adap->fe[0]) { -+ printk(KERN_ERR "dvbsky_s960_attach fail."); -+ ret = -ENODEV; -+ } -+ -+ state->has_ci = 0; -+ -+ return ret; -+} -+ -+static struct dvbsky_m88ds3103_config dvbsky_usb_ds3103_ci_config = { -+ .demod_address = 0x68, -+ .ci_mode = 2, -+ .pin_ctrl = 0x82, -+ .ts_mode = 0, -+ .start_ctrl = dvbsky_sync_ctrl, -+ .set_voltage = dvbsky_usb_ci_set_voltage, -+}; -+ -+static int dvbsky_s960c_attach(struct dvb_usb_adapter *adap) -+{ -+ struct dvbsky_state *state = adap_to_priv(adap); -+ struct dvb_usb_device *d = adap_to_d(adap); -+ int ret = 0; -+ -+ dvbsky_gpio_ctrl(d, 0x04, 1); -+ -+ dvbsky_gpio_ctrl(d, 0x83, 0); -+ msleep(50); -+ dvbsky_gpio_ctrl(d, 0x83, 1); -+ msleep(20); -+ -+ adap->fe[0] = dvb_attach(dvbsky_m88ds3103_attach, -+ &dvbsky_usb_ds3103_ci_config, -+ &d->i2c_adap); -+ if (!adap->fe[0]) { -+ printk(KERN_ERR "dvbsky_s960c_attach fail."); -+ ret = -ENODEV; -+ } -+ -+ state->has_ci = 1; -+ -+ return ret; -+} -+ -+static int dvbsky_identify_state(struct dvb_usb_device *d, const char **name) -+{ -+ return WARM; -+} -+ -+static int dvbsky_init(struct dvb_usb_device *d) -+{ -+ struct dvbsky_state *state = d_to_priv(d); -+ int ret; -+ -+ /* use default interface */ -+ ret = usb_set_interface(d->udev, 0, 0); -+ if (ret) -+ return ret; -+ -+ mutex_init(&state->stream_mutex); -+ -+ /* attach CI */ -+ if (state->has_ci) { -+ dvbsky_gpio_ctrl(d, 0xc0, 1); -+ msleep(100); -+ dvbsky_gpio_ctrl(d, 0xc0, 0); -+ msleep(50); -+ state->ci_attached = 0; -+ ret = dvbsky_ci_init(d); -+ if (ret) -+ return ret; -+ } -+ return 0; -+} -+ -+static void dvbsky_exit(struct dvb_usb_device *d) -+{ -+ return dvbsky_ci_release(d); -+} -+ -+/* DVB USB Driver stuff */ -+static struct dvb_usb_device_properties dvbsky_s960c_props = { -+ .driver_name = KBUILD_MODNAME, -+ .owner = THIS_MODULE, -+ .adapter_nr = adapter_nr, -+ .size_of_priv = sizeof(struct dvbsky_state), -+ -+ .generic_bulk_ctrl_endpoint = 0x01, -+ .generic_bulk_ctrl_endpoint_response = 0x81, -+ -+ .i2c_algo = &dvbsky_i2c_algo, -+ .frontend_attach = dvbsky_s960c_attach, -+ .init = dvbsky_init, -+ .get_rc_config = dvbsky_get_rc_config, -+ .streaming_ctrl = dvbsky_streaming_ctrl, -+ .identify_state = dvbsky_identify_state, -+ .exit = dvbsky_exit, -+ -+ .num_adapters = 1, -+ .adapter = { -+ { -+ .stream = DVB_USB_STREAM_BULK(0x82, 8, 4096), -+ } -+ } -+}; -+ -+static struct dvb_usb_device_properties dvbsky_s960_props = { -+ .driver_name = KBUILD_MODNAME, -+ .owner = THIS_MODULE, -+ .adapter_nr = adapter_nr, -+ .size_of_priv = sizeof(struct dvbsky_state), -+ -+ .generic_bulk_ctrl_endpoint = 0x01, -+ .generic_bulk_ctrl_endpoint_response = 0x81, -+ -+ .i2c_algo = &dvbsky_i2c_algo, -+ .frontend_attach = dvbsky_s960_attach, -+ .init = dvbsky_init, -+ .get_rc_config = dvbsky_get_rc_config, -+ .streaming_ctrl = dvbsky_streaming_ctrl, -+ .identify_state = dvbsky_identify_state, -+ .exit = dvbsky_exit, -+ .read_mac_address = dvbsky_read_mac_addr, -+ -+ .num_adapters = 1, -+ .adapter = { -+ { -+ .stream = DVB_USB_STREAM_BULK(0x82, 8, 4096), -+ } -+ } -+}; -+ -+static const struct usb_device_id dvbsky_id_table[] = { -+ { DVB_USB_DEVICE(0x0572, 0x960c, -+ &dvbsky_s960c_props, "DVBSky S960CI", RC_MAP_DVBSKY) }, -+ { DVB_USB_DEVICE(0x0572, 0x6831, -+ &dvbsky_s960_props, "DVBSky S960/S860", RC_MAP_DVBSKY) }, -+ { } -+}; -+MODULE_DEVICE_TABLE(usb, dvbsky_id_table); -+ -+static struct usb_driver dvbsky_usb_driver = { -+ .name = KBUILD_MODNAME, -+ .id_table = dvbsky_id_table, -+ .probe = dvb_usbv2_probe, -+ .disconnect = dvb_usbv2_disconnect, -+ .suspend = dvb_usbv2_suspend, -+ .resume = dvb_usbv2_resume, -+ .reset_resume = dvb_usbv2_reset_resume, -+ .no_dynamic_id = 1, -+ .soft_unbind = 1, -+}; -+ -+module_usb_driver(dvbsky_usb_driver); -+ -+MODULE_AUTHOR("Max nibble "); -+MODULE_DESCRIPTION("Driver for DVBSky USB2.0"); -+MODULE_LICENSE("GPL"); -diff --git a/include/media/rc-map.h b/include/media/rc-map.h -index 80f9518..e7a1514 100644 ---- a/include/media/rc-map.h -+++ b/include/media/rc-map.h -@@ -135,6 +135,7 @@ void rc_map_init(void); - #define RC_MAP_DM1105_NEC "rc-dm1105-nec" - #define RC_MAP_DNTV_LIVE_DVBT_PRO "rc-dntv-live-dvbt-pro" - #define RC_MAP_DNTV_LIVE_DVB_T "rc-dntv-live-dvb-t" -+#define RC_MAP_DVBSKY "rc-dvbsky" - #define RC_MAP_EMPTY "rc-empty" - #define RC_MAP_EM_TERRATEC "rc-em-terratec" - #define RC_MAP_ENCORE_ENLTV2 "rc-encore-enltv2" -- 1.7.2.5 diff --git a/packages/linux/patches/3.17.8/linux-211-dvbsky-s950v3-s952v3.patch b/packages/linux/patches/3.18.2/linux-211-dvbsky-s950v3-s952v3.patch similarity index 99% rename from packages/linux/patches/3.17.8/linux-211-dvbsky-s950v3-s952v3.patch rename to packages/linux/patches/3.18.2/linux-211-dvbsky-s950v3-s952v3.patch index 6be7dd609d..ec9c0abe93 100644 --- a/packages/linux/patches/3.17.8/linux-211-dvbsky-s950v3-s952v3.patch +++ b/packages/linux/patches/3.18.2/linux-211-dvbsky-s950v3-s952v3.patch @@ -1,11 +1,11 @@ -From d89d7ff6fd6c064cfae0100b0a06df1340c87a55 Mon Sep 17 00:00:00 2001 +From c252368ffe0b6cb023211a7c2c7cfdf20324e9cf Mon Sep 17 00:00:00 2001 From: Stefan Saraev -Date: Tue, 5 Aug 2014 13:56:41 +0300 +Date: Wed, 29 Oct 2014 16:40:18 +0200 Subject: [PATCH] dvbsky s950v3 s952v3 --- drivers/media/dvb-frontends/Kconfig | 7 + - drivers/media/dvb-frontends/Makefile | 1 + + drivers/media/dvb-frontends/Makefile | 2 +- drivers/media/dvb-frontends/dvbsky_m88rs6000.c | 1662 ++++++++++++++++++++ drivers/media/dvb-frontends/dvbsky_m88rs6000.h | 39 + .../media/dvb-frontends/dvbsky_m88rs6000_priv.h | 210 +++ @@ -15,7 +15,7 @@ Subject: [PATCH] dvbsky s950v3 s952v3 drivers/media/pci/smipcie/Makefile | 3 + drivers/media/pci/smipcie/smipcie.c | 1131 +++++++++++++ drivers/media/pci/smipcie/smipcie.h | 304 ++++ - 11 files changed, 3371 insertions(+), 0 deletions(-) + 11 files changed, 3371 insertions(+), 1 deletions(-) create mode 100644 drivers/media/dvb-frontends/dvbsky_m88rs6000.c create mode 100644 drivers/media/dvb-frontends/dvbsky_m88rs6000.h create mode 100644 drivers/media/dvb-frontends/dvbsky_m88rs6000_priv.h @@ -25,10 +25,10 @@ Subject: [PATCH] dvbsky s950v3 s952v3 create mode 100644 drivers/media/pci/smipcie/smipcie.h diff --git a/drivers/media/dvb-frontends/Kconfig b/drivers/media/dvb-frontends/Kconfig -index 694b35a..7288ce9 100644 +index ed4642e..6867831 100644 --- a/drivers/media/dvb-frontends/Kconfig +++ b/drivers/media/dvb-frontends/Kconfig -@@ -262,6 +262,13 @@ config DVB_DVBSKY_M88DC2800 +@@ -244,6 +244,13 @@ config DVB_DVBSKY_M88DC2800 help A DVB-C tuner module. Say Y when you want to support this frontend. @@ -43,17 +43,18 @@ index 694b35a..7288ce9 100644 tristate "Silicon Labs SI21XX based" depends on DVB_CORE && I2C diff --git a/drivers/media/dvb-frontends/Makefile b/drivers/media/dvb-frontends/Makefile -index 4c7427d..646d24a 100644 +index 0afc6eb..e8262e9 100644 --- a/drivers/media/dvb-frontends/Makefile +++ b/drivers/media/dvb-frontends/Makefile -@@ -115,3 +115,4 @@ obj-$(CONFIG_DVB_M88RS2000) += m88rs2000.o - obj-$(CONFIG_DVB_AF9033) += af9033.o +@@ -123,4 +123,4 @@ obj-$(CONFIG_DVB_TC90522) += tc90522.o + obj-$(CONFIG_DVB_DVBSKY_M88DS3103) += dvbsky_m88ds3103.o obj-$(CONFIG_DVB_DVBSKY_M88DC2800) += dvbsky_m88dc2800.o +- +obj-$(CONFIG_DVB_DVBSKY_M88RS6000) += dvbsky_m88rs6000.o diff --git a/drivers/media/dvb-frontends/dvbsky_m88rs6000.c b/drivers/media/dvb-frontends/dvbsky_m88rs6000.c new file mode 100644 -index 0000000..b999cac +index 0000000..94808f5 --- /dev/null +++ b/drivers/media/dvb-frontends/dvbsky_m88rs6000.c @@ -0,0 +1,1662 @@ @@ -1766,7 +1767,7 @@ index 0000000..d790dad +#endif /* DVBSKY_M88RS6000_H */ diff --git a/drivers/media/dvb-frontends/dvbsky_m88rs6000_priv.h b/drivers/media/dvb-frontends/dvbsky_m88rs6000_priv.h new file mode 100644 -index 0000000..4a6a489 +index 0000000..4d90544 --- /dev/null +++ b/drivers/media/dvb-frontends/dvbsky_m88rs6000_priv.h @@ -0,0 +1,210 @@ @@ -1981,10 +1982,10 @@ index 0000000..4a6a489 + +#endif /* DVBSKY_M88RS6000_PRIV_H */ diff --git a/drivers/media/pci/Kconfig b/drivers/media/pci/Kconfig -index 53196f1..e7d2bb0 100644 +index f8cec8e..218144a 100644 --- a/drivers/media/pci/Kconfig +++ b/drivers/media/pci/Kconfig -@@ -43,6 +43,7 @@ source "drivers/media/pci/pt1/Kconfig" +@@ -46,6 +46,7 @@ source "drivers/media/pci/pt3/Kconfig" source "drivers/media/pci/mantis/Kconfig" source "drivers/media/pci/ngene/Kconfig" source "drivers/media/pci/ddbridge/Kconfig" @@ -1993,17 +1994,17 @@ index 53196f1..e7d2bb0 100644 endif #MEDIA_PCI_SUPPORT diff --git a/drivers/media/pci/Makefile b/drivers/media/pci/Makefile -index 35cc578..af2f701 100644 +index a12926e..236938f 100644 --- a/drivers/media/pci/Makefile +++ b/drivers/media/pci/Makefile -@@ -10,6 +10,7 @@ obj-y += ttpci/ \ +@@ -11,6 +11,7 @@ obj-y += ttpci/ \ mantis/ \ ngene/ \ ddbridge/ \ + smipcie/ \ - b2c2/ \ saa7146/ + obj-$(CONFIG_VIDEO_IVTV) += ivtv/ diff --git a/drivers/media/pci/smipcie/Kconfig b/drivers/media/pci/smipcie/Kconfig new file mode 100644 index 0000000..341917d @@ -2033,7 +2034,7 @@ index 0000000..20af47a +ccflags-y += -Idrivers/media/dvb-core/ -Idrivers/media/dvb-frontends diff --git a/drivers/media/pci/smipcie/smipcie.c b/drivers/media/pci/smipcie/smipcie.c new file mode 100644 -index 0000000..f4777f2 +index 0000000..df21741 --- /dev/null +++ b/drivers/media/pci/smipcie/smipcie.c @@ -0,0 +1,1131 @@ diff --git a/packages/linux/patches/3.17.8/linux-212-mantis_stb0899_faster_lock.patch b/packages/linux/patches/3.18.2/linux-212-mantis_stb0899_faster_lock.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-212-mantis_stb0899_faster_lock.patch rename to packages/linux/patches/3.18.2/linux-212-mantis_stb0899_faster_lock.patch diff --git a/packages/linux/patches/3.17.8/linux-221-ngene-octopus.patch b/packages/linux/patches/3.18.2/linux-221-ngene-octopus.patch similarity index 97% rename from packages/linux/patches/3.17.8/linux-221-ngene-octopus.patch rename to packages/linux/patches/3.18.2/linux-221-ngene-octopus.patch index 376bd20081..9f5d50d2bd 100644 --- a/packages/linux/patches/3.17.8/linux-221-ngene-octopus.patch +++ b/packages/linux/patches/3.18.2/linux-221-ngene-octopus.patch @@ -1,6 +1,6 @@ -From d3b66936030f30fc4ece37e6b8685d65f4dac3b1 Mon Sep 17 00:00:00 2001 +From 4c430e85024bde978e4e2e84e95eda08fd04252c Mon Sep 17 00:00:00 2001 From: Stefan Saraev -Date: Thu, 27 Nov 2014 12:18:06 +0200 +Date: Mon, 1 Dec 2014 14:40:11 +0200 Subject: [PATCH] dvb: ngene/octopus source: http://linuxtv.org/hg/~endriss/media_build_experimental/ @@ -16,7 +16,7 @@ note: SYS_DVBC2 not added. ci extensions (en50221) not added. drivers/media/dvb-frontends/Makefile | 3 + drivers/media/dvb-frontends/cxd2843.c | 2022 ++++++++++++ drivers/media/dvb-frontends/cxd2843.h | 30 + - drivers/media/dvb-frontends/drxk_hard.c | 3602 +++++++++----------- + drivers/media/dvb-frontends/drxk_hard.c | 3611 +++++++++----------- drivers/media/dvb-frontends/drxk_hard.h | 298 +- drivers/media/dvb-frontends/drxk_map.h | 3 - drivers/media/dvb-frontends/lnbh25.c | 153 + @@ -37,7 +37,7 @@ note: SYS_DVBC2 not added. ci extensions (en50221) not added. drivers/media/dvb-frontends/tda18271c2dd_maps.h | 8 +- drivers/media/pci/ddbridge/Kconfig | 11 +- drivers/media/pci/ddbridge/Makefile | 2 - - drivers/media/pci/ddbridge/ddbridge-core.c | 3924 ++++++++++++++++------ + drivers/media/pci/ddbridge/ddbridge-core.c | 3942 ++++++++++++++++------ drivers/media/pci/ddbridge/ddbridge-i2c.c | 257 ++ drivers/media/pci/ddbridge/ddbridge-i2c.h | 105 + drivers/media/pci/ddbridge/ddbridge-mod.c | 1148 +++++++ @@ -49,15 +49,15 @@ note: SYS_DVBC2 not added. ci extensions (en50221) not added. drivers/media/pci/ngene/Kconfig | 4 + drivers/media/pci/ngene/Makefile | 3 +- drivers/media/pci/ngene/ngene-av.c | 348 ++ - drivers/media/pci/ngene/ngene-cards.c | 973 ++++-- - drivers/media/pci/ngene/ngene-core.c | 396 ++- - drivers/media/pci/ngene/ngene-dvb.c | 372 +++ + drivers/media/pci/ngene/ngene-cards.c | 975 ++++-- + drivers/media/pci/ngene/ngene-core.c | 410 ++- + drivers/media/pci/ngene/ngene-dvb.c | 379 ++- drivers/media/pci/ngene/ngene-eeprom.c | 284 ++ drivers/media/pci/ngene/ngene-i2c.c | 113 + - drivers/media/pci/ngene/ngene.h | 40 + + drivers/media/pci/ngene/ngene.h | 42 +- include/uapi/linux/dvb/mod.h | 22 + include/uapi/linux/dvb/ns.h | 68 + - 50 files changed, 25702 insertions(+), 3517 deletions(-) + 50 files changed, 25731 insertions(+), 3540 deletions(-) create mode 100644 drivers/media/dvb-core/dvb_netstream.c create mode 100644 drivers/media/dvb-core/dvb_netstream.h create mode 100644 drivers/media/dvb-frontends/cxd2843.c @@ -534,7 +534,7 @@ index f96b28e..f901b54 100644 #define DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr) \ static short adapter_nr[] = \ diff --git a/drivers/media/dvb-frontends/Kconfig b/drivers/media/dvb-frontends/Kconfig -index fe0ddcc..b0be45b 100644 +index 5a13454..0d22bc4 100644 --- a/drivers/media/dvb-frontends/Kconfig +++ b/drivers/media/dvb-frontends/Kconfig @@ -72,6 +72,33 @@ config DVB_SI2165 @@ -572,7 +572,7 @@ index fe0ddcc..b0be45b 100644 depends on DVB_CORE diff --git a/drivers/media/dvb-frontends/Makefile b/drivers/media/dvb-frontends/Makefile -index edf103d..196b8c2 100644 +index ba59df6..33bc12b 100644 --- a/drivers/media/dvb-frontends/Makefile +++ b/drivers/media/dvb-frontends/Makefile @@ -105,6 +105,9 @@ obj-$(CONFIG_DVB_STV0367) += stv0367.o @@ -584,7 +584,7 @@ index edf103d..196b8c2 100644 +obj-$(CONFIG_DVB_CXD2843) += cxd2843.o obj-$(CONFIG_DVB_SI2165) += si2165.o obj-$(CONFIG_DVB_A8293) += a8293.o - obj-$(CONFIG_DVB_TDA10071) += tda10071.o + obj-$(CONFIG_DVB_SP2) += sp2.o diff --git a/drivers/media/dvb-frontends/cxd2843.c b/drivers/media/dvb-frontends/cxd2843.c new file mode 100644 index 0000000..3bcc7c8 @@ -2650,7 +2650,7 @@ index 0000000..f3e355b + +#endif diff --git a/drivers/media/dvb-frontends/drxk_hard.c b/drivers/media/dvb-frontends/drxk_hard.c -index cce94a7..91a7f9f 100644 +index 6721951..91a7f9f 100644 --- a/drivers/media/dvb-frontends/drxk_hard.c +++ b/drivers/media/dvb-frontends/drxk_hard.c @@ -21,8 +21,6 @@ @@ -3901,7 +3901,8 @@ index cce94a7..91a7f9f 100644 + ((state->m_HICfgCtrl) & SIO_HI_RA_RAM_PAR_5_CFG_SLEEP__M) == SIO_HI_RA_RAM_PAR_5_CFG_SLEEP_ZZZ); - if (powerdown_cmd == false) { +- if (!powerdown_cmd) { ++ if (powerdown_cmd == false) { /* Wait until command rdy */ - u32 retry_count = 0; - u16 wait_cmd; @@ -4033,7 +4034,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -- if (mpeg_enable == false) { +- if (!mpeg_enable) { + if (mpegEnable == false) { /* Set MPEG TS pads to inputmode */ status = write16(state, SIO_PDR_MSTRT_CFG__A, 0x0000); @@ -4067,7 +4068,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -- if (state->m_enable_parallel == true) { +- if (state->m_enable_parallel) { - /* parallel -> enable MD1 to MD7 */ - status = write16(state, SIO_PDR_MD1_CFG__A, - sio_pdr_mdx_cfg); @@ -4300,9 +4301,10 @@ index cce94a7..91a7f9f 100644 dprintk(1, "\n"); - if (enable == false) { +- if (!enable) { - desired_ctrl = SIO_OFDM_SH_OFDM_RING_ENABLE_OFF; - desired_status = SIO_OFDM_SH_OFDM_RING_STATUS_DOWN; ++ if (enable == false) { + desiredCtrl = SIO_OFDM_SH_OFDM_RING_ENABLE_OFF; + desiredStatus = SIO_OFDM_SH_OFDM_RING_STATUS_DOWN; } @@ -4952,7 +4954,7 @@ index cce94a7..91a7f9f 100644 goto error; - fec_oc_reg_mode &= (~FEC_OC_MODE_PARITY__M); - fec_oc_reg_ipr_mode &= (~FEC_OC_IPR_MODE_MVAL_DIS_PAR__M); -- if (state->m_insert_rs_byte == true) { +- if (state->m_insert_rs_byte) { + fecOcRegMode &= (~FEC_OC_MODE_PARITY__M); + fecOcRegIprMode &= (~FEC_OC_IPR_MODE_MVAL_DIS_PAR__M); + if (state->m_insertRSByte == true) { @@ -4969,7 +4971,7 @@ index cce94a7..91a7f9f 100644 - /* Check serial or parallel output */ - fec_oc_reg_ipr_mode &= (~(FEC_OC_IPR_MODE_SERIAL__M)); -- if (state->m_enable_parallel == false) { +- if (!state->m_enable_parallel) { + /* Check serial or parrallel output */ + fecOcRegIprMode &= (~(FEC_OC_IPR_MODE_SERIAL__M)); + if (state->m_enableParallel == false) { @@ -5124,19 +5126,19 @@ index cce94a7..91a7f9f 100644 /* Control selective inversion of output bits */ - fec_oc_reg_ipr_invert &= (~(invert_data_mask)); -- if (state->m_invert_data == true) +- if (state->m_invert_data) - fec_oc_reg_ipr_invert |= invert_data_mask; - fec_oc_reg_ipr_invert &= (~(FEC_OC_IPR_INVERT_MERR__M)); -- if (state->m_invert_err == true) +- if (state->m_invert_err) - fec_oc_reg_ipr_invert |= FEC_OC_IPR_INVERT_MERR__M; - fec_oc_reg_ipr_invert &= (~(FEC_OC_IPR_INVERT_MSTRT__M)); -- if (state->m_invert_str == true) +- if (state->m_invert_str) - fec_oc_reg_ipr_invert |= FEC_OC_IPR_INVERT_MSTRT__M; - fec_oc_reg_ipr_invert &= (~(FEC_OC_IPR_INVERT_MVAL__M)); -- if (state->m_invert_val == true) +- if (state->m_invert_val) - fec_oc_reg_ipr_invert |= FEC_OC_IPR_INVERT_MVAL__M; - fec_oc_reg_ipr_invert &= (~(FEC_OC_IPR_INVERT_MCLK__M)); -- if (state->m_invert_clk == true) +- if (state->m_invert_clk) - fec_oc_reg_ipr_invert |= FEC_OC_IPR_INVERT_MCLK__M; - - return write16(state, FEC_OC_IPR_INVERT__A, fec_oc_reg_ipr_invert); @@ -5200,7 +5202,7 @@ index cce94a7..91a7f9f 100644 SCU_RAM_AGC_KI_RED_RAGC_RED__B) & SCU_RAM_AGC_KI_RED_RAGC_RED__M); -@@ -2208,34 +2258,30 @@ static int set_agc_rf(struct drxk_state *state, +@@ -2208,35 +2258,30 @@ static int set_agc_rf(struct drxk_state *state, if (status < 0) goto error; @@ -5222,7 +5224,7 @@ index cce94a7..91a7f9f 100644 } /* Set TOP, only if IF-AGC is in AUTO mode */ -- if (p_if_agc_settings->ctrl_mode == DRXK_AGC_CTRL_AUTO) +- if (p_if_agc_settings->ctrl_mode == DRXK_AGC_CTRL_AUTO) { - status = write16(state, - SCU_RAM_AGC_IF_IACCU_HI_TGT_MAX__A, - p_agc_cfg->top); @@ -5230,6 +5232,7 @@ index cce94a7..91a7f9f 100644 + status = write16(state, SCU_RAM_AGC_IF_IACCU_HI_TGT_MAX__A, pAgcCfg->top); if (status < 0) goto error; +- } /* Cut-Off current */ - status = write16(state, SCU_RAM_AGC_RF_IACCU_HI_CO__A, @@ -5245,7 +5248,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -2256,7 +2302,7 @@ static int set_agc_rf(struct drxk_state *state, +@@ -2257,7 +2302,7 @@ static int set_agc_rf(struct drxk_state *state, if (status < 0) goto error; data |= SCU_RAM_AGC_CONFIG_DISABLE_RF_AGC__M; @@ -5254,7 +5257,7 @@ index cce94a7..91a7f9f 100644 data |= SCU_RAM_AGC_CONFIG_INV_RF_POL__M; else data &= ~SCU_RAM_AGC_CONFIG_INV_RF_POL__M; -@@ -2270,8 +2316,7 @@ static int set_agc_rf(struct drxk_state *state, +@@ -2271,8 +2316,7 @@ static int set_agc_rf(struct drxk_state *state, goto error; /* Write value to output pin */ @@ -5264,7 +5267,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; break; -@@ -2302,22 +2347,22 @@ static int set_agc_rf(struct drxk_state *state, +@@ -2303,22 +2347,22 @@ static int set_agc_rf(struct drxk_state *state, } error: if (status < 0) @@ -5292,7 +5295,7 @@ index cce94a7..91a7f9f 100644 case DRXK_AGC_CTRL_AUTO: /* Enable IF AGC DAC */ -@@ -2337,7 +2382,7 @@ static int set_agc_if(struct drxk_state *state, +@@ -2338,7 +2382,7 @@ static int set_agc_if(struct drxk_state *state, data &= ~SCU_RAM_AGC_CONFIG_DISABLE_IF_AGC__M; /* Polarity */ @@ -5301,7 +5304,7 @@ index cce94a7..91a7f9f 100644 data |= SCU_RAM_AGC_CONFIG_INV_IF_POL__M; else data &= ~SCU_RAM_AGC_CONFIG_INV_IF_POL__M; -@@ -2350,7 +2395,7 @@ static int set_agc_if(struct drxk_state *state, +@@ -2351,7 +2395,7 @@ static int set_agc_if(struct drxk_state *state, if (status < 0) goto error; data &= ~SCU_RAM_AGC_KI_RED_IAGC_RED__M; @@ -5310,7 +5313,7 @@ index cce94a7..91a7f9f 100644 SCU_RAM_AGC_KI_RED_IAGC_RED__B) & SCU_RAM_AGC_KI_RED_IAGC_RED__M); -@@ -2358,15 +2403,14 @@ static int set_agc_if(struct drxk_state *state, +@@ -2359,15 +2403,14 @@ static int set_agc_if(struct drxk_state *state, if (status < 0) goto error; @@ -5331,7 +5334,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; break; -@@ -2390,7 +2434,7 @@ static int set_agc_if(struct drxk_state *state, +@@ -2391,7 +2434,7 @@ static int set_agc_if(struct drxk_state *state, data |= SCU_RAM_AGC_CONFIG_DISABLE_IF_AGC__M; /* Polarity */ @@ -5340,7 +5343,7 @@ index cce94a7..91a7f9f 100644 data |= SCU_RAM_AGC_CONFIG_INV_IF_POL__M; else data &= ~SCU_RAM_AGC_CONFIG_INV_IF_POL__M; -@@ -2399,8 +2443,7 @@ static int set_agc_if(struct drxk_state *state, +@@ -2400,8 +2443,7 @@ static int set_agc_if(struct drxk_state *state, goto error; /* Write value to output pin */ @@ -5350,7 +5353,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; break; -@@ -2425,181 +2468,207 @@ static int set_agc_if(struct drxk_state *state, +@@ -2426,181 +2468,207 @@ static int set_agc_if(struct drxk_state *state, if (status < 0) goto error; break; @@ -5634,7 +5637,7 @@ index cce94a7..91a7f9f 100644 default: break; } -@@ -2607,7 +2676,7 @@ static int get_signal_to_noise(struct drxk_state *state, s32 *p_signal_to_noise) +@@ -2608,7 +2676,7 @@ static int get_signal_to_noise(struct drxk_state *state, s32 *p_signal_to_noise) } #if 0 @@ -5643,7 +5646,7 @@ index cce94a7..91a7f9f 100644 { /* SNR Values for quasi errorfree reception rom Nordig 2.2 */ int status = 0; -@@ -2632,104 +2701,102 @@ static int get_dvbt_quality(struct drxk_state *state, s32 *p_quality) +@@ -2633,104 +2701,102 @@ static int get_dvbt_quality(struct drxk_state *state, s32 *p_quality) 225, /* 64-QAM 7/8 */ }; @@ -5792,7 +5795,7 @@ index cce94a7..91a7f9f 100644 default: break; } -@@ -2751,68 +2818,65 @@ static int get_quality(struct drxk_state *state, s32 *p_quality) +@@ -2752,68 +2818,65 @@ static int get_quality(struct drxk_state *state, s32 *p_quality) #define DRXDAP_FASI_ADDR2BANK(addr) (((addr) >> 16) & 0x3F) #define DRXDAP_FASI_ADDR2OFFSET(addr) ((addr) & 0x7FFF) @@ -5882,7 +5885,7 @@ index cce94a7..91a7f9f 100644 int status; unsigned long end; -@@ -2828,44 +2892,44 @@ static int bl_direct_cmd(struct drxk_state *state, u32 target_addr, +@@ -2829,44 +2892,44 @@ static int bl_direct_cmd(struct drxk_state *state, u32 target_addr, status = write16(state, SIO_BL_TGT_ADDR__A, offset); if (status < 0) goto error; @@ -5937,7 +5940,7 @@ index cce94a7..91a7f9f 100644 status = write16(state, IQM_AF_COMM_EXEC__A, IQM_AF_COMM_EXEC_ACTIVE); if (status < 0) goto error; -@@ -2892,42 +2956,42 @@ static int adc_sync_measurement(struct drxk_state *state, u16 *count) +@@ -2893,42 +2956,42 @@ static int adc_sync_measurement(struct drxk_state *state, u16 *count) error: if (status < 0) @@ -5993,7 +5996,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; } -@@ -2936,25 +3000,25 @@ static int adc_synchronization(struct drxk_state *state) +@@ -2937,25 +3000,25 @@ static int adc_synchronization(struct drxk_state *state) status = -EINVAL; error: if (status < 0) @@ -6033,7 +6036,7 @@ index cce94a7..91a7f9f 100644 dprintk(1, "\n"); -@@ -2962,125 +3026,121 @@ static int set_frequency_shifter(struct drxk_state *state, +@@ -2963,125 +3026,121 @@ static int set_frequency_shifter(struct drxk_state *state, Program frequency shifter No need to account for mirroring on RF */ @@ -6227,7 +6230,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; status = write16(state, SCU_RAM_AGC_IF_IACCU_HI__A, 0); -@@ -3095,22 +3155,20 @@ static int init_agc(struct drxk_state *state, bool is_dtv) +@@ -3096,22 +3155,20 @@ static int init_agc(struct drxk_state *state, bool is_dtv) status = write16(state, SCU_RAM_AGC_RF_IACCU_LO__A, 0); if (status < 0) goto error; @@ -6255,7 +6258,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -3127,16 +3185,16 @@ static int init_agc(struct drxk_state *state, bool is_dtv) +@@ -3128,16 +3185,16 @@ static int init_agc(struct drxk_state *state, bool is_dtv) status = write16(state, SCU_RAM_AGC_KI_MAXMINGAIN_TH__A, 20); if (status < 0) goto error; @@ -6276,7 +6279,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; status = write16(state, SCU_RAM_AGC_KI_MINGAIN__A, 0x7fff); -@@ -3196,39 +3254,38 @@ static int init_agc(struct drxk_state *state, bool is_dtv) +@@ -3197,39 +3254,38 @@ static int init_agc(struct drxk_state *state, bool is_dtv) status = write16(state, SCU_RAM_AGC_KI__A, data); error: if (status < 0) @@ -6328,7 +6331,7 @@ index cce94a7..91a7f9f 100644 /* SC is not running */ status = -EINVAL; } -@@ -3236,13 +3293,13 @@ static int dvbt_sc_command(struct drxk_state *state, +@@ -3237,13 +3293,13 @@ static int dvbt_sc_command(struct drxk_state *state, goto error; /* Wait until sc is ready to receive command */ @@ -6348,7 +6351,7 @@ index cce94a7..91a7f9f 100644 goto error; /* Write sub-command */ -@@ -3288,25 +3345,25 @@ static int dvbt_sc_command(struct drxk_state *state, +@@ -3289,25 +3345,25 @@ static int dvbt_sc_command(struct drxk_state *state, goto error; /* Wait until sc is ready processing command */ @@ -6383,7 +6386,7 @@ index cce94a7..91a7f9f 100644 switch (cmd) { /* All commands yielding 5 results */ /* All commands yielding 4 results */ -@@ -3331,23 +3388,23 @@ static int dvbt_sc_command(struct drxk_state *state, +@@ -3332,44 +3388,44 @@ static int dvbt_sc_command(struct drxk_state *state, } /* switch (cmd->cmd) */ error: if (status < 0) @@ -6413,7 +6416,10 @@ index cce94a7..91a7f9f 100644 { int status; -@@ -3357,12 +3414,12 @@ static int dvbt_ctrl_set_inc_enable(struct drxk_state *state, bool *enabled) + dprintk(1, "\n"); +- if (*enabled) ++ if (*enabled == true) + status = write16(state, IQM_CF_BYPASSDET__A, 0); else status = write16(state, IQM_CF_BYPASSDET__A, 1); if (status < 0) @@ -6428,7 +6434,14 @@ index cce94a7..91a7f9f 100644 { int status; -@@ -3377,13 +3434,13 @@ static int dvbt_ctrl_set_fr_enable(struct drxk_state *state, bool *enabled) + + dprintk(1, "\n"); +- if (*enabled) { ++ if (*enabled == true) { + /* write mask to 1 */ + status = write16(state, OFDM_SC_RA_RAM_FR_THRES_8K__A, + DEFAULT_FR_THRES_8K); +@@ -3378,13 +3434,13 @@ static int dvbt_ctrl_set_fr_enable(struct drxk_state *state, bool *enabled) status = write16(state, OFDM_SC_RA_RAM_FR_THRES_8K__A, 0); } if (status < 0) @@ -6445,7 +6458,7 @@ index cce94a7..91a7f9f 100644 { u16 data = 0; int status; -@@ -3393,16 +3450,16 @@ static int dvbt_ctrl_set_echo_threshold(struct drxk_state *state, +@@ -3394,16 +3450,16 @@ static int dvbt_ctrl_set_echo_threshold(struct drxk_state *state, if (status < 0) goto error; @@ -6465,7 +6478,7 @@ index cce94a7..91a7f9f 100644 OFDM_SC_RA_RAM_ECHO_THRES_8K__B) & (OFDM_SC_RA_RAM_ECHO_THRES_8K__M)); break; -@@ -3413,12 +3470,12 @@ static int dvbt_ctrl_set_echo_threshold(struct drxk_state *state, +@@ -3414,12 +3470,12 @@ static int dvbt_ctrl_set_echo_threshold(struct drxk_state *state, status = write16(state, OFDM_SC_RA_RAM_ECHO_THRES__A, data); error: if (status < 0) @@ -6481,7 +6494,7 @@ index cce94a7..91a7f9f 100644 { int status = -EINVAL; -@@ -3436,7 +3493,7 @@ static int dvbt_ctrl_set_sqi_speed(struct drxk_state *state, +@@ -3437,7 +3493,7 @@ static int dvbt_ctrl_set_sqi_speed(struct drxk_state *state, (u16) *speed); error: if (status < 0) @@ -6490,7 +6503,7 @@ index cce94a7..91a7f9f 100644 return status; } -@@ -3450,33 +3507,32 @@ error: +@@ -3451,33 +3507,32 @@ error: * Called in DVBTSetStandard * */ @@ -6533,7 +6546,7 @@ index cce94a7..91a7f9f 100644 return status; } -@@ -3490,30 +3546,25 @@ error: +@@ -3491,30 +3546,25 @@ error: * For ROM code channel filter taps are loaded from the bootloader. For microcode * the DVB-T taps from the drxk_filters.h are used. */ @@ -6571,7 +6584,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -3545,7 +3596,7 @@ static int set_dvbt_standard(struct drxk_state *state, +@@ -3546,7 +3596,7 @@ static int set_dvbt_standard(struct drxk_state *state, status = write16(state, IQM_AF_AMUX__A, IQM_AF_AMUX_SIGNAL2ADC); if (status < 0) goto error; @@ -6580,7 +6593,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -3567,7 +3618,7 @@ static int set_dvbt_standard(struct drxk_state *state, +@@ -3568,7 +3618,7 @@ static int set_dvbt_standard(struct drxk_state *state, status = write16(state, IQM_RC_STRETCH__A, 16); if (status < 0) goto error; @@ -6589,7 +6602,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; status = write16(state, IQM_CF_DS_ENA__A, 0x4); /* decimate output 2 */ -@@ -3588,8 +3639,7 @@ static int set_dvbt_standard(struct drxk_state *state, +@@ -3589,8 +3639,7 @@ static int set_dvbt_standard(struct drxk_state *state, if (status < 0) goto error; @@ -6599,7 +6612,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -3608,10 +3658,10 @@ static int set_dvbt_standard(struct drxk_state *state, +@@ -3609,10 +3658,10 @@ static int set_dvbt_standard(struct drxk_state *state, goto error; /* IQM will not be reset from here, sync ADC and update/init AGC */ @@ -6612,7 +6625,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -3620,10 +3670,10 @@ static int set_dvbt_standard(struct drxk_state *state, +@@ -3621,10 +3670,10 @@ static int set_dvbt_standard(struct drxk_state *state, if (status < 0) goto error; @@ -6625,7 +6638,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -3641,10 +3691,9 @@ static int set_dvbt_standard(struct drxk_state *state, +@@ -3642,10 +3691,9 @@ static int set_dvbt_standard(struct drxk_state *state, if (status < 0) goto error; @@ -6639,7 +6652,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; } -@@ -3679,43 +3728,41 @@ static int set_dvbt_standard(struct drxk_state *state, +@@ -3680,43 +3728,41 @@ static int set_dvbt_standard(struct drxk_state *state, goto error; /* Setup MPEG bus */ @@ -6693,7 +6706,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; status = write16(state, FEC_COMM_EXEC__A, FEC_COMM_EXEC_ACTIVE); -@@ -3723,7 +3770,7 @@ static int dvbt_start(struct drxk_state *state) +@@ -3724,7 +3770,7 @@ static int dvbt_start(struct drxk_state *state) goto error; error: if (status < 0) @@ -6702,7 +6715,7 @@ index cce94a7..91a7f9f 100644 return status; } -@@ -3736,23 +3783,20 @@ error: +@@ -3737,23 +3783,20 @@ error: * \return DRXStatus_t. * // original DVBTSetChannel() */ @@ -6734,7 +6747,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -3775,19 +3819,19 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, +@@ -3776,19 +3819,19 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, if (status < 0) goto error; @@ -6758,7 +6771,7 @@ index cce94a7..91a7f9f 100644 break; } -@@ -3795,19 +3839,19 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, +@@ -3796,19 +3839,19 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, switch (state->props.guard_interval) { default: case GUARD_INTERVAL_AUTO: @@ -6783,7 +6796,7 @@ index cce94a7..91a7f9f 100644 break; } -@@ -3816,18 +3860,18 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, +@@ -3817,18 +3860,18 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, case HIERARCHY_AUTO: case HIERARCHY_NONE: default: @@ -6807,7 +6820,7 @@ index cce94a7..91a7f9f 100644 break; } -@@ -3836,30 +3880,30 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, +@@ -3837,30 +3880,30 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, switch (state->props.modulation) { case QAM_AUTO: default: @@ -6847,7 +6860,7 @@ index cce94a7..91a7f9f 100644 OFDM_EC_SB_PRIOR_HI)); break; case DRX_PRIORITY_UNKNOWN: /* fall through */ -@@ -3869,7 +3913,7 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, +@@ -3870,7 +3913,7 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, } #else /* Set Priorty high */ @@ -6856,7 +6869,7 @@ index cce94a7..91a7f9f 100644 status = write16(state, OFDM_EC_SB_PRIOR__A, OFDM_EC_SB_PRIOR_HI); if (status < 0) goto error; -@@ -3879,111 +3923,90 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, +@@ -3880,111 +3923,90 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, switch (state->props.code_rate_HP) { case FEC_AUTO: default: @@ -6994,7 +7007,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; break; -@@ -3992,50 +4015,46 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, +@@ -3993,50 +4015,46 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, goto error; } @@ -7061,7 +7074,7 @@ index cce94a7..91a7f9f 100644 /* Activate SCU to enable SCU commands */ status = write16(state, SCU_COMM_EXEC__A, SCU_COMM_EXEC_ACTIVE); -@@ -4051,9 +4070,7 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, +@@ -4052,9 +4070,7 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, goto error; @@ -7072,7 +7085,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -4063,16 +4080,16 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, +@@ -4064,16 +4080,16 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, OFDM_SC_RA_RAM_OP_AUTO_CONST__M | OFDM_SC_RA_RAM_OP_AUTO_HIER__M | OFDM_SC_RA_RAM_OP_AUTO_RATE__M); @@ -7094,7 +7107,7 @@ index cce94a7..91a7f9f 100644 return status; } -@@ -4081,13 +4098,13 @@ error: +@@ -4082,13 +4098,13 @@ error: /*============================================================================*/ /** @@ -7110,7 +7123,7 @@ index cce94a7..91a7f9f 100644 { int status; const u16 mpeg_lock_mask = (OFDM_SC_RA_RAM_LOCK_MPEG__M | -@@ -4095,58 +4112,58 @@ static int get_dvbt_lock_status(struct drxk_state *state, u32 *p_lock_status) +@@ -4096,58 +4112,58 @@ static int get_dvbt_lock_status(struct drxk_state *state, u32 *p_lock_status) const u16 fec_lock_mask = (OFDM_SC_RA_RAM_LOCK_FEC__M); const u16 demod_lock_mask = OFDM_SC_RA_RAM_LOCK_DEMOD__M; @@ -7190,7 +7203,7 @@ index cce94a7..91a7f9f 100644 int status = 0; dprintk(1, "\n"); -@@ -4162,18 +4179,16 @@ static int power_down_qam(struct drxk_state *state) +@@ -4163,18 +4179,16 @@ static int power_down_qam(struct drxk_state *state) status = write16(state, QAM_COMM_EXEC__A, QAM_COMM_EXEC_STOP); if (status < 0) goto error; @@ -7212,7 +7225,7 @@ index cce94a7..91a7f9f 100644 return status; } -@@ -4191,20 +4206,20 @@ error: +@@ -4192,20 +4206,20 @@ error: * The implementation does not check this. * */ @@ -7242,7 +7255,7 @@ index cce94a7..91a7f9f 100644 FrameLenght [ms] * (modulation + 1) * SyncLoss (== 1) * -@@ -4212,19 +4227,19 @@ static int set_qam_measurement(struct drxk_state *state, +@@ -4213,19 +4227,19 @@ static int set_qam_measurement(struct drxk_state *state, */ switch (modulation) { case DRX_CONSTELLATION_QAM16: @@ -7267,7 +7280,7 @@ index cce94a7..91a7f9f 100644 break; default: status = -EINVAL; -@@ -4232,41 +4247,40 @@ static int set_qam_measurement(struct drxk_state *state, +@@ -4233,41 +4247,40 @@ static int set_qam_measurement(struct drxk_state *state, if (status < 0) goto error; @@ -7324,7 +7337,7 @@ index cce94a7..91a7f9f 100644 { int status = 0; -@@ -4322,8 +4336,7 @@ static int set_qam16(struct drxk_state *state) +@@ -4323,8 +4336,7 @@ static int set_qam16(struct drxk_state *state) goto error; /* QAM Slicer Settings */ @@ -7334,7 +7347,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -4449,7 +4462,7 @@ static int set_qam16(struct drxk_state *state) +@@ -4450,7 +4462,7 @@ static int set_qam16(struct drxk_state *state) error: if (status < 0) @@ -7343,7 +7356,7 @@ index cce94a7..91a7f9f 100644 return status; } -@@ -4460,7 +4473,7 @@ error: +@@ -4461,7 +4473,7 @@ error: * \param demod instance of demod. * \return DRXStatus_t. */ @@ -7352,7 +7365,7 @@ index cce94a7..91a7f9f 100644 { int status = 0; -@@ -4519,8 +4532,7 @@ static int set_qam32(struct drxk_state *state) +@@ -4520,8 +4532,7 @@ static int set_qam32(struct drxk_state *state) /* QAM Slicer Settings */ @@ -7362,7 +7375,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -4645,7 +4657,7 @@ static int set_qam32(struct drxk_state *state) +@@ -4646,7 +4657,7 @@ static int set_qam32(struct drxk_state *state) status = write16(state, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16) -86); error: if (status < 0) @@ -7371,7 +7384,7 @@ index cce94a7..91a7f9f 100644 return status; } -@@ -4656,7 +4668,7 @@ error: +@@ -4657,7 +4668,7 @@ error: * \param demod instance of demod. * \return DRXStatus_t. */ @@ -7380,7 +7393,7 @@ index cce94a7..91a7f9f 100644 { int status = 0; -@@ -4713,8 +4725,7 @@ static int set_qam64(struct drxk_state *state) +@@ -4714,8 +4725,7 @@ static int set_qam64(struct drxk_state *state) goto error; /* QAM Slicer Settings */ @@ -7390,7 +7403,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -4839,7 +4850,7 @@ static int set_qam64(struct drxk_state *state) +@@ -4840,7 +4850,7 @@ static int set_qam64(struct drxk_state *state) status = write16(state, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16) -80); error: if (status < 0) @@ -7399,7 +7412,7 @@ index cce94a7..91a7f9f 100644 return status; } -@@ -4851,7 +4862,7 @@ error: +@@ -4852,7 +4862,7 @@ error: * \param demod: instance of demod. * \return DRXStatus_t. */ @@ -7408,7 +7421,7 @@ index cce94a7..91a7f9f 100644 { int status = 0; -@@ -4910,8 +4921,7 @@ static int set_qam128(struct drxk_state *state) +@@ -4911,8 +4921,7 @@ static int set_qam128(struct drxk_state *state) /* QAM Slicer Settings */ @@ -7418,7 +7431,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -5036,7 +5046,7 @@ static int set_qam128(struct drxk_state *state) +@@ -5037,7 +5046,7 @@ static int set_qam128(struct drxk_state *state) status = write16(state, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16) -23); error: if (status < 0) @@ -7427,7 +7440,7 @@ index cce94a7..91a7f9f 100644 return status; } -@@ -5048,7 +5058,7 @@ error: +@@ -5049,7 +5058,7 @@ error: * \param demod: instance of demod. * \return DRXStatus_t. */ @@ -7436,7 +7449,7 @@ index cce94a7..91a7f9f 100644 { int status = 0; -@@ -5106,8 +5116,7 @@ static int set_qam256(struct drxk_state *state) +@@ -5107,8 +5116,7 @@ static int set_qam256(struct drxk_state *state) /* QAM Slicer Settings */ @@ -7446,7 +7459,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -5232,7 +5241,7 @@ static int set_qam256(struct drxk_state *state) +@@ -5233,7 +5241,7 @@ static int set_qam256(struct drxk_state *state) status = write16(state, SCU_RAM_QAM_FSM_LCAVG_OFFSET5__A, (u16) -8); error: if (status < 0) @@ -7455,7 +7468,7 @@ index cce94a7..91a7f9f 100644 return status; } -@@ -5244,10 +5253,10 @@ error: +@@ -5245,10 +5253,10 @@ error: * \param channel: pointer to channel data. * \return DRXStatus_t. */ @@ -7468,7 +7481,7 @@ index cce94a7..91a7f9f 100644 dprintk(1, "\n"); /* Stop QAM comstate->m_exec */ -@@ -5255,12 +5264,10 @@ static int qam_reset_qam(struct drxk_state *state) +@@ -5256,12 +5264,10 @@ static int qam_reset_qam(struct drxk_state *state) if (status < 0) goto error; @@ -7483,7 +7496,7 @@ index cce94a7..91a7f9f 100644 return status; } -@@ -5272,18 +5279,18 @@ error: +@@ -5273,18 +5279,18 @@ error: * \param channel: pointer to channel data. * \return DRXStatus_t. */ @@ -7508,7 +7521,7 @@ index cce94a7..91a7f9f 100644 ratesel = 0; /* printk(KERN_DEBUG "drxk: SR %d\n", state->props.symbol_rate); */ if (state->props.symbol_rate <= 1188750) -@@ -5299,38 +5306,38 @@ static int qam_set_symbolrate(struct drxk_state *state) +@@ -5300,38 +5306,38 @@ static int qam_set_symbolrate(struct drxk_state *state) /* IqmRcRate = ((Fadc / (symbolrate * (4<props.modulation) { case QAM_16: @@ -7854,7 +7867,7 @@ index cce94a7..91a7f9f 100644 break; default: status = -EINVAL; -@@ -5668,12 +5604,12 @@ static int set_qam(struct drxk_state *state, u16 intermediate_freqk_hz, +@@ -5669,12 +5604,12 @@ static int set_qam(struct drxk_state *state, u16 intermediate_freqk_hz, /* Re-configure MPEG output, requires knowledge of channel bitrate */ /* extAttr->currentChannel.modulation = channel->modulation; */ /* extAttr->currentChannel.symbolrate = channel->symbolrate; */ @@ -7870,7 +7883,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; status = write16(state, FEC_COMM_EXEC__A, FEC_COMM_EXEC_ACTIVE); -@@ -5687,9 +5623,7 @@ static int set_qam(struct drxk_state *state, u16 intermediate_freqk_hz, +@@ -5688,9 +5623,7 @@ static int set_qam(struct drxk_state *state, u16 intermediate_freqk_hz, goto error; /* STEP 5: start QAM demodulator (starts FEC, QAM and IQM HW) */ @@ -7881,7 +7894,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -5698,12 +5632,12 @@ static int set_qam(struct drxk_state *state, u16 intermediate_freqk_hz, +@@ -5699,12 +5632,12 @@ static int set_qam(struct drxk_state *state, u16 intermediate_freqk_hz, error: if (status < 0) @@ -7897,7 +7910,7 @@ index cce94a7..91a7f9f 100644 { int status; #ifdef DRXK_QAM_TAPS -@@ -5715,14 +5649,14 @@ static int set_qam_standard(struct drxk_state *state, +@@ -5716,14 +5649,14 @@ static int set_qam_standard(struct drxk_state *state, dprintk(1, "\n"); /* added antenna switch */ @@ -7915,7 +7928,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -5737,24 +5671,15 @@ static int set_qam_standard(struct drxk_state *state, +@@ -5738,24 +5671,15 @@ static int set_qam_standard(struct drxk_state *state, /* Upload IQM Channel Filter settings by boot loader from ROM table */ @@ -7944,7 +7957,7 @@ index cce94a7..91a7f9f 100644 break; default: status = -EINVAL; -@@ -5762,14 +5687,13 @@ static int set_qam_standard(struct drxk_state *state, +@@ -5763,14 +5687,13 @@ static int set_qam_standard(struct drxk_state *state, if (status < 0) goto error; @@ -7961,7 +7974,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -5826,7 +5750,7 @@ static int set_qam_standard(struct drxk_state *state, +@@ -5827,7 +5750,7 @@ static int set_qam_standard(struct drxk_state *state, goto error; /* turn on IQMAF. Must be done before setAgc**() */ @@ -7970,7 +7983,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; status = write16(state, IQM_AF_START_LOCK__A, 0x01); -@@ -5834,7 +5758,7 @@ static int set_qam_standard(struct drxk_state *state, +@@ -5835,7 +5758,7 @@ static int set_qam_standard(struct drxk_state *state, goto error; /* IQM will not be reset from here, sync ADC and update/init AGC */ @@ -7979,7 +7992,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -5851,18 +5775,18 @@ static int set_qam_standard(struct drxk_state *state, +@@ -5852,18 +5775,18 @@ static int set_qam_standard(struct drxk_state *state, /* No more resets of the IQM, current standard correctly set => now AGCs can be configured. */ @@ -8002,7 +8015,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -5870,19 +5794,18 @@ static int set_qam_standard(struct drxk_state *state, +@@ -5871,19 +5794,18 @@ static int set_qam_standard(struct drxk_state *state, status = write16(state, SCU_COMM_EXEC__A, SCU_COMM_EXEC_ACTIVE); error: if (status < 0) @@ -8025,7 +8038,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -5891,11 +5814,10 @@ static int write_gpio(struct drxk_state *state) +@@ -5892,11 +5814,10 @@ static int write_gpio(struct drxk_state *state) if (status < 0) goto error; @@ -8040,7 +8053,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -5903,7 +5825,7 @@ static int write_gpio(struct drxk_state *state) +@@ -5904,7 +5825,7 @@ static int write_gpio(struct drxk_state *state) status = read16(state, SIO_PDR_UIO_OUT_LO__A, &value); if (status < 0) goto error; @@ -8049,7 +8062,7 @@ index cce94a7..91a7f9f 100644 value &= 0x7FFF; /* write zero to 15th bit - 1st UIO */ else value |= 0x8000; /* write one to 15th bit - 1st UIO */ -@@ -5912,10 +5834,9 @@ static int write_gpio(struct drxk_state *state) +@@ -5913,10 +5834,9 @@ static int write_gpio(struct drxk_state *state) if (status < 0) goto error; } @@ -8062,7 +8075,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -5923,7 +5844,7 @@ static int write_gpio(struct drxk_state *state) +@@ -5924,7 +5844,7 @@ static int write_gpio(struct drxk_state *state) status = read16(state, SIO_PDR_UIO_OUT_LO__A, &value); if (status < 0) goto error; @@ -8071,7 +8084,7 @@ index cce94a7..91a7f9f 100644 value &= 0xBFFF; /* write zero to 14th bit - 2st UIO */ else value |= 0x4000; /* write one to 14th bit - 2st UIO */ -@@ -5932,10 +5853,9 @@ static int write_gpio(struct drxk_state *state) +@@ -5933,10 +5853,9 @@ static int write_gpio(struct drxk_state *state) if (status < 0) goto error; } @@ -8084,7 +8097,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -5943,7 +5863,7 @@ static int write_gpio(struct drxk_state *state) +@@ -5944,7 +5863,7 @@ static int write_gpio(struct drxk_state *state) status = read16(state, SIO_PDR_UIO_OUT_LO__A, &value); if (status < 0) goto error; @@ -8093,7 +8106,7 @@ index cce94a7..91a7f9f 100644 value &= 0xFFFB; /* write zero to 2nd bit - 3rd UIO */ else value |= 0x0004; /* write one to 2nd bit - 3rd UIO */ -@@ -5957,11 +5877,11 @@ static int write_gpio(struct drxk_state *state) +@@ -5958,11 +5877,11 @@ static int write_gpio(struct drxk_state *state) status = write16(state, SIO_TOP_COMM_KEY__A, 0x0000); error: if (status < 0) @@ -8107,7 +8120,7 @@ index cce94a7..91a7f9f 100644 { int status = 0; bool gpio_state; -@@ -5971,22 +5891,22 @@ static int switch_antenna_to_qam(struct drxk_state *state) +@@ -5972,22 +5891,22 @@ static int switch_antenna_to_qam(struct drxk_state *state) if (!state->antenna_gpio) return 0; @@ -8136,7 +8149,7 @@ index cce94a7..91a7f9f 100644 { int status = 0; bool gpio_state; -@@ -5996,23 +5916,23 @@ static int switch_antenna_to_dvbt(struct drxk_state *state) +@@ -5997,23 +5916,23 @@ static int switch_antenna_to_dvbt(struct drxk_state *state) if (!state->antenna_gpio) return 0; @@ -8166,7 +8179,7 @@ index cce94a7..91a7f9f 100644 { /* Power down to requested mode */ /* Backup some register settings */ -@@ -6023,86 +5943,98 @@ static int power_down_device(struct drxk_state *state) +@@ -6024,86 +5943,98 @@ static int power_down_device(struct drxk_state *state) int status; dprintk(1, "\n"); @@ -8297,7 +8310,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; /* disable various processes */ -@@ -6111,14 +6043,13 @@ static int init_drxk(struct drxk_state *state) +@@ -6112,14 +6043,13 @@ static int init_drxk(struct drxk_state *state) && !(state->m_DRXK_A2_ROM_CODE)) #endif { @@ -8314,7 +8327,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -6131,30 +6062,23 @@ static int init_drxk(struct drxk_state *state) +@@ -6132,30 +6062,23 @@ static int init_drxk(struct drxk_state *state) goto error; /* enable token-ring bus through OFDM block for possible ucode upload */ @@ -8351,7 +8364,7 @@ index cce94a7..91a7f9f 100644 if (status < 0) goto error; -@@ -6162,55 +6086,50 @@ static int init_drxk(struct drxk_state *state) +@@ -6163,55 +6086,50 @@ static int init_drxk(struct drxk_state *state) status = write16(state, SCU_COMM_EXEC__A, SCU_COMM_EXEC_ACTIVE); if (status < 0) goto error; @@ -8421,7 +8434,7 @@ index cce94a7..91a7f9f 100644 /* Reset driver debug flags to 0 */ status = write16(state, SCU_RAM_DRIVER_DEBUG__A, 0); -@@ -6223,95 +6142,45 @@ static int init_drxk(struct drxk_state *state) +@@ -6224,95 +6142,45 @@ static int init_drxk(struct drxk_state *state) if (status < 0) goto error; /* MPEGTS functions are still the same */ @@ -8529,7 +8542,7 @@ index cce94a7..91a7f9f 100644 kfree(state); } -@@ -6320,13 +6189,7 @@ static int drxk_sleep(struct dvb_frontend *fe) +@@ -6321,13 +6189,7 @@ static int drxk_sleep(struct dvb_frontend *fe) struct drxk_state *state = fe->demodulator_priv; dprintk(1, "\n"); @@ -8544,7 +8557,7 @@ index cce94a7..91a7f9f 100644 return 0; } -@@ -6334,11 +6197,7 @@ static int drxk_gate_ctrl(struct dvb_frontend *fe, int enable) +@@ -6335,11 +6197,7 @@ static int drxk_gate_ctrl(struct dvb_frontend *fe, int enable) { struct drxk_state *state = fe->demodulator_priv; @@ -8557,7 +8570,7 @@ index cce94a7..91a7f9f 100644 return ConfigureI2CBridge(state, enable ? true : false); } -@@ -6351,14 +6210,9 @@ static int drxk_set_parameters(struct dvb_frontend *fe) +@@ -6352,14 +6210,9 @@ static int drxk_set_parameters(struct dvb_frontend *fe) dprintk(1, "\n"); @@ -8574,7 +8587,7 @@ index cce94a7..91a7f9f 100644 return -EINVAL; } -@@ -6373,23 +6227,22 @@ static int drxk_set_parameters(struct dvb_frontend *fe) +@@ -6374,23 +6227,22 @@ static int drxk_set_parameters(struct dvb_frontend *fe) state->props = *p; if (old_delsys != delsys) { @@ -8605,7 +8618,7 @@ index cce94a7..91a7f9f 100644 break; default: return -EINVAL; -@@ -6397,261 +6250,35 @@ static int drxk_set_parameters(struct dvb_frontend *fe) +@@ -6398,261 +6250,35 @@ static int drxk_set_parameters(struct dvb_frontend *fe) } fe->ops.tuner_ops.get_if_frequency(fe, &IF); @@ -8879,7 +8892,7 @@ index cce94a7..91a7f9f 100644 return 0; } -@@ -6659,16 +6286,11 @@ static int drxk_read_signal_strength(struct dvb_frontend *fe, +@@ -6660,16 +6286,11 @@ static int drxk_read_signal_strength(struct dvb_frontend *fe, u16 *strength) { struct drxk_state *state = fe->demodulator_priv; @@ -8899,7 +8912,7 @@ index cce94a7..91a7f9f 100644 return 0; } -@@ -6678,17 +6300,7 @@ static int drxk_read_snr(struct dvb_frontend *fe, u16 *snr) +@@ -6679,17 +6300,7 @@ static int drxk_read_snr(struct dvb_frontend *fe, u16 *snr) s32 snr2; dprintk(1, "\n"); @@ -8918,7 +8931,7 @@ index cce94a7..91a7f9f 100644 *snr = snr2 & 0xffff; return 0; } -@@ -6699,30 +6311,17 @@ static int drxk_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks) +@@ -6700,30 +6311,17 @@ static int drxk_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks) u16 err; dprintk(1, "\n"); @@ -8952,7 +8965,7 @@ index cce94a7..91a7f9f 100644 switch (p->delivery_system) { case SYS_DVBC_ANNEX_A: case SYS_DVBC_ANNEX_C: -@@ -6764,6 +6363,7 @@ static struct dvb_frontend_ops drxk_ops = { +@@ -6765,6 +6363,7 @@ static struct dvb_frontend_ops drxk_ops = { .get_tune_settings = drxk_get_tune_settings, .read_status = drxk_read_status, @@ -8960,7 +8973,7 @@ index cce94a7..91a7f9f 100644 .read_signal_strength = drxk_read_signal_strength, .read_snr = drxk_read_snr, .read_ucblocks = drxk_read_ucblocks, -@@ -6772,10 +6372,10 @@ static struct dvb_frontend_ops drxk_ops = { +@@ -6773,10 +6372,10 @@ static struct dvb_frontend_ops drxk_ops = { struct dvb_frontend *drxk_attach(const struct drxk_config *config, struct i2c_adapter *i2c) { @@ -8973,7 +8986,7 @@ index cce94a7..91a7f9f 100644 dprintk(1, "\n"); state = kzalloc(sizeof(struct drxk_state), GFP_KERNEL); -@@ -6786,40 +6386,39 @@ struct dvb_frontend *drxk_attach(const struct drxk_config *config, +@@ -6787,40 +6386,39 @@ struct dvb_frontend *drxk_attach(const struct drxk_config *config, state->demod_address = adr; state->single_master = config->single_master; state->microcode_name = config->microcode_name; @@ -8986,13 +8999,13 @@ index cce94a7..91a7f9f 100644 state->enable_merr_cfg = config->enable_merr_cfg; if (config->dynamic_clk) { -- state->m_dvbt_static_clk = 0; -- state->m_dvbc_static_clk = 0; +- state->m_dvbt_static_clk = false; +- state->m_dvbc_static_clk = false; + state->m_DVBTStaticCLK = 0; + state->m_DVBCStaticCLK = 0; } else { -- state->m_dvbt_static_clk = 1; -- state->m_dvbc_static_clk = 1; +- state->m_dvbt_static_clk = true; +- state->m_dvbc_static_clk = true; + state->m_DVBTStaticCLK = 1; + state->m_DVBCStaticCLK = 1; } @@ -9026,7 +9039,7 @@ index cce94a7..91a7f9f 100644 mutex_init(&state->mutex); -@@ -6827,45 +6426,28 @@ struct dvb_frontend *drxk_attach(const struct drxk_config *config, +@@ -6828,45 +6426,28 @@ struct dvb_frontend *drxk_attach(const struct drxk_config *config, state->frontend.demodulator_priv = state; init_state(state); @@ -22629,7 +22642,7 @@ index 7446c8b..2610161 100644 ccflags-y += -Idrivers/media/dvb-core/ diff --git a/drivers/media/pci/ddbridge/ddbridge-core.c b/drivers/media/pci/ddbridge/ddbridge-core.c -index da8f848..c2fc010 100644 +index c82e855..c2fc010 100644 --- a/drivers/media/pci/ddbridge/ddbridge-core.c +++ b/drivers/media/pci/ddbridge/ddbridge-core.c @@ -1,7 +1,8 @@ @@ -22873,7 +22886,7 @@ index da8f848..c2fc010 100644 + struct ddb *pdev = ddbs[(p >> 4) & 0x1f]; + struct ddb_port *port; --struct i2c_algorithm ddb_i2c_algo = { +-static struct i2c_algorithm ddb_i2c_algo = { - .master_xfer = ddb_i2c_master_xfer, - .functionality = ddb_i2c_functionality, -}; @@ -23057,7 +23070,7 @@ index da8f848..c2fc010 100644 - for (i = 0; i < num; i++) { - if (vbuf[i]) { - pci_free_consistent(pdev, size, vbuf[i], pbuf[i]); -- vbuf[i] = 0; +- vbuf[i] = NULL; + if (!dma) + return; + for (i = 0; i < dma->num; i++) { @@ -23424,7 +23437,8 @@ index da8f848..c2fc010 100644 +#endif + static ssize_t ddb_output_write(struct ddb_output *output, - const u8 *buf, size_t count) +- const __user u8 *buf, size_t count) ++ const u8 *buf, size_t count) { struct ddb *dev = output->port->dev; - u32 idx, off, stat = output->stat; @@ -23593,7 +23607,7 @@ index da8f848..c2fc010 100644 return 0; } --static ssize_t ddb_input_read(struct ddb_input *input, u8 *buf, size_t count) +-static ssize_t ddb_input_read(struct ddb_input *input, __user u8 *buf, size_t count) +static size_t ddb_input_read(struct ddb_input *input, u8 *buf, size_t count) { struct ddb *dev = input->port->dev; @@ -23764,7 +23778,9 @@ index da8f848..c2fc010 100644 -static int tuner_attach_tda18271(struct ddb_input *input) +static int ts_release(struct inode *inode, struct file *file) -+{ + { +- struct i2c_adapter *i2c = &input->port->i2c->adap; +- struct dvb_frontend *fe; + struct dvb_device *dvbdev = file->private_data; + struct ddb_output *output = dvbdev->priv; + struct ddb_input *input = output->port->input[0]; @@ -23991,7 +24007,10 @@ index da8f848..c2fc010 100644 + .adr = 0x6c, + .parallel = 1, +}; -+ + +- if (input->fe->ops.i2c_gate_ctrl) +- input->fe->ops.i2c_gate_ctrl(input->fe, 1); +- fe = dvb_attach(tda18271c2dd_attach, input->fe, i2c, 0x60); +struct cxd2843_cfg cxd2843p_1 = { + .adr = 0x6d, + .parallel = 1, @@ -24062,13 +24081,19 @@ index da8f848..c2fc010 100644 + fe = dvb_attach(tda18271c2dd_attach, dvb->fe, i2c, 0x60); + if (dvb->fe->ops.i2c_gate_ctrl) + dvb->fe->ops.i2c_gate_ctrl(dvb->fe, 0); -+ if (!fe) { + if (!fe) { +- printk(KERN_ERR "No TDA18271 found!\n"); + pr_err("No TDA18271 found!\n"); -+ return -ENODEV; -+ } -+ return 0; -+} -+ + return -ENODEV; + } +- if (input->fe->ops.i2c_gate_ctrl) +- input->fe->ops.i2c_gate_ctrl(input->fe, 0); + return 0; + } + +-/******************************************************************************/ +-/******************************************************************************/ +-/******************************************************************************/ +static int tuner_attach_tda18212dd(struct ddb_input *input) +{ + struct i2c_adapter *i2c = &input->port->i2c->adap; @@ -24094,31 +24119,22 @@ index da8f848..c2fc010 100644 +}; + +static int tuner_attach_tda18212(struct ddb_input *input) - { - struct i2c_adapter *i2c = &input->port->i2c->adap; ++{ ++ struct i2c_adapter *i2c = &input->port->i2c->adap; + struct ddb_dvb *dvb = &input->port->dvb[input->nr & 1]; - struct dvb_frontend *fe; ++ struct dvb_frontend *fe; + struct tda18212_config *cfg; - -- if (input->fe->ops.i2c_gate_ctrl) -- input->fe->ops.i2c_gate_ctrl(input->fe, 1); -- fe = dvb_attach(tda18271c2dd_attach, input->fe, i2c, 0x60); ++ + cfg = (input->nr & 1) ? &tda18212_1 : &tda18212_0; + fe = dvb_attach(tda18212_attach, dvb->fe, i2c, cfg); - if (!fe) { -- printk(KERN_ERR "No TDA18271 found!\n"); ++ if (!fe) { + pr_err("No TDA18212 found!\n"); - return -ENODEV; - } -- if (input->fe->ops.i2c_gate_ctrl) -- input->fe->ops.i2c_gate_ctrl(input->fe, 0); - return 0; - } ++ return -ENODEV; ++ } ++ return 0; ++} +#endif - --/******************************************************************************/ --/******************************************************************************/ --/******************************************************************************/ ++ +/****************************************************************************/ +/****************************************************************************/ +/****************************************************************************/ @@ -24196,7 +24212,7 @@ index da8f848..c2fc010 100644 feconf->tuner_init = ctl->tuner_init; feconf->tuner_sleep = ctl->tuner_sleep; -@@ -715,331 +1243,919 @@ static int tuner_attach_stv6110(struct ddb_input *input, int type) +@@ -715,329 +1243,919 @@ static int tuner_attach_stv6110(struct ddb_input *input, int type) return 0; } @@ -24277,11 +24293,11 @@ index da8f848..c2fc010 100644 { - struct dvb_demux *dvbdmx = dvbdmxfeed->demux; - struct ddb_input *input = dvbdmx->priv; -- -- if (!input->users) -- ddb_input_start(input); + u32 c, v = 0; +- if (!input->users) +- ddb_input_start(input); +- - return ++input->users; + v = LNB_TONE & (dev->lnb_tone << (15 - lnb)); + pr_info("lnb_control[%u] = %08x\n", lnb, cmd | v); @@ -24339,16 +24355,22 @@ index da8f848..c2fc010 100644 - } - case 4: - dvb_net_release(&input->dvbnet); +- +- case 3: +- dvbdemux->dmx.close(&dvbdemux->dmx); +- dvbdemux->dmx.remove_frontend(&dvbdemux->dmx, +- &input->hw_frontend); +- dvbdemux->dmx.remove_frontend(&dvbdemux->dmx, +- &input->mem_frontend); +- dvb_dmxdev_release(&input->dmxdev); + struct ddb_input *input = fe->sec_priv; + struct ddb_port *port = input->port; + struct ddb *dev = port->dev; + struct ddb_dvb *dvb = &port->dvb[input->nr & 1]; + int s = 0; -- case 3: -- dvbdemux->dmx.close(&dvbdemux->dmx); -- dvbdemux->dmx.remove_frontend(&dvbdemux->dmx, -- &input->hw_frontend); +- case 2: +- dvb_dmx_release(&input->demux); + mutex_lock(&dev->lnb_lock); + switch (tone) { + case SEC_TONE_OFF: @@ -24366,17 +24388,32 @@ index da8f848..c2fc010 100644 + mutex_unlock(&dev->lnb_lock); + return 0; +} -+ + +- case 1: +- dvb_unregister_adapter(adap); +- } +- input->attached = 0; +static int dd_enable_high_lnb_voltage(struct dvb_frontend *fe, long arg) +{ + + return 0; -+} -+ + } + +-static int dvb_input_attach(struct ddb_input *input) +static int dd_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage) -+{ + { +- int ret; + struct ddb_input *input = fe->sec_priv; -+ struct ddb_port *port = input->port; + struct ddb_port *port = input->port; +- struct dvb_adapter *adap = &input->adap; +- struct dvb_demux *dvbdemux = &input->demux; +- +- ret = dvb_register_adapter(adap, "DDBridge", THIS_MODULE, +- &input->port->dev->pdev->dev, +- adapter_nr); +- if (ret < 0) { +- printk(KERN_ERR "ddbridge: Could not register adapter." +- "Check if you enabled enough adapters in dvb-core!\n"); + struct ddb *dev = port->dev; + struct ddb_dvb *dvb = &port->dvb[input->nr & 1]; + int s = 0; @@ -24437,7 +24474,7 @@ index da8f848..c2fc010 100644 + dmxdev->capabilities = 0; + ret = dvb_dmxdev_init(dmxdev, dvb_adapter); + if (ret < 0) -+ return ret; + return ret; + + hw_frontend->source = DMX_FRONTEND_0; + dvbdemux->dmx.add_frontend(&dvbdemux->dmx, hw_frontend); @@ -24519,9 +24556,7 @@ index da8f848..c2fc010 100644 + /* fallthrough */ + case 0x11: + dvbdemux->dmx.close(&dvbdemux->dmx); - dvbdemux->dmx.remove_frontend(&dvbdemux->dmx, -- &input->mem_frontend); -- dvb_dmxdev_release(&input->dmxdev); ++ dvbdemux->dmx.remove_frontend(&dvbdemux->dmx, + &dvb->hw_frontend); + dvbdemux->dmx.remove_frontend(&dvbdemux->dmx, + &dvb->mem_frontend); @@ -24535,9 +24570,7 @@ index da8f848..c2fc010 100644 + } + dvb->attached = 0x00; +} - -- case 2: -- dvb_dmx_release(&input->demux); ++ +static int dvb_register_adapters(struct ddb *dev) +{ + int i, ret = 0; @@ -24560,9 +24593,7 @@ index da8f848..c2fc010 100644 + } + return 0; + } - -- case 1: -- dvb_unregister_adapter(adap); ++ + for (i = 0; i < dev->info->port_num; i++) { + port = &dev->port[i]; + switch (port->class) { @@ -24637,27 +24668,14 @@ index da8f848..c2fc010 100644 + dvb_unregister_adapter(dvb->adap); + dvb->adap_registered = 0; } -- input->attached = 0; - } - - static int dvb_input_attach(struct ddb_input *input) - { -- int ret; +- input->attached = 1; ++} ++ ++static int dvb_input_attach(struct ddb_input *input) ++{ + int ret = 0; + struct ddb_dvb *dvb = &input->port->dvb[input->nr & 1]; - struct ddb_port *port = input->port; -- struct dvb_adapter *adap = &input->adap; -- struct dvb_demux *dvbdemux = &input->demux; -- -- ret = dvb_register_adapter(adap, "DDBridge", THIS_MODULE, -- &input->port->dev->pdev->dev, -- adapter_nr); -- if (ret < 0) { -- printk(KERN_ERR "ddbridge: Could not register adapter." -- "Check if you enabled enough adapters in dvb-core!\n"); -- return ret; -- } -- input->attached = 1; ++ struct ddb_port *port = input->port; + struct dvb_adapter *adap = dvb->adap; + struct dvb_demux *dvbdemux = &dvb->demux; + @@ -24690,7 +24708,7 @@ index da8f848..c2fc010 100644 - input->attached = 4; + dvb->attached = 0x20; -- input->fe = 0; +- input->fe = NULL; + if (input->port->dev->ns_num) { + ret = netstream_init(input); + if (ret < 0) @@ -24746,6 +24764,14 @@ index da8f848..c2fc010 100644 + case DDB_TUNER_ISDBT_SONY: + if (demod_attach_cxd2843(input, 0) < 0) + return -ENODEV; ++ if (tuner_attach_tda18212dd(input) < 0) ++ return -ENODEV; ++ break; ++ case DDB_TUNER_DVBCT2_SONY_P: ++ case DDB_TUNER_DVBC2T2_SONY_P: ++ case DDB_TUNER_ISDBT_SONY_P: ++ if (demod_attach_cxd2843(input, 1) < 0) ++ return -ENODEV; + if (tuner_attach_tda18212dd(input) < 0) return -ENODEV; - if (input->fe2) { @@ -24757,14 +24783,6 @@ index da8f848..c2fc010 100644 - sizeof(struct dvb_tuner_ops)); - } break; -+ case DDB_TUNER_DVBCT2_SONY_P: -+ case DDB_TUNER_DVBC2T2_SONY_P: -+ case DDB_TUNER_ISDBT_SONY_P: -+ if (demod_attach_cxd2843(input, 1) < 0) -+ return -ENODEV; -+ if (tuner_attach_tda18212dd(input) < 0) -+ return -ENODEV; -+ break; + default: + return 0; } @@ -24789,7 +24807,7 @@ index da8f848..c2fc010 100644 -/****************************************************************************/ -/****************************************************************************/ --static ssize_t ts_write(struct file *file, const char *buf, +-static ssize_t ts_write(struct file *file, const __user char *buf, - size_t count, loff_t *ppos) +static int port_has_encti(struct ddb_port *port) { @@ -24820,7 +24838,7 @@ index da8f848..c2fc010 100644 + return ret ? 0 : 1; } --static ssize_t ts_read(struct file *file, char *buf, +-static ssize_t ts_read(struct file *file, __user char *buf, - size_t count, loff_t *ppos) +static int port_has_cxd(struct ddb_port *port, u8 *type) { @@ -25009,7 +25027,6 @@ index da8f848..c2fc010 100644 - .open = dvb_generic_open, - .release = dvb_generic_release, - .poll = ts_poll, -- .mmap = 0, +static int port_has_cxd28xx(struct ddb_port *port, u8 *id) +{ + struct i2c_adapter *i2c = &port->i2c->adap; @@ -25032,7 +25049,6 @@ index da8f848..c2fc010 100644 }; -static struct dvb_device dvbdev_ci = { -- .priv = 0, - .readers = -1, - .writers = -1, - .users = -1, @@ -25235,20 +25251,20 @@ index da8f848..c2fc010 100644 + CI_CONTROL(ci->nr)); + return 0; +} -+ + +-/****************************************************************************/ +-/****************************************************************************/ +-/****************************************************************************/ +static int slot_shutdown(struct dvb_ca_en50221 *ca, int slot) +{ + struct ddb_ci *ci = ca->data; --/****************************************************************************/ --/****************************************************************************/ --/****************************************************************************/ +-static void input_tasklet(unsigned long data) + ddbwritel(ci->port->dev, 0, CI_CONTROL(ci->nr)); + msleep(300); + return 0; +} - --static void input_tasklet(unsigned long data) ++ +static int slot_ts_enable(struct dvb_ca_en50221 *ca, int slot) { - struct ddb_input *input = (struct ddb_input *) data; @@ -25337,13 +25353,14 @@ index da8f848..c2fc010 100644 +/****************************************************************************/ + - struct cxd2099_cfg cxd_cfg = { +-static struct cxd2099_cfg cxd_cfg = { - .bitrate = 62000, ++struct cxd2099_cfg cxd_cfg = { + .bitrate = 72000, .adr = 0x40, .polarity = 1, .clock_mode = 1, -@@ -1047,28 +2163,21 @@ struct cxd2099_cfg cxd_cfg = { +@@ -1045,28 +2163,21 @@ static struct cxd2099_cfg cxd_cfg = { static int ddb_ci_attach(struct ddb_port *port) { @@ -25386,7 +25403,7 @@ index da8f848..c2fc010 100644 } static int ddb_port_attach(struct ddb_port *port) -@@ -1081,15 +2190,32 @@ static int ddb_port_attach(struct ddb_port *port) +@@ -1079,15 +2190,32 @@ static int ddb_port_attach(struct ddb_port *port) if (ret < 0) break; ret = dvb_input_attach(port->input[1]); @@ -25420,7 +25437,7 @@ index da8f848..c2fc010 100644 return ret; } -@@ -1098,6 +2224,21 @@ static int ddb_ports_attach(struct ddb *dev) +@@ -1096,6 +2224,21 @@ static int ddb_ports_attach(struct ddb *dev) int i, ret = 0; struct ddb_port *port; @@ -25442,7 +25459,7 @@ index da8f848..c2fc010 100644 for (i = 0; i < dev->info->port_num; i++) { port = &dev->port[i]; ret = ddb_port_attach(port); -@@ -1114,125 +2255,259 @@ static void ddb_ports_detach(struct ddb *dev) +@@ -1112,125 +2255,259 @@ static void ddb_ports_detach(struct ddb *dev) for (i = 0; i < dev->info->port_num; i++) { port = &dev->port[i]; @@ -25463,8 +25480,9 @@ index da8f848..c2fc010 100644 - ddb_output_stop(port->output); dvb_ca_en50221_release(port->en); kfree(port->en); - port->en = 0; +- port->en = NULL; - dvb_unregister_adapter(&port->output->adap); ++ port->en = 0; } break; + case DDB_PORT_MOD: @@ -25773,7 +25791,7 @@ index da8f848..c2fc010 100644 } static void ddb_ports_init(struct ddb *dev) -@@ -1240,20 +2515,53 @@ static void ddb_ports_init(struct ddb *dev) +@@ -1238,20 +2515,53 @@ static void ddb_ports_init(struct ddb *dev) int i; struct ddb_port *port; @@ -25835,7 +25853,7 @@ index da8f848..c2fc010 100644 } } -@@ -1262,12 +2570,25 @@ static void ddb_ports_release(struct ddb *dev) +@@ -1260,12 +2570,25 @@ static void ddb_ports_release(struct ddb *dev) int i; struct ddb_port *port; @@ -25865,7 +25883,7 @@ index da8f848..c2fc010 100644 } } -@@ -1275,90 +2596,306 @@ static void ddb_ports_release(struct ddb *dev) +@@ -1273,90 +2596,306 @@ static void ddb_ports_release(struct ddb *dev) /****************************************************************************/ /****************************************************************************/ @@ -25912,7 +25930,8 @@ index da8f848..c2fc010 100644 +} + +static irqreturn_t irq_handler0(int irq, void *dev_id) -+{ + { +- struct ddb_i2c *i2c = &dev->i2c[n]; + struct ddb *dev = (struct ddb *) dev_id; + u32 s = ddbreadl(dev, INTERRUPT_STATUS); + @@ -25929,13 +25948,10 @@ index da8f848..c2fc010 100644 +} + +static irqreturn_t irq_handler1(int irq, void *dev_id) - { -- struct ddb_i2c *i2c = &dev->i2c[n]; ++{ + struct ddb *dev = (struct ddb *) dev_id; + u32 s = ddbreadl(dev, INTERRUPT_STATUS); - -- i2c->done = 1; -- wake_up(&i2c->wq); ++ + do { + if (s & 0x80000000) + return IRQ_NONE; @@ -25944,7 +25960,9 @@ index da8f848..c2fc010 100644 + ddbwritel(dev, s, INTERRUPT_ACK); + irq_handle_msg(dev, s); + } while ((s = ddbreadl(dev, INTERRUPT_STATUS))); -+ + +- i2c->done = 1; +- wake_up(&i2c->wq); + return IRQ_HANDLED; } @@ -26037,7 +26055,10 @@ index da8f848..c2fc010 100644 +{ + return 0; +} -+ + +-/******************************************************************************/ +-/******************************************************************************/ +-/******************************************************************************/ +static unsigned int nsd_poll(struct file *file, poll_table *wait) +{ + return 0; @@ -26187,10 +26208,7 @@ index da8f848..c2fc010 100644 +} + +#endif - --/******************************************************************************/ --/******************************************************************************/ --/******************************************************************************/ ++ +/****************************************************************************/ +/****************************************************************************/ +/****************************************************************************/ @@ -26225,7 +26243,7 @@ index da8f848..c2fc010 100644 data = 0; shift = ((4 - wlen) * 8); -@@ -1370,33 +2907,33 @@ static int flashio(struct ddb *dev, u8 *wbuf, u32 wlen, u8 *rbuf, u32 rlen) +@@ -1368,33 +2907,33 @@ static int flashio(struct ddb *dev, u8 *wbuf, u32 wlen, u8 *rbuf, u32 rlen) } if (shift) data <<= shift; @@ -26271,7 +26289,7 @@ index da8f848..c2fc010 100644 if (rlen < 4) data <<= ((4 - rlen) * 8); -@@ -1410,6 +2947,35 @@ static int flashio(struct ddb *dev, u8 *wbuf, u32 wlen, u8 *rbuf, u32 rlen) +@@ -1408,28 +2947,107 @@ static int flashio(struct ddb *dev, u8 *wbuf, u32 wlen, u8 *rbuf, u32 rlen) return 0; } @@ -26307,7 +26325,11 @@ index da8f848..c2fc010 100644 #define DDB_MAGIC 'd' struct ddb_flashio { -@@ -1419,19 +2985,69 @@ struct ddb_flashio { +- __user __u8 *write_buf; ++ __u8 *write_buf; + __u32 write_len; +- __user __u8 *read_buf; ++ __u8 *read_buf; __u32 read_len; }; @@ -26380,7 +26402,16 @@ index da8f848..c2fc010 100644 file->private_data = dev; return 0; } -@@ -1450,7 +3066,6 @@ static long ddb_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +@@ -1437,7 +3055,7 @@ static int ddb_open(struct inode *inode, struct file *file) + static long ddb_ioctl(struct file *file, unsigned int cmd, unsigned long arg) + { + struct ddb *dev = file->private_data; +- __user void *parg = (__user void *)arg; ++ void *parg = (void *)arg; + int res; + + switch (cmd) { +@@ -1448,7 +3066,6 @@ static long ddb_ioctl(struct file *file, unsigned int cmd, unsigned long arg) if (copy_from_user(&fio, parg, sizeof(fio))) return -EFAULT; @@ -26388,7 +26419,7 @@ index da8f848..c2fc010 100644 if (fio.write_len > 1028 || fio.read_len > 1028) return -EINVAL; if (fio.write_len + fio.read_len > 1028) -@@ -1468,6 +3083,107 @@ static long ddb_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +@@ -1466,6 +3083,107 @@ static long ddb_ioctl(struct file *file, unsigned int cmd, unsigned long arg) return -EFAULT; break; } @@ -26496,7 +26527,7 @@ index da8f848..c2fc010 100644 default: return -ENOTTY; } -@@ -1477,284 +3193,508 @@ static long ddb_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +@@ -1475,284 +3193,508 @@ static long ddb_ioctl(struct file *file, unsigned int cmd, unsigned long arg) static const struct file_operations ddb_fops = { .unlocked_ioctl = ddb_ioctl, .open = ddb_open, @@ -26686,7 +26717,7 @@ index da8f848..c2fc010 100644 + s16 i, q; - ddb_unmap(dev); -- pci_set_drvdata(pdev, 0); +- pci_set_drvdata(pdev, NULL); - pci_disable_device(pdev); + adap = &dev->i2c[1].adap; + if (i2c_read_regs16(adap, 0x1f, 0xf480, tmp, 4) < 0) @@ -26891,7 +26922,7 @@ index da8f848..c2fc010 100644 -fail: - printk(KERN_ERR "fail\n"); - ddb_unmap(dev); -- pci_set_drvdata(pdev, 0); +- pci_set_drvdata(pdev, NULL); - pci_disable_device(pdev); - return -1; +static ssize_t redirect_store(struct device *device, @@ -30133,7 +30164,7 @@ index 0000000..9784f10 +MODULE_LICENSE("GPL"); +MODULE_VERSION(DDBRIDGE_VERSION); diff --git a/drivers/media/pci/ddbridge/ddbridge.h b/drivers/media/pci/ddbridge/ddbridge.h -index 8b1b41d..a02e91a 100644 +index be87fbd..a02e91a 100644 --- a/drivers/media/pci/ddbridge/ddbridge.h +++ b/drivers/media/pci/ddbridge/ddbridge.h @@ -1,7 +1,8 @@ @@ -30401,7 +30432,7 @@ index 8b1b41d..a02e91a 100644 }; struct ddb_port { -@@ -141,45 +249,250 @@ struct ddb_port { +@@ -141,43 +249,250 @@ struct ddb_port { #define DDB_PORT_NONE 0 #define DDB_PORT_CI 1 #define DDB_PORT_TUNER 2 @@ -30510,6 +30541,7 @@ index 8b1b41d..a02e91a 100644 struct ddb { struct pci_dev *pdev; +- unsigned char __iomem *regs; + struct platform_device *pfdev; + struct device *dev; + struct ddb_ids ids; @@ -30520,7 +30552,7 @@ index 8b1b41d..a02e91a 100644 + u32 has_ns; + + struct ddb_regmap regmap; - unsigned char *regs; ++ unsigned char *regs; + u32 regs_len; struct ddb_port port[DDB_MAX_PORT]; struct ddb_i2c i2c[DDB_MAX_I2C]; @@ -30563,12 +30595,10 @@ index 8b1b41d..a02e91a 100644 /****************************************************************************/ -#define ddbwritel(_val, _adr) writel((_val), \ -- (char *) (dev->regs+(_adr))) --#define ddbreadl(_adr) readl((char *) (dev->regs+(_adr))) --#define ddbcpyto(_adr, _src, _count) memcpy_toio((char *) \ -- (dev->regs+(_adr)), (_src), (_count)) --#define ddbcpyfrom(_dst, _adr, _count) memcpy_fromio((_dst), (char *) \ -- (dev->regs+(_adr)), (_count)) +- dev->regs+(_adr)) +-#define ddbreadl(_adr) readl(dev->regs+(_adr)) +-#define ddbcpyto(_adr, _src, _count) memcpy_toio(dev->regs+(_adr), (_src), (_count)) +-#define ddbcpyfrom(_dst, _adr, _count) memcpy_fromio((_dst), dev->regs+(_adr), (_count)) +static inline void ddbwriteb(struct ddb *dev, u32 val, u32 adr) +{ + writeb(val, (char *) (dev->regs+(adr))); @@ -31264,7 +31294,7 @@ index 0000000..a86459e +}; +#endif diff --git a/drivers/media/pci/ngene/ngene-cards.c b/drivers/media/pci/ngene/ngene-cards.c -index 9e82d21..a8a1a03 100644 +index 039bed3..a8a1a03 100644 --- a/drivers/media/pci/ngene/ngene-cards.c +++ b/drivers/media/pci/ngene/ngene-cards.c @@ -42,8 +42,18 @@ @@ -32043,6 +32073,15 @@ index 9e82d21..a8a1a03 100644 static struct stv090x_config fe_cineS2 = { .device = STV0900, +@@ -696,7 +915,7 @@ static struct ngene_info ngene_info_m780 = { + .demod_attach = { NULL, demod_attach_lg330x }, + + /* Ensure these are NULL else the frame will call them (as funcs) */ +- .tuner_attach = { NULL, NULL, NULL, NULL }, ++ .tuner_attach = { 0, 0, 0, 0 }, + .fe_config = { NULL, &aver_m780 }, + .avf = { 0 }, + @@ -705,14 +924,18 @@ static struct ngene_info ngene_info_m780 = { .fw_version = 15, }; @@ -32421,10 +32460,31 @@ index 9e82d21..a8a1a03 100644 .link_reset = ngene_link_reset, .slot_reset = ngene_slot_reset, diff --git a/drivers/media/pci/ngene/ngene-core.c b/drivers/media/pci/ngene/ngene-core.c -index 4930b55..84510db 100644 +index e29bc3af..84510db 100644 --- a/drivers/media/pci/ngene/ngene-core.c +++ b/drivers/media/pci/ngene/ngene-core.c -@@ -86,6 +86,14 @@ static void event_tasklet(unsigned long data) +@@ -57,13 +57,15 @@ DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); + + #define dprintk if (debug) printk + +-#define ngwriteb(dat, adr) writeb((dat), dev->iomem + (adr)) +-#define ngwritel(dat, adr) writel((dat), dev->iomem + (adr)) +-#define ngwriteb(dat, adr) writeb((dat), dev->iomem + (adr)) ++#define ngwriteb(dat, adr) writeb((dat), (char *)(dev->iomem + (adr))) ++#define ngwritel(dat, adr) writel((dat), (char *)(dev->iomem + (adr))) ++#define ngwriteb(dat, adr) writeb((dat), (char *)(dev->iomem + (adr))) + #define ngreadl(adr) readl(dev->iomem + (adr)) + #define ngreadb(adr) readb(dev->iomem + (adr)) +-#define ngcpyto(adr, src, count) memcpy_toio(dev->iomem + (adr), (src), (count)) +-#define ngcpyfrom(dst, adr, count) memcpy_fromio((dst), dev->iomem + (adr), (count)) ++#define ngcpyto(adr, src, count) memcpy_toio((char *) \ ++ (dev->iomem + (adr)), (src), (count)) ++#define ngcpyfrom(dst, adr, count) memcpy_fromio((dst), (char *) \ ++ (dev->iomem + (adr)), (count)) + + /****************************************************************************/ + /* nGene interrupt handler **************************************************/ +@@ -84,6 +86,14 @@ static void event_tasklet(unsigned long data) if ((Event.UARTStatus & 0x02) && (dev->RxEventNotify)) dev->RxEventNotify(dev, Event.TimeStamp, Event.RXCharacter); @@ -32439,7 +32499,7 @@ index 4930b55..84510db 100644 } } -@@ -214,6 +222,13 @@ static irqreturn_t irq_handler(int irq, void *dev_id) +@@ -212,6 +222,13 @@ static irqreturn_t irq_handler(int irq, void *dev_id) u8 nextWriteIndex = (dev->EventQueueWriteIndex + 1) & (EVENT_QUEUE_SIZE - 1); @@ -32453,7 +32513,7 @@ index 4930b55..84510db 100644 if (nextWriteIndex != dev->EventQueueReadIndex) { dev->EventQueue[dev->EventQueueWriteIndex] = *(dev->EventBuffer); -@@ -258,16 +273,22 @@ static void dump_command_io(struct ngene *dev) +@@ -256,16 +273,22 @@ static void dump_command_io(struct ngene *dev) u8 buf[8], *b; ngcpyfrom(buf, HOST_TO_NGENE, 8); @@ -32480,7 +32540,7 @@ index 4930b55..84510db 100644 } static int ngene_command_mutex(struct ngene *dev, struct ngene_command *com) -@@ -316,12 +337,24 @@ static int ngene_command_mutex(struct ngene *dev, struct ngene_command *com) +@@ -314,12 +337,24 @@ static int ngene_command_mutex(struct ngene *dev, struct ngene_command *com) ngwritel(1, FORCE_INT); ret = wait_event_timeout(dev->cmd_wq, dev->cmd_done == 1, 2 * HZ); @@ -32505,7 +32565,7 @@ index 4930b55..84510db 100644 dump_command_io(dev); return -1; } -@@ -348,6 +381,19 @@ int ngene_command(struct ngene *dev, struct ngene_command *com) +@@ -346,6 +381,19 @@ int ngene_command(struct ngene *dev, struct ngene_command *com) return result; } @@ -32525,7 +32585,7 @@ index 4930b55..84510db 100644 static int ngene_command_load_firmware(struct ngene *dev, u8 *ngene_fw, u32 size) -@@ -382,6 +428,83 @@ static int ngene_command_load_firmware(struct ngene *dev, +@@ -380,6 +428,83 @@ static int ngene_command_load_firmware(struct ngene *dev, return ngene_command(dev, &com); } @@ -32609,7 +32669,7 @@ index 4930b55..84510db 100644 static int ngene_command_config_buf(struct ngene *dev, u8 config) { -@@ -427,6 +550,18 @@ int ngene_command_gpio_set(struct ngene *dev, u8 select, u8 level) +@@ -425,6 +550,18 @@ int ngene_command_gpio_set(struct ngene *dev, u8 select, u8 level) return ngene_command(dev, &com); } @@ -32628,7 +32688,7 @@ index 4930b55..84510db 100644 /* 02000640 is sample on rising edge. -@@ -512,6 +647,17 @@ void FillTSBuffer(void *Buffer, int Length, u32 Flags) +@@ -510,6 +647,17 @@ void FillTSBuffer(void *Buffer, int Length, u32 Flags) } } @@ -32646,7 +32706,7 @@ index 4930b55..84510db 100644 static void flush_buffers(struct ngene_channel *chan) { -@@ -732,6 +878,14 @@ void set_transfer(struct ngene_channel *chan, int state) +@@ -730,6 +878,14 @@ void set_transfer(struct ngene_channel *chan, int state) if (dev->card_info->switch_ctrl) dev->card_info->switch_ctrl(chan, 1, state ^ 1); @@ -32661,7 +32721,7 @@ index 4930b55..84510db 100644 if (state) { spin_lock_irq(&chan->state_lock); -@@ -752,8 +906,8 @@ void set_transfer(struct ngene_channel *chan, int state) +@@ -750,8 +906,8 @@ void set_transfer(struct ngene_channel *chan, int state) if (chan->mode & NGENE_IO_TSIN) chan->pBufferExchange = tsin_exchange; spin_unlock_irq(&chan->state_lock); @@ -32672,7 +32732,7 @@ index 4930b55..84510db 100644 ngreadl(0x9310)); */ ret = ngene_command_stream_control(dev, chan->number, -@@ -771,6 +925,89 @@ void set_transfer(struct ngene_channel *chan, int state) +@@ -769,6 +925,89 @@ void set_transfer(struct ngene_channel *chan, int state) } } @@ -32762,7 +32822,7 @@ index 4930b55..84510db 100644 /****************************************************************************/ /* nGene hardware init and release functions ********************************/ -@@ -910,6 +1147,7 @@ static int AllocateRingBuffers(struct pci_dev *pci_dev, +@@ -908,6 +1147,7 @@ static int AllocateRingBuffers(struct pci_dev *pci_dev, { dma_addr_t tmp; u32 i, j; @@ -32770,7 +32830,7 @@ index 4930b55..84510db 100644 u32 SCListMemSize = pRingBuffer->NumBuffers * ((Buffer2Length != 0) ? (NUM_SCATTER_GATHER_ENTRIES * 2) : NUM_SCATTER_GATHER_ENTRIES) -@@ -1009,12 +1247,14 @@ static int AllocateRingBuffers(struct pci_dev *pci_dev, +@@ -1007,12 +1247,14 @@ static int AllocateRingBuffers(struct pci_dev *pci_dev, } @@ -32786,7 +32846,7 @@ index 4930b55..84510db 100644 /* Copy pointer to scatter gather list in TSRingbuffer structure for buffer 2 Load number of buffer -@@ -1035,7 +1275,7 @@ static int FillTSIdleBuffer(struct SRingBufferDescriptor *pIdleBuffer, +@@ -1033,7 +1275,7 @@ static int FillTSIdleBuffer(struct SRingBufferDescriptor *pIdleBuffer, pIdleBuffer->Head->ngeneBuffer.Number_of_entries_1; Cur = Cur->Next; } @@ -32795,7 +32855,7 @@ index 4930b55..84510db 100644 } static u32 RingBufferSizes[MAX_STREAM] = { -@@ -1062,6 +1302,85 @@ static u32 Buffer2Sizes[MAX_STREAM] = { +@@ -1060,6 +1302,85 @@ static u32 Buffer2Sizes[MAX_STREAM] = { 0 }; @@ -32881,7 +32941,7 @@ index 4930b55..84510db 100644 static int AllocCommonBuffers(struct ngene *dev) { -@@ -1075,11 +1394,12 @@ static int AllocCommonBuffers(struct ngene *dev) +@@ -1073,11 +1394,12 @@ static int AllocCommonBuffers(struct ngene *dev) dev->ngenetohost = dev->FWInterfaceBuffer + 256; dev->EventBuffer = dev->FWInterfaceBuffer + 512; @@ -32897,7 +32957,7 @@ index 4930b55..84510db 100644 for (i = STREAM_VIDEOIN1; i < MAX_STREAM; i++) { int type = dev->card_info->io_type[i]; -@@ -1314,6 +1634,10 @@ static int ngene_buffer_config(struct ngene *dev) +@@ -1312,6 +1634,10 @@ static int ngene_buffer_config(struct ngene *dev) u8 tsin12_config[6] = { 0x60, 0x60, 0x00, 0x00, 0x00, 0x00 }; u8 tsin1234_config[6] = { 0x30, 0x30, 0x00, 0x30, 0x30, 0x00 }; u8 tsio1235_config[6] = { 0x30, 0x30, 0x00, 0x28, 0x00, 0x38 }; @@ -32908,7 +32968,7 @@ index 4930b55..84510db 100644 u8 *bconf = tsin12_config; if (dev->card_info->io_type[2]&NGENE_IO_TSIN && -@@ -1323,10 +1647,22 @@ static int ngene_buffer_config(struct ngene *dev) +@@ -1321,10 +1647,22 @@ static int ngene_buffer_config(struct ngene *dev) dev->ci.en) bconf = tsio1235_config; } @@ -32931,7 +32991,7 @@ index 4930b55..84510db 100644 if (dev->card_info->io_type[3] == NGENE_IO_TSIN) bconf = BUFFER_CONFIG_3333; stat = ngene_command_config_buf(dev, bconf); -@@ -1399,8 +1735,10 @@ static int ngene_start(struct ngene *dev) +@@ -1397,8 +1735,10 @@ static int ngene_start(struct ngene *dev) if (stat < 0) goto fail; @@ -32943,7 +33003,16 @@ index 4930b55..84510db 100644 fail: ngwritel(0, NGENE_INT_ENABLE); free_irq(dev->pci_dev->irq, dev); -@@ -1618,7 +1956,7 @@ static void ngene_unlink(struct ngene *dev) +@@ -1590,7 +1930,7 @@ static void cxd_detach(struct ngene *dev) + + dvb_ca_en50221_release(ci->en); + kfree(ci->en); +- ci->en = NULL; ++ ci->en = 0; + } + + /***********************************/ +@@ -1616,7 +1956,7 @@ static void ngene_unlink(struct ngene *dev) void ngene_shutdown(struct pci_dev *pdev) { @@ -32952,7 +33021,7 @@ index 4930b55..84510db 100644 if (!dev || !shutdown_workaround) return; -@@ -1644,6 +1982,7 @@ void ngene_remove(struct pci_dev *pdev) +@@ -1642,6 +1982,7 @@ void ngene_remove(struct pci_dev *pdev) cxd_detach(dev); ngene_stop(dev); ngene_release_buffers(dev); @@ -32960,7 +33029,7 @@ index 4930b55..84510db 100644 pci_disable_device(pdev); } -@@ -1683,10 +2022,36 @@ int ngene_probe(struct pci_dev *pci_dev, const struct pci_device_id *id) +@@ -1681,10 +2022,36 @@ int ngene_probe(struct pci_dev *pci_dev, const struct pci_device_id *id) dev->i2c_current_bus = -1; @@ -32999,7 +33068,7 @@ index 4930b55..84510db 100644 goto fail2; return 0; -@@ -1697,5 +2062,6 @@ fail1: +@@ -1695,5 +2062,6 @@ fail1: ngene_release_buffers(dev); fail0: pci_disable_device(pci_dev); @@ -33007,10 +33076,10 @@ index 4930b55..84510db 100644 return stat; } diff --git a/drivers/media/pci/ngene/ngene-dvb.c b/drivers/media/pci/ngene/ngene-dvb.c -index fcb16a6..8049e2b 100644 +index 59bb285..8049e2b 100644 --- a/drivers/media/pci/ngene/ngene-dvb.c +++ b/drivers/media/pci/ngene/ngene-dvb.c -@@ -42,10 +42,319 @@ +@@ -42,12 +42,321 @@ #include "ngene.h" @@ -33214,7 +33283,8 @@ index fcb16a6..8049e2b 100644 + com.cmd.WriteUart.Data[len + 1] = 0; + com.in_len = len; + com.out_len = 0; -+ + +-static ssize_t ts_write(struct file *file, const char __user *buf, + if (ngene_command(dev, &com) < 0) + return -EIO; + @@ -33327,10 +33397,35 @@ index fcb16a6..8049e2b 100644 +} + +#endif - - static ssize_t ts_write(struct file *file, const char *buf, ++ ++static ssize_t ts_write(struct file *file, const char *buf, size_t count, loff_t *ppos) -@@ -133,6 +442,11 @@ void *tsin_exchange(void *priv, void *buf, u32 len, u32 clock, u32 flags) + { + struct dvb_device *dvbdev = file->private_data; +@@ -59,12 +368,12 @@ static ssize_t ts_write(struct file *file, const char __user *buf, + (&dev->tsout_rbuf) >= count) < 0) + return 0; + +- dvb_ringbuffer_write_user(&dev->tsout_rbuf, buf, count); ++ dvb_ringbuffer_write(&dev->tsout_rbuf, buf, count); + + return count; + } + +-static ssize_t ts_read(struct file *file, char __user *buf, ++static ssize_t ts_read(struct file *file, char *buf, + size_t count, loff_t *ppos) + { + struct dvb_device *dvbdev = file->private_data; +@@ -97,6 +406,7 @@ static const struct file_operations ci_fops = { + }; + + struct dvb_device ngene_dvbdev_ci = { ++ .priv = 0, + .readers = -1, + .writers = -1, + .users = -1, +@@ -132,6 +442,11 @@ void *tsin_exchange(void *priv, void *buf, u32 len, u32 clock, u32 flags) struct ngene_channel *chan = priv; struct ngene *dev = chan->dev; @@ -33342,7 +33437,7 @@ index fcb16a6..8049e2b 100644 if (flags & DF_SWAP32) swap_buffer(buf, len); -@@ -191,12 +505,49 @@ void *tsout_exchange(void *priv, void *buf, u32 len, u32 clock, u32 flags) +@@ -190,12 +505,49 @@ void *tsout_exchange(void *priv, void *buf, u32 len, u32 clock, u32 flags) return buf; } @@ -33392,7 +33487,7 @@ index fcb16a6..8049e2b 100644 if (chan->users == 0) { if (!chan->dev->cmd_timeout_workaround || !chan->running) -@@ -210,6 +561,27 @@ int ngene_stop_feed(struct dvb_demux_feed *dvbdmxfeed) +@@ -209,6 +561,27 @@ int ngene_stop_feed(struct dvb_demux_feed *dvbdmxfeed) { struct dvb_demux *dvbdmx = dvbdmxfeed->demux; struct ngene_channel *chan = dvbdmx->priv; @@ -33846,7 +33941,7 @@ index d28554f..601bea4 100644 + +#endif diff --git a/drivers/media/pci/ngene/ngene.h b/drivers/media/pci/ngene/ngene.h -index 22c39ff..e3ae00c 100644 +index 51e2fbd..e3ae00c 100644 --- a/drivers/media/pci/ngene/ngene.h +++ b/drivers/media/pci/ngene/ngene.h @@ -653,6 +653,11 @@ struct ngene_channel { @@ -33871,6 +33966,15 @@ index 22c39ff..e3ae00c 100644 u8 dma_on; int soundstreamon; int audiomute; +@@ -737,7 +745,7 @@ typedef void (tx_cb_t)(struct ngene *, u32); + struct ngene { + int nr; + struct pci_dev *pci_dev; +- unsigned char __iomem *iomem; ++ unsigned char *iomem; + + /*struct i2c_adapter i2c_adapter;*/ + @@ -849,6 +857,10 @@ struct ngene_info { u8 lnb[4]; int i2c_access; diff --git a/packages/linux/patches/3.17.8/linux-222-stb0899_signal_quality.patch b/packages/linux/patches/3.18.2/linux-222-stb0899_signal_quality.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-222-stb0899_signal_quality.patch rename to packages/linux/patches/3.18.2/linux-222-stb0899_signal_quality.patch diff --git a/packages/linux/patches/3.17.8/linux-223-Fix-video-artifacts-with-tt-3600-s2-usb.patch b/packages/linux/patches/3.18.2/linux-223-Fix-video-artifacts-with-tt-3600-s2-usb.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-223-Fix-video-artifacts-with-tt-3600-s2-usb.patch rename to packages/linux/patches/3.18.2/linux-223-Fix-video-artifacts-with-tt-3600-s2-usb.patch diff --git a/packages/linux/patches/3.17.8/linux-226-geniatech-t230-tuner.patch b/packages/linux/patches/3.18.2/linux-226-geniatech-t230-tuner.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-226-geniatech-t230-tuner.patch rename to packages/linux/patches/3.18.2/linux-226-geniatech-t230-tuner.patch diff --git a/packages/linux/patches/3.17.8/linux-703-macmini2012-ethernet.patch b/packages/linux/patches/3.18.2/linux-703-macmini2012-ethernet.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-703-macmini2012-ethernet.patch rename to packages/linux/patches/3.18.2/linux-703-macmini2012-ethernet.patch diff --git a/packages/linux/patches/3.17.8/linux-705-Support-for-Buffalo-WLI-UC-G300HP-V1.patch b/packages/linux/patches/3.18.2/linux-705-Support-for-Buffalo-WLI-UC-G300HP-V1.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-705-Support-for-Buffalo-WLI-UC-G300HP-V1.patch rename to packages/linux/patches/3.18.2/linux-705-Support-for-Buffalo-WLI-UC-G300HP-V1.patch diff --git a/packages/linux/patches/3.17.8/linux-706-Sitecom-N300.patch b/packages/linux/patches/3.18.2/linux-706-Sitecom-N300.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-706-Sitecom-N300.patch rename to packages/linux/patches/3.18.2/linux-706-Sitecom-N300.patch diff --git a/packages/linux/patches/3.17.8/linux-900-hide_tsc_error.patch b/packages/linux/patches/3.18.2/linux-900-hide_tsc_error.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-900-hide_tsc_error.patch rename to packages/linux/patches/3.18.2/linux-900-hide_tsc_error.patch diff --git a/packages/linux/patches/3.17.8/linux-950-saa716x_PCIe_interface_chipset.patch b/packages/linux/patches/3.18.2/linux-950-saa716x_PCIe_interface_chipset.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-950-saa716x_PCIe_interface_chipset.patch rename to packages/linux/patches/3.18.2/linux-950-saa716x_PCIe_interface_chipset.patch diff --git a/packages/linux/patches/3.17.8/linux-990.06-hda-Avoid-outputting-HDMI-audio-before-prepare-.patch b/packages/linux/patches/3.18.2/linux-990.06-hda-Avoid-outputting-HDMI-audio-before-prepare-.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-990.06-hda-Avoid-outputting-HDMI-audio-before-prepare-.patch rename to packages/linux/patches/3.18.2/linux-990.06-hda-Avoid-outputting-HDMI-audio-before-prepare-.patch diff --git a/packages/linux/patches/3.17.8/linux-995-CX24120-13Z_frontend.patch b/packages/linux/patches/3.18.2/linux-995-CX24120-13Z_frontend.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-995-CX24120-13Z_frontend.patch rename to packages/linux/patches/3.18.2/linux-995-CX24120-13Z_frontend.patch diff --git a/packages/linux/patches/3.17.8/linux-999.02-0001-pm-disable-async-suspend-resume-by-default.patch b/packages/linux/patches/3.18.2/linux-999.02-0001-pm-disable-async-suspend-resume-by-default.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-999.02-0001-pm-disable-async-suspend-resume-by-default.patch rename to packages/linux/patches/3.18.2/linux-999.02-0001-pm-disable-async-suspend-resume-by-default.patch diff --git a/packages/linux/patches/3.17.8/linux-010-intel-fix-gpu-hang.patch b/packages/linux/patches/3.18.2/todo/linux-010-intel-fix-gpu-hang.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-010-intel-fix-gpu-hang.patch rename to packages/linux/patches/3.18.2/todo/linux-010-intel-fix-gpu-hang.patch diff --git a/packages/linux/patches/3.17.8/linux-051-ouya_controller_support.patch b/packages/linux/patches/3.18.2/todo/linux-051-ouya_controller_support.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-051-ouya_controller_support.patch rename to packages/linux/patches/3.18.2/todo/linux-051-ouya_controller_support.patch diff --git a/packages/linux/patches/3.17.8/linux-059-remove_some_xpad_pids-0.2.patch b/packages/linux/patches/3.18.2/todo/linux-059-remove_some_xpad_pids-0.2.patch similarity index 100% rename from packages/linux/patches/3.17.8/linux-059-remove_some_xpad_pids-0.2.patch rename to packages/linux/patches/3.18.2/todo/linux-059-remove_some_xpad_pids-0.2.patch diff --git a/packages/linux/patches/3.17.8/todo/linux-061-valve-xpad-rework.patch b/packages/linux/patches/3.18.2/todo/linux-061-valve-xpad-rework.patch similarity index 100% rename from packages/linux/patches/3.17.8/todo/linux-061-valve-xpad-rework.patch rename to packages/linux/patches/3.18.2/todo/linux-061-valve-xpad-rework.patch diff --git a/packages/linux/patches/3.17.8/todo/linux-701-linksys_aes2500_brcmfmac.patch b/packages/linux/patches/3.18.2/todo/linux-701-linksys_aes2500_brcmfmac.patch similarity index 100% rename from packages/linux/patches/3.17.8/todo/linux-701-linksys_aes2500_brcmfmac.patch rename to packages/linux/patches/3.18.2/todo/linux-701-linksys_aes2500_brcmfmac.patch diff --git a/projects/Generic/linux/linux.i386.conf b/projects/Generic/linux/linux.i386.conf index b100832a40..0316356316 100644 --- a/projects/Generic/linux/linux.i386.conf +++ b/projects/Generic/linux/linux.i386.conf @@ -1,11 +1,12 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/i386 3.17.2 Kernel Configuration +# Linux/i386 3.18.2 Kernel Configuration # # CONFIG_64BIT is not set CONFIG_X86_32=y CONFIG_X86=y CONFIG_INSTRUCTION_DECODER=y +CONFIG_PERF_EVENTS_INTEL_UNCORE=y CONFIG_OUTPUT_FORMAT="elf32-i386" CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig" CONFIG_LOCKDEP_SUPPORT=y @@ -119,6 +120,7 @@ CONFIG_BSD_PROCESS_ACCT=y # CONFIG_TREE_RCU=y # CONFIG_PREEMPT_RCU is not set +# CONFIG_TASKS_RCU is not set CONFIG_RCU_STALL_COMMON=y CONFIG_RCU_FANOUT=32 CONFIG_RCU_FANOUT_LEAF=16 @@ -132,7 +134,6 @@ CONFIG_IKCONFIG_PROC=y CONFIG_LOG_BUF_SHIFT=16 CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y -CONFIG_ARCH_WANTS_PROT_NUMA_PROT_NONE=y CONFIG_CGROUPS=y # CONFIG_CGROUP_DEBUG is not set # CONFIG_CGROUP_FREEZER is not set @@ -164,6 +165,7 @@ CONFIG_ANON_INODES=y CONFIG_HAVE_UID16=y CONFIG_SYSCTL_EXCEPTION_TRACE=y CONFIG_HAVE_PCSPKR_PLATFORM=y +CONFIG_BPF=y CONFIG_EXPERT=y # CONFIG_UID16 is not set # CONFIG_SGETMASK_SYSCALL is not set @@ -181,8 +183,10 @@ CONFIG_EPOLL=y CONFIG_SIGNALFD=y CONFIG_TIMERFD=y CONFIG_EVENTFD=y +# CONFIG_BPF_SYSCALL is not set CONFIG_SHMEM=y # CONFIG_AIO is not set +CONFIG_ADVISE_SYSCALLS=y CONFIG_PCI_QUIRKS=y # CONFIG_EMBEDDED is not set CONFIG_HAVE_PERF_EVENTS=y @@ -262,6 +266,7 @@ CONFIG_MODULE_UNLOAD=y # CONFIG_MODVERSIONS is not set # CONFIG_MODULE_SRCVERSION_ALL is not set # CONFIG_MODULE_SIG is not set +# CONFIG_MODULE_COMPRESS is not set CONFIG_STOP_MACHINE=y CONFIG_BLOCK=y CONFIG_LBDAF=y @@ -321,10 +326,13 @@ CONFIG_FREEZER=y # CONFIG_ZONE_DMA=y CONFIG_SMP=y +CONFIG_X86_FEATURE_NAMES=y CONFIG_X86_MPPARSE=y # CONFIG_X86_BIGSMP is not set # CONFIG_X86_EXTENDED_PLATFORM is not set CONFIG_X86_INTEL_LPSS=y +CONFIG_IOSF_MBI=m +# CONFIG_IOSF_MBI_DEBUG is not set # CONFIG_X86_32_IRIS is not set CONFIG_SCHED_OMIT_FRAME_POINTER=y # CONFIG_HYPERVISOR_GUEST is not set @@ -432,6 +440,7 @@ CONFIG_MIGRATION=y CONFIG_ZONE_DMA_FLAG=1 CONFIG_BOUNCE=y CONFIG_VIRT_TO_BUS=y +CONFIG_MMU_NOTIFIER=y # CONFIG_KSM is not set CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 CONFIG_TRANSPARENT_HUGEPAGE=y @@ -648,7 +657,6 @@ CONFIG_HAVE_AOUT=y CONFIG_BINFMT_MISC=y CONFIG_COREDUMP=y CONFIG_HAVE_ATOMIC_IOMAP=y -CONFIG_IOSF_MBI=m CONFIG_PMC_ATOM=y CONFIG_NET=y @@ -676,6 +684,8 @@ CONFIG_IP_MROUTE=y # CONFIG_IP_PIMSM_V2 is not set # CONFIG_SYN_COOKIES is not set # CONFIG_NET_UDP_TUNNEL is not set +# CONFIG_NET_FOU is not set +# CONFIG_GENEVE is not set # CONFIG_INET_AH is not set # CONFIG_INET_ESP is not set # CONFIG_INET_IPCOMP is not set @@ -838,7 +848,9 @@ CONFIG_NF_DEFRAG_IPV4=m CONFIG_NF_CONNTRACK_IPV4=m # CONFIG_NF_LOG_ARP is not set # CONFIG_NF_LOG_IPV4 is not set +CONFIG_NF_REJECT_IPV4=m CONFIG_NF_NAT_IPV4=m +CONFIG_NF_NAT_MASQUERADE_IPV4=m # CONFIG_NF_NAT_PPTP is not set # CONFIG_NF_NAT_H323 is not set CONFIG_IP_NF_IPTABLES=m @@ -861,8 +873,10 @@ CONFIG_IP_NF_TARGET_MASQUERADE=m # CONFIG_NF_DEFRAG_IPV6=m CONFIG_NF_CONNTRACK_IPV6=m +CONFIG_NF_REJECT_IPV6=m # CONFIG_NF_LOG_IPV6 is not set CONFIG_NF_NAT_IPV6=m +# CONFIG_NF_NAT_MASQUERADE_IPV6 is not set CONFIG_IP6_NF_IPTABLES=m # CONFIG_IP6_NF_MATCH_AH is not set # CONFIG_IP6_NF_MATCH_EUI64 is not set @@ -1007,6 +1021,7 @@ CONFIG_FIRMWARE_IN_KERNEL=y CONFIG_EXTRA_FIRMWARE="bnx2/bnx2-mips-06-6.2.1.fw bnx2/bnx2-mips-09-6.2.1a.fw bnx2/bnx2-rv2p-06-6.0.15.fw bnx2/bnx2-rv2p-09-6.0.17.fw bnx2/bnx2-rv2p-09ax-6.0.17.fw tigon/tg3.bin tigon/tg3_tso5.bin tigon/tg3_tso.bin rtl_nic/rtl8105e-1.fw rtl_nic/rtl8106e-1.fw rtl_nic/rtl8106e-2.fw rtl_nic/rtl8168d-1.fw rtl_nic/rtl8168d-2.fw rtl_nic/rtl8168e-1.fw rtl_nic/rtl8168e-2.fw rtl_nic/rtl8168e-3.fw rtl_nic/rtl8168f-1.fw rtl_nic/rtl8168f-2.fw rtl_nic/rtl8168g-1.fw rtl_nic/rtl8168g-2.fw rtl_nic/rtl8168g-3.fw rtl_nic/rtl8402-1.fw rtl_nic/rtl8411-1.fw rtl_nic/rtl8411-2.fw radeon/ARUBA_me.bin radeon/ARUBA_pfp.bin radeon/ARUBA_rlc.bin radeon/BARTS_mc.bin radeon/BARTS_me.bin radeon/BARTS_pfp.bin radeon/BARTS_smc.bin radeon/bonaire_ce.bin radeon/BONAIRE_ce.bin radeon/BONAIRE_mc2.bin radeon/bonaire_mc.bin radeon/BONAIRE_mc.bin radeon/bonaire_me.bin radeon/BONAIRE_me.bin radeon/bonaire_mec.bin radeon/BONAIRE_mec.bin radeon/bonaire_pfp.bin radeon/BONAIRE_pfp.bin radeon/bonaire_rlc.bin radeon/BONAIRE_rlc.bin radeon/bonaire_sdma.bin radeon/BONAIRE_sdma.bin radeon/bonaire_smc.bin radeon/BONAIRE_smc.bin radeon/BONAIRE_uvd.bin radeon/BONAIRE_vce.bin radeon/BTC_rlc.bin radeon/CAICOS_mc.bin radeon/CAICOS_me.bin radeon/CAICOS_pfp.bin radeon/CAICOS_smc.bin radeon/CAYMAN_mc.bin radeon/CAYMAN_me.bin radeon/CAYMAN_pfp.bin radeon/CAYMAN_rlc.bin radeon/CAYMAN_smc.bin radeon/CEDAR_me.bin radeon/CEDAR_pfp.bin radeon/CEDAR_rlc.bin radeon/CEDAR_smc.bin radeon/CYPRESS_me.bin radeon/CYPRESS_pfp.bin radeon/CYPRESS_rlc.bin radeon/CYPRESS_smc.bin radeon/CYPRESS_uvd.bin radeon/hainan_ce.bin radeon/HAINAN_ce.bin radeon/HAINAN_mc2.bin radeon/hainan_mc.bin radeon/HAINAN_mc.bin radeon/hainan_me.bin radeon/HAINAN_me.bin radeon/hainan_pfp.bin radeon/HAINAN_pfp.bin radeon/hainan_rlc.bin radeon/HAINAN_rlc.bin radeon/hainan_smc.bin radeon/HAINAN_smc.bin radeon/hawaii_ce.bin radeon/HAWAII_ce.bin radeon/HAWAII_mc2.bin radeon/hawaii_mc.bin radeon/HAWAII_mc.bin radeon/hawaii_me.bin radeon/HAWAII_me.bin radeon/hawaii_mec.bin radeon/HAWAII_mec.bin radeon/hawaii_pfp.bin radeon/HAWAII_pfp.bin radeon/hawaii_rlc.bin radeon/HAWAII_rlc.bin radeon/hawaii_sdma.bin radeon/HAWAII_sdma.bin radeon/hawaii_smc.bin radeon/HAWAII_smc.bin radeon/JUNIPER_me.bin radeon/JUNIPER_pfp.bin radeon/JUNIPER_rlc.bin radeon/JUNIPER_smc.bin radeon/kabini_ce.bin radeon/KABINI_ce.bin radeon/kabini_me.bin radeon/KABINI_me.bin radeon/kabini_mec.bin radeon/KABINI_mec.bin radeon/kabini_pfp.bin radeon/KABINI_pfp.bin radeon/kabini_rlc.bin radeon/KABINI_rlc.bin radeon/kabini_sdma.bin radeon/KABINI_sdma.bin radeon/kaveri_ce.bin radeon/KAVERI_ce.bin radeon/kaveri_me.bin radeon/KAVERI_me.bin radeon/kaveri_mec2.bin radeon/kaveri_mec.bin radeon/KAVERI_mec.bin radeon/kaveri_pfp.bin radeon/KAVERI_pfp.bin radeon/kaveri_rlc.bin radeon/KAVERI_rlc.bin radeon/kaveri_sdma.bin radeon/KAVERI_sdma.bin radeon/mullins_ce.bin radeon/MULLINS_ce.bin radeon/mullins_me.bin radeon/MULLINS_me.bin radeon/mullins_mec.bin radeon/MULLINS_mec.bin radeon/mullins_pfp.bin radeon/MULLINS_pfp.bin radeon/mullins_rlc.bin radeon/MULLINS_rlc.bin radeon/mullins_sdma.bin radeon/MULLINS_sdma.bin radeon/oland_ce.bin radeon/OLAND_ce.bin radeon/OLAND_mc2.bin radeon/oland_mc.bin radeon/OLAND_mc.bin radeon/oland_me.bin radeon/OLAND_me.bin radeon/oland_pfp.bin radeon/OLAND_pfp.bin radeon/oland_rlc.bin radeon/OLAND_rlc.bin radeon/oland_smc.bin radeon/OLAND_smc.bin radeon/PALM_me.bin radeon/PALM_pfp.bin radeon/pitcairn_ce.bin radeon/PITCAIRN_ce.bin radeon/PITCAIRN_mc2.bin radeon/pitcairn_mc.bin radeon/PITCAIRN_mc.bin radeon/pitcairn_me.bin radeon/PITCAIRN_me.bin radeon/pitcairn_pfp.bin radeon/PITCAIRN_pfp.bin radeon/pitcairn_rlc.bin radeon/PITCAIRN_rlc.bin radeon/pitcairn_smc.bin radeon/PITCAIRN_smc.bin radeon/R100_cp.bin radeon/R200_cp.bin radeon/R300_cp.bin radeon/R420_cp.bin radeon/R520_cp.bin radeon/R600_me.bin radeon/R600_pfp.bin radeon/R600_rlc.bin radeon/R600_uvd.bin radeon/R700_rlc.bin radeon/REDWOOD_me.bin radeon/REDWOOD_pfp.bin radeon/REDWOOD_rlc.bin radeon/REDWOOD_smc.bin radeon/RS600_cp.bin radeon/RS690_cp.bin radeon/RS780_me.bin radeon/RS780_pfp.bin radeon/RS780_uvd.bin radeon/RV610_me.bin radeon/RV610_pfp.bin radeon/RV620_me.bin radeon/RV620_pfp.bin radeon/RV630_me.bin radeon/RV630_pfp.bin radeon/RV635_me.bin radeon/RV635_pfp.bin radeon/RV670_me.bin radeon/RV670_pfp.bin radeon/RV710_me.bin radeon/RV710_pfp.bin radeon/RV710_smc.bin radeon/RV710_uvd.bin radeon/RV730_me.bin radeon/RV730_pfp.bin radeon/RV730_smc.bin radeon/RV740_smc.bin radeon/RV770_me.bin radeon/RV770_pfp.bin radeon/RV770_smc.bin radeon/RV770_uvd.bin radeon/SUMO2_me.bin radeon/SUMO2_pfp.bin radeon/SUMO_me.bin radeon/SUMO_pfp.bin radeon/SUMO_rlc.bin radeon/SUMO_uvd.bin radeon/tahiti_ce.bin radeon/TAHITI_ce.bin radeon/TAHITI_mc2.bin radeon/tahiti_mc.bin radeon/TAHITI_mc.bin radeon/tahiti_me.bin radeon/TAHITI_me.bin radeon/tahiti_pfp.bin radeon/TAHITI_pfp.bin radeon/tahiti_rlc.bin radeon/TAHITI_rlc.bin radeon/tahiti_smc.bin radeon/TAHITI_smc.bin radeon/TAHITI_uvd.bin radeon/TURKS_mc.bin radeon/TURKS_me.bin radeon/TURKS_pfp.bin radeon/TURKS_smc.bin radeon/verde_ce.bin radeon/VERDE_ce.bin radeon/VERDE_mc2.bin radeon/verde_mc.bin radeon/VERDE_mc.bin radeon/verde_me.bin radeon/VERDE_me.bin radeon/verde_pfp.bin radeon/VERDE_pfp.bin radeon/verde_rlc.bin radeon/VERDE_rlc.bin radeon/verde_smc.bin radeon/VERDE_smc.bin" CONFIG_EXTRA_FIRMWARE_DIR="firmware" # CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set +# CONFIG_ALLOW_DEV_COREDUMP is not set # CONFIG_DEBUG_DRIVER is not set # CONFIG_DEBUG_DEVRES is not set # CONFIG_SYS_HYPERVISOR is not set @@ -1117,6 +1132,7 @@ CONFIG_ALTERA_STAPL=m # Intel MIC Card Driver # # CONFIG_ECHO is not set +# CONFIG_CXL_BASE is not set CONFIG_HAVE_IDE=y # CONFIG_IDE is not set @@ -1128,6 +1144,7 @@ CONFIG_SCSI_MOD=y CONFIG_SCSI=y CONFIG_SCSI_DMA=y # CONFIG_SCSI_NETLINK is not set +# CONFIG_SCSI_MQ_DEFAULT is not set # CONFIG_SCSI_PROC_FS is not set # @@ -1350,12 +1367,15 @@ CONFIG_TUN=y # CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set # CONFIG_NET_DSA_MV88E6131 is not set # CONFIG_NET_DSA_MV88E6123_61_65 is not set +# CONFIG_NET_DSA_MV88E6171 is not set +# CONFIG_NET_DSA_BCM_SF2 is not set CONFIG_ETHERNET=y CONFIG_MDIO=y CONFIG_NET_VENDOR_3COM=y CONFIG_VORTEX=y # CONFIG_TYPHOON is not set # CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_AGERE is not set # CONFIG_NET_VENDOR_ALTEON is not set # CONFIG_ALTERA_TSE is not set CONFIG_NET_VENDOR_AMD=y @@ -1407,6 +1427,7 @@ CONFIG_IGB_HWMON=y # CONFIG_IXGBEVF is not set # CONFIG_I40E is not set # CONFIG_I40EVF is not set +# CONFIG_FM10K is not set CONFIG_NET_VENDOR_I825XX=y CONFIG_IP1000=y CONFIG_JME=y @@ -1432,6 +1453,7 @@ CONFIG_QLA3XXX=y # CONFIG_QLCNIC is not set # CONFIG_QLGE is not set # CONFIG_NETXEN_NIC is not set +# CONFIG_NET_VENDOR_QUALCOMM is not set CONFIG_NET_VENDOR_REALTEK=y # CONFIG_8139CP is not set CONFIG_8139TOO=y @@ -1486,6 +1508,7 @@ CONFIG_REALTEK_PHY=y # CONFIG_MICREL_PHY is not set # CONFIG_FIXED_PHY is not set # CONFIG_MDIO_BITBANG is not set +# CONFIG_MDIO_BCM_UNIMAC is not set CONFIG_PPP=y CONFIG_PPP_BSDCOMP=m CONFIG_PPP_DEFLATE=m @@ -1560,7 +1583,9 @@ CONFIG_ATH9K=m CONFIG_ATH9K_PCI=y CONFIG_ATH9K_AHB=y # CONFIG_ATH9K_DEBUGFS is not set +# CONFIG_ATH9K_DYNACK is not set # CONFIG_ATH9K_WOW is not set +# CONFIG_ATH9K_CHANNEL_CONTEXT is not set CONFIG_ATH9K_HTC=m # CONFIG_ATH9K_HTC_DEBUGFS is not set CONFIG_CARL9170=m @@ -1634,6 +1659,7 @@ CONFIG_IWLDVM=m CONFIG_IWLMVM=m CONFIG_IWLWIFI_OPMODE_MODULAR=y # CONFIG_IWLWIFI_BCAST_FILTERING is not set +# CONFIG_IWLWIFI_UAPSD is not set # # Debugging Options @@ -1692,6 +1718,8 @@ CONFIG_RTL8192DE=m CONFIG_RTL8723AE=m CONFIG_RTL8723BE=m CONFIG_RTL8188EE=m +CONFIG_RTL8192EE=m +CONFIG_RTL8821AE=m # CONFIG_RTL8192CU is not set CONFIG_RTLWIFI=m CONFIG_RTLWIFI_PCI=m @@ -1821,6 +1849,7 @@ CONFIG_INPUT_UINPUT=y # CONFIG_INPUT_IMS_PCU is not set # CONFIG_INPUT_CMA3000 is not set # CONFIG_INPUT_IDEAPAD_SLIDEBAR is not set +# CONFIG_INPUT_DRV2667_HAPTICS is not set # # Hardware I/O ports @@ -1869,6 +1898,7 @@ CONFIG_SERIAL_8250_NR_UARTS=4 CONFIG_SERIAL_8250_RUNTIME_UARTS=4 # CONFIG_SERIAL_8250_EXTENDED is not set # CONFIG_SERIAL_8250_DW is not set +# CONFIG_SERIAL_8250_FINTEK is not set # # Non-8250 serial port support @@ -1901,6 +1931,7 @@ CONFIG_SERIAL_CORE=y # CONFIG_TCG_TPM is not set # CONFIG_TELCLOCK is not set CONFIG_DEVPORT=y +# CONFIG_XILLYBUS is not set # # I2C support @@ -2168,11 +2199,12 @@ CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set # CONFIG_THERMAL_GOV_FAIR_SHARE is not set CONFIG_THERMAL_GOV_STEP_WISE=y +# CONFIG_THERMAL_GOV_BANG_BANG is not set # CONFIG_THERMAL_GOV_USER_SPACE is not set # CONFIG_THERMAL_EMULATION is not set CONFIG_INTEL_POWERCLAMP=m -# CONFIG_ACPI_INT3403_THERMAL is not set CONFIG_INTEL_SOC_DTS_THERMAL=m +# CONFIG_INT340X_THERMAL is not set # # Texas Instruments thermal drivers @@ -2239,6 +2271,7 @@ CONFIG_LPC_SCH=y # CONFIG_MFD_MAX8925 is not set # CONFIG_MFD_MAX8997 is not set # CONFIG_MFD_MAX8998 is not set +# CONFIG_MFD_MENF21BMC is not set # CONFIG_MFD_VIPERBOARD is not set # CONFIG_MFD_RETU is not set # CONFIG_MFD_PCF50633 is not set @@ -2246,6 +2279,7 @@ CONFIG_LPC_SCH=y CONFIG_MFD_RTSX_PCI=y CONFIG_MFD_RTSX_USB=y # CONFIG_MFD_RC5T583 is not set +# CONFIG_MFD_RN5T618 is not set # CONFIG_MFD_SEC_CORE is not set # CONFIG_MFD_SI476X_CORE is not set # CONFIG_MFD_SM501 is not set @@ -2328,6 +2362,7 @@ CONFIG_IR_XMP_DECODER=m CONFIG_RC_DEVICES=y CONFIG_RC_ATI_REMOTE=m CONFIG_IR_ENE=m +# CONFIG_IR_HIX5HD2 is not set CONFIG_IR_IMON=m CONFIG_IR_MCEUSB=m CONFIG_IR_ITE_CIR=m @@ -2432,6 +2467,7 @@ CONFIG_DVB_USB_DVBSKY=m CONFIG_SMS_USB_DRV=m CONFIG_DVB_B2C2_FLEXCOP_USB=m # CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set +CONFIG_DVB_AS102=m # # Webcam, TV (analog/digital) USB devices @@ -2456,6 +2492,7 @@ CONFIG_MEDIA_PCI_SUPPORT=y # CONFIG_VIDEO_HEXIUM_ORION is not set # CONFIG_VIDEO_MXB is not set # CONFIG_VIDEO_SOLO6X10 is not set +# CONFIG_VIDEO_TW68 is not set # # Media capture/analog/hybrid TV support @@ -2483,6 +2520,7 @@ CONFIG_VIDEO_SAA7164=m # # Media digital TV PCI Adapters # +CONFIG_DVB_AV7110_IR=y CONFIG_DVB_AV7110=m CONFIG_DVB_AV7110_OSD=y CONFIG_DVB_BUDGET_CORE=m @@ -2495,6 +2533,7 @@ CONFIG_DVB_B2C2_FLEXCOP_PCI=m # CONFIG_DVB_PLUTO2 is not set CONFIG_DVB_DM1105=m # CONFIG_DVB_PT1 is not set +# CONFIG_DVB_PT3 is not set CONFIG_MANTIS_CORE=m CONFIG_DVB_MANTIS=m # CONFIG_DVB_HOPPER is not set @@ -2704,6 +2743,7 @@ CONFIG_DVB_CXD2820R=m CONFIG_DVB_RTL2830=m CONFIG_DVB_RTL2832=m CONFIG_DVB_SI2168=m +CONFIG_DVB_AS102_FE=m # # DVB-C (cable) frontends @@ -2752,7 +2792,6 @@ CONFIG_DVB_ISL6405=m CONFIG_DVB_ISL6421=m CONFIG_DVB_ISL6423=m CONFIG_DVB_A8293=m -CONFIG_DVB_SP2=m CONFIG_DVB_LGS8GXX=m CONFIG_DVB_ATBM8830=m CONFIG_DVB_TDA665x=m @@ -2828,6 +2867,7 @@ CONFIG_DRM_I915_FBDEV=y # CONFIG_FB=y # CONFIG_FIRMWARE_EDID is not set +CONFIG_FB_CMDLINE=y # CONFIG_FB_DDC is not set # CONFIG_FB_BOOT_VESA_SUPPORT is not set CONFIG_FB_CFB_FILLRECT=y @@ -3120,9 +3160,9 @@ CONFIG_HID_MONTEREY=y # CONFIG_HID_MULTITOUCH is not set # CONFIG_HID_NTRIG is not set CONFIG_HID_ORTEK=y -CONFIG_HID_OUYA=y CONFIG_HID_PANTHERLORD=y CONFIG_PANTHERLORD_FF=y +CONFIG_HID_PENMOUNT=y CONFIG_HID_PETALYNX=y # CONFIG_HID_PICOLCD is not set # CONFIG_HID_PRIMAX is not set @@ -3184,6 +3224,7 @@ CONFIG_USB_DEFAULT_PERSIST=y # # CONFIG_USB_C67X00_HCD is not set CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_PCI=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_ROOT_HUB_TT=y CONFIG_USB_EHCI_TT_NEWSCHED=y @@ -3300,7 +3341,6 @@ CONFIG_USB_SERIAL_PL2303=m # CONFIG_USB_SERIAL_OPTICON is not set # CONFIG_USB_SERIAL_XSENS_MT is not set # CONFIG_USB_SERIAL_WISHBONE is not set -# CONFIG_USB_SERIAL_ZTE is not set # CONFIG_USB_SERIAL_SSU100 is not set # CONFIG_USB_SERIAL_QT2 is not set # CONFIG_USB_SERIAL_DEBUG is not set @@ -3338,10 +3378,9 @@ CONFIG_USB_SERIAL_PL2303=m # # CONFIG_USB_PHY is not set # CONFIG_NOP_USB_XCEIV is not set -# CONFIG_SAMSUNG_USB2PHY is not set -# CONFIG_SAMSUNG_USB3PHY is not set # CONFIG_USB_ISP1301 is not set # CONFIG_USB_GADGET is not set +# CONFIG_USB_LED_TRIG is not set # CONFIG_UWB is not set CONFIG_MMC=y # CONFIG_MMC_DEBUG is not set @@ -3494,7 +3533,6 @@ CONFIG_RTC_DRV_CMOS=y # CONFIG_RTC_DRV_DS1553 is not set # CONFIG_RTC_DRV_DS1742 is not set # CONFIG_RTC_DRV_DS2404 is not set -CONFIG_RTC_DRV_EFI=y # CONFIG_RTC_DRV_STK17TA8 is not set # CONFIG_RTC_DRV_M48T86 is not set # CONFIG_RTC_DRV_M48T35 is not set @@ -3536,7 +3574,6 @@ CONFIG_UIO=y # Microsoft Hyper-V guest support # CONFIG_STAGING=y -CONFIG_ET131X=y # CONFIG_SLICOSS is not set # CONFIG_PRISM2_USB is not set # CONFIG_COMEDI is not set @@ -3544,10 +3581,7 @@ CONFIG_RTL8192U=m # CONFIG_RTLLIB is not set CONFIG_R8712U=m # CONFIG_R8188EU is not set -CONFIG_R8192EE=m -CONFIG_R8821AE=m CONFIG_RTS5208=y -# CONFIG_RTS5208_DEBUG is not set # CONFIG_LINE6_USB is not set # CONFIG_VT6655 is not set CONFIG_VT6656=m @@ -3561,7 +3595,6 @@ CONFIG_VT6656=m # CONFIG_SPEAKUP is not set # CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set CONFIG_STAGING_MEDIA=y -CONFIG_DVB_AS102=m CONFIG_DVB_CXD2099=m # CONFIG_VIDEO_DT3155 is not set # CONFIG_VIDEO_TCM825X is not set @@ -3585,7 +3618,6 @@ CONFIG_LIRC_XBOX=m # CONFIG_LTE_GDM724X is not set # CONFIG_FIREWIRE_SERIAL is not set # CONFIG_LUSTRE_FS is not set -# CONFIG_XILLYBUS is not set # CONFIG_DGNC is not set # CONFIG_DGAP is not set # CONFIG_GS_FPGABOOT is not set @@ -3595,6 +3627,7 @@ CONFIG_LIRC_XBOX=m # # SOC (System On Chip) specific Drivers # +# CONFIG_SOC_TI is not set CONFIG_CLKDEV_LOOKUP=y CONFIG_HAVE_CLK_PREPARE=y CONFIG_COMMON_CLK=y @@ -3603,6 +3636,7 @@ CONFIG_COMMON_CLK=y # Common Clock Framework # # CONFIG_COMMON_CLK_SI5351 is not set +# CONFIG_COMMON_CLK_PXA is not set # # Hardware Spinlock drivers @@ -3614,6 +3648,7 @@ CONFIG_COMMON_CLK=y CONFIG_CLKSRC_I8253=y CONFIG_CLKEVT_I8253=y CONFIG_CLKBLD_I8253=y +# CONFIG_ATMEL_PIT is not set # CONFIG_SH_TIMER_CMT is not set # CONFIG_SH_TIMER_MTU2 is not set # CONFIG_SH_TIMER_TMU is not set @@ -3629,6 +3664,10 @@ CONFIG_CLKBLD_I8253=y # # Rpmsg drivers # + +# +# SOC (System On Chip) specific Drivers +# # CONFIG_PM_DEVFREQ is not set # CONFIG_EXTCON is not set # CONFIG_MEMORY is not set @@ -3720,6 +3759,7 @@ CONFIG_FANOTIFY=y CONFIG_AUTOFS4_FS=y CONFIG_FUSE_FS=m # CONFIG_CUSE is not set +# CONFIG_OVERLAY_FS is not set # # Caches @@ -3816,6 +3856,7 @@ CONFIG_ROOT_NFS=y # CONFIG_NFS_USE_LEGACY_DNS is not set CONFIG_NFS_USE_KERNEL_DNS=y # CONFIG_NFSD is not set +CONFIG_GRACE_PERIOD=y CONFIG_LOCKD=y CONFIG_LOCKD_V4=y CONFIG_NFS_COMMON=y @@ -3960,6 +4001,7 @@ CONFIG_PANIC_ON_OOPS_VALUE=0 CONFIG_PANIC_TIMEOUT=0 # CONFIG_SCHED_DEBUG is not set # CONFIG_SCHEDSTATS is not set +# CONFIG_SCHED_STACK_END_CHECK is not set # CONFIG_TIMER_STATS is not set # @@ -4026,7 +4068,7 @@ CONFIG_TRACING_SUPPORT=y # CONFIG_TEST_RHASHTABLE is not set # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set # CONFIG_DMA_API_DEBUG is not set -# CONFIG_TEST_MODULE is not set +# CONFIG_TEST_LKM is not set # CONFIG_TEST_USER_COPY is not set # CONFIG_TEST_BPF is not set # CONFIG_TEST_FIRMWARE is not set @@ -4100,6 +4142,7 @@ CONFIG_CRYPTO_MANAGER2=y # CONFIG_CRYPTO_PCRYPT is not set CONFIG_CRYPTO_WORKQUEUE=y # CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_MCRYPTD is not set # CONFIG_CRYPTO_AUTHENC is not set # CONFIG_CRYPTO_TEST is not set diff --git a/projects/Generic/linux/linux.x86_64.conf b/projects/Generic/linux/linux.x86_64.conf index e9520ccc12..a6d20055b6 100644 --- a/projects/Generic/linux/linux.x86_64.conf +++ b/projects/Generic/linux/linux.x86_64.conf @@ -1,11 +1,12 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86_64 3.17.7 Kernel Configuration +# Linux/x86_64 3.18.2 Kernel Configuration # CONFIG_64BIT=y CONFIG_X86_64=y CONFIG_X86=y CONFIG_INSTRUCTION_DECODER=y +CONFIG_PERF_EVENTS_INTEL_UNCORE=y CONFIG_OUTPUT_FORMAT="elf64-x86-64" CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig" CONFIG_LOCKDEP_SUPPORT=y @@ -122,6 +123,7 @@ CONFIG_BSD_PROCESS_ACCT=y # CONFIG_TREE_RCU=y # CONFIG_PREEMPT_RCU is not set +# CONFIG_TASKS_RCU is not set CONFIG_RCU_STALL_COMMON=y CONFIG_CONTEXT_TRACKING=y CONFIG_RCU_USER_QS=y @@ -143,8 +145,6 @@ CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y CONFIG_ARCH_SUPPORTS_INT128=y -CONFIG_ARCH_WANTS_PROT_NUMA_PROT_NONE=y -CONFIG_ARCH_USES_NUMA_PROT_NONE=y CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y CONFIG_NUMA_BALANCING=y CONFIG_CGROUPS=y @@ -178,6 +178,7 @@ CONFIG_ANON_INODES=y CONFIG_HAVE_UID16=y CONFIG_SYSCTL_EXCEPTION_TRACE=y CONFIG_HAVE_PCSPKR_PLATFORM=y +CONFIG_BPF=y CONFIG_EXPERT=y # CONFIG_UID16 is not set # CONFIG_SGETMASK_SYSCALL is not set @@ -195,8 +196,10 @@ CONFIG_EPOLL=y CONFIG_SIGNALFD=y CONFIG_TIMERFD=y CONFIG_EVENTFD=y +# CONFIG_BPF_SYSCALL is not set CONFIG_SHMEM=y # CONFIG_AIO is not set +CONFIG_ADVISE_SYSCALLS=y CONFIG_PCI_QUIRKS=y # CONFIG_EMBEDDED is not set CONFIG_HAVE_PERF_EVENTS=y @@ -280,6 +283,7 @@ CONFIG_MODULE_UNLOAD=y # CONFIG_MODVERSIONS is not set # CONFIG_MODULE_SRCVERSION_ALL is not set # CONFIG_MODULE_SIG is not set +# CONFIG_MODULE_COMPRESS is not set CONFIG_STOP_MACHINE=y CONFIG_BLOCK=y CONFIG_BLK_DEV_BSG=y @@ -339,9 +343,12 @@ CONFIG_FREEZER=y # CONFIG_ZONE_DMA=y CONFIG_SMP=y +CONFIG_X86_FEATURE_NAMES=y CONFIG_X86_MPPARSE=y # CONFIG_X86_EXTENDED_PLATFORM is not set CONFIG_X86_INTEL_LPSS=y +CONFIG_IOSF_MBI=m +# CONFIG_IOSF_MBI_DEBUG is not set CONFIG_SCHED_OMIT_FRAME_POINTER=y # CONFIG_HYPERVISOR_GUEST is not set CONFIG_NO_BOOTMEM=y @@ -430,6 +437,7 @@ CONFIG_PHYS_ADDR_T_64BIT=y CONFIG_ZONE_DMA_FLAG=1 CONFIG_BOUNCE=y CONFIG_VIRT_TO_BUS=y +CONFIG_MMU_NOTIFIER=y # CONFIG_KSM is not set CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 CONFIG_TRANSPARENT_HUGEPAGE=y @@ -455,7 +463,7 @@ CONFIG_ARCH_RANDOM=y # CONFIG_X86_SMAP is not set CONFIG_EFI=y CONFIG_EFI_STUB=y -CONFIG_EFI_MIXED=y +# CONFIG_EFI_MIXED is not set CONFIG_SECCOMP=y # CONFIG_HZ_100 is not set # CONFIG_HZ_250 is not set @@ -637,7 +645,6 @@ CONFIG_COMPAT_FOR_U64_ALIGNMENT=y CONFIG_SYSVIPC_COMPAT=y CONFIG_KEYS_COMPAT=y CONFIG_X86_DEV_DMA_OPS=y -CONFIG_IOSF_MBI=m CONFIG_PMC_ATOM=y CONFIG_NET=y CONFIG_COMPAT_NETLINK_MESSAGES=y @@ -666,6 +673,8 @@ CONFIG_IP_MROUTE=y # CONFIG_IP_PIMSM_V2 is not set # CONFIG_SYN_COOKIES is not set # CONFIG_NET_UDP_TUNNEL is not set +# CONFIG_NET_FOU is not set +# CONFIG_GENEVE is not set # CONFIG_INET_AH is not set # CONFIG_INET_ESP is not set # CONFIG_INET_IPCOMP is not set @@ -828,7 +837,9 @@ CONFIG_NF_DEFRAG_IPV4=m CONFIG_NF_CONNTRACK_IPV4=m # CONFIG_NF_LOG_ARP is not set # CONFIG_NF_LOG_IPV4 is not set +CONFIG_NF_REJECT_IPV4=m CONFIG_NF_NAT_IPV4=m +CONFIG_NF_NAT_MASQUERADE_IPV4=m # CONFIG_NF_NAT_PPTP is not set # CONFIG_NF_NAT_H323 is not set CONFIG_IP_NF_IPTABLES=m @@ -851,8 +862,10 @@ CONFIG_IP_NF_TARGET_MASQUERADE=m # CONFIG_NF_DEFRAG_IPV6=m CONFIG_NF_CONNTRACK_IPV6=m +CONFIG_NF_REJECT_IPV6=m # CONFIG_NF_LOG_IPV6 is not set CONFIG_NF_NAT_IPV6=m +# CONFIG_NF_NAT_MASQUERADE_IPV6 is not set CONFIG_IP6_NF_IPTABLES=m # CONFIG_IP6_NF_MATCH_AH is not set # CONFIG_IP6_NF_MATCH_EUI64 is not set @@ -999,6 +1012,7 @@ CONFIG_FIRMWARE_IN_KERNEL=y CONFIG_EXTRA_FIRMWARE="bnx2/bnx2-mips-06-6.2.1.fw bnx2/bnx2-mips-09-6.2.1a.fw bnx2/bnx2-rv2p-06-6.0.15.fw bnx2/bnx2-rv2p-09-6.0.17.fw bnx2/bnx2-rv2p-09ax-6.0.17.fw tigon/tg3.bin tigon/tg3_tso5.bin tigon/tg3_tso.bin rtl_nic/rtl8105e-1.fw rtl_nic/rtl8106e-1.fw rtl_nic/rtl8106e-2.fw rtl_nic/rtl8168d-1.fw rtl_nic/rtl8168d-2.fw rtl_nic/rtl8168e-1.fw rtl_nic/rtl8168e-2.fw rtl_nic/rtl8168e-3.fw rtl_nic/rtl8168f-1.fw rtl_nic/rtl8168f-2.fw rtl_nic/rtl8168g-1.fw rtl_nic/rtl8168g-2.fw rtl_nic/rtl8168g-3.fw rtl_nic/rtl8402-1.fw rtl_nic/rtl8411-1.fw rtl_nic/rtl8411-2.fw radeon/ARUBA_me.bin radeon/ARUBA_pfp.bin radeon/ARUBA_rlc.bin radeon/BARTS_mc.bin radeon/BARTS_me.bin radeon/BARTS_pfp.bin radeon/BARTS_smc.bin radeon/bonaire_ce.bin radeon/BONAIRE_ce.bin radeon/BONAIRE_mc2.bin radeon/bonaire_mc.bin radeon/BONAIRE_mc.bin radeon/bonaire_me.bin radeon/BONAIRE_me.bin radeon/bonaire_mec.bin radeon/BONAIRE_mec.bin radeon/bonaire_pfp.bin radeon/BONAIRE_pfp.bin radeon/bonaire_rlc.bin radeon/BONAIRE_rlc.bin radeon/bonaire_sdma.bin radeon/BONAIRE_sdma.bin radeon/bonaire_smc.bin radeon/BONAIRE_smc.bin radeon/BONAIRE_uvd.bin radeon/BONAIRE_vce.bin radeon/BTC_rlc.bin radeon/CAICOS_mc.bin radeon/CAICOS_me.bin radeon/CAICOS_pfp.bin radeon/CAICOS_smc.bin radeon/CAYMAN_mc.bin radeon/CAYMAN_me.bin radeon/CAYMAN_pfp.bin radeon/CAYMAN_rlc.bin radeon/CAYMAN_smc.bin radeon/CEDAR_me.bin radeon/CEDAR_pfp.bin radeon/CEDAR_rlc.bin radeon/CEDAR_smc.bin radeon/CYPRESS_me.bin radeon/CYPRESS_pfp.bin radeon/CYPRESS_rlc.bin radeon/CYPRESS_smc.bin radeon/CYPRESS_uvd.bin radeon/hainan_ce.bin radeon/HAINAN_ce.bin radeon/HAINAN_mc2.bin radeon/hainan_mc.bin radeon/HAINAN_mc.bin radeon/hainan_me.bin radeon/HAINAN_me.bin radeon/hainan_pfp.bin radeon/HAINAN_pfp.bin radeon/hainan_rlc.bin radeon/HAINAN_rlc.bin radeon/hainan_smc.bin radeon/HAINAN_smc.bin radeon/hawaii_ce.bin radeon/HAWAII_ce.bin radeon/HAWAII_mc2.bin radeon/hawaii_mc.bin radeon/HAWAII_mc.bin radeon/hawaii_me.bin radeon/HAWAII_me.bin radeon/hawaii_mec.bin radeon/HAWAII_mec.bin radeon/hawaii_pfp.bin radeon/HAWAII_pfp.bin radeon/hawaii_rlc.bin radeon/HAWAII_rlc.bin radeon/hawaii_sdma.bin radeon/HAWAII_sdma.bin radeon/hawaii_smc.bin radeon/HAWAII_smc.bin radeon/JUNIPER_me.bin radeon/JUNIPER_pfp.bin radeon/JUNIPER_rlc.bin radeon/JUNIPER_smc.bin radeon/kabini_ce.bin radeon/KABINI_ce.bin radeon/kabini_me.bin radeon/KABINI_me.bin radeon/kabini_mec.bin radeon/KABINI_mec.bin radeon/kabini_pfp.bin radeon/KABINI_pfp.bin radeon/kabini_rlc.bin radeon/KABINI_rlc.bin radeon/kabini_sdma.bin radeon/KABINI_sdma.bin radeon/kaveri_ce.bin radeon/KAVERI_ce.bin radeon/kaveri_me.bin radeon/KAVERI_me.bin radeon/kaveri_mec2.bin radeon/kaveri_mec.bin radeon/KAVERI_mec.bin radeon/kaveri_pfp.bin radeon/KAVERI_pfp.bin radeon/kaveri_rlc.bin radeon/KAVERI_rlc.bin radeon/kaveri_sdma.bin radeon/KAVERI_sdma.bin radeon/mullins_ce.bin radeon/MULLINS_ce.bin radeon/mullins_me.bin radeon/MULLINS_me.bin radeon/mullins_mec.bin radeon/MULLINS_mec.bin radeon/mullins_pfp.bin radeon/MULLINS_pfp.bin radeon/mullins_rlc.bin radeon/MULLINS_rlc.bin radeon/mullins_sdma.bin radeon/MULLINS_sdma.bin radeon/oland_ce.bin radeon/OLAND_ce.bin radeon/OLAND_mc2.bin radeon/oland_mc.bin radeon/OLAND_mc.bin radeon/oland_me.bin radeon/OLAND_me.bin radeon/oland_pfp.bin radeon/OLAND_pfp.bin radeon/oland_rlc.bin radeon/OLAND_rlc.bin radeon/oland_smc.bin radeon/OLAND_smc.bin radeon/PALM_me.bin radeon/PALM_pfp.bin radeon/pitcairn_ce.bin radeon/PITCAIRN_ce.bin radeon/PITCAIRN_mc2.bin radeon/pitcairn_mc.bin radeon/PITCAIRN_mc.bin radeon/pitcairn_me.bin radeon/PITCAIRN_me.bin radeon/pitcairn_pfp.bin radeon/PITCAIRN_pfp.bin radeon/pitcairn_rlc.bin radeon/PITCAIRN_rlc.bin radeon/pitcairn_smc.bin radeon/PITCAIRN_smc.bin radeon/R100_cp.bin radeon/R200_cp.bin radeon/R300_cp.bin radeon/R420_cp.bin radeon/R520_cp.bin radeon/R600_me.bin radeon/R600_pfp.bin radeon/R600_rlc.bin radeon/R600_uvd.bin radeon/R700_rlc.bin radeon/REDWOOD_me.bin radeon/REDWOOD_pfp.bin radeon/REDWOOD_rlc.bin radeon/REDWOOD_smc.bin radeon/RS600_cp.bin radeon/RS690_cp.bin radeon/RS780_me.bin radeon/RS780_pfp.bin radeon/RS780_uvd.bin radeon/RV610_me.bin radeon/RV610_pfp.bin radeon/RV620_me.bin radeon/RV620_pfp.bin radeon/RV630_me.bin radeon/RV630_pfp.bin radeon/RV635_me.bin radeon/RV635_pfp.bin radeon/RV670_me.bin radeon/RV670_pfp.bin radeon/RV710_me.bin radeon/RV710_pfp.bin radeon/RV710_smc.bin radeon/RV710_uvd.bin radeon/RV730_me.bin radeon/RV730_pfp.bin radeon/RV730_smc.bin radeon/RV740_smc.bin radeon/RV770_me.bin radeon/RV770_pfp.bin radeon/RV770_smc.bin radeon/RV770_uvd.bin radeon/SUMO2_me.bin radeon/SUMO2_pfp.bin radeon/SUMO_me.bin radeon/SUMO_pfp.bin radeon/SUMO_rlc.bin radeon/SUMO_uvd.bin radeon/tahiti_ce.bin radeon/TAHITI_ce.bin radeon/TAHITI_mc2.bin radeon/tahiti_mc.bin radeon/TAHITI_mc.bin radeon/tahiti_me.bin radeon/TAHITI_me.bin radeon/tahiti_pfp.bin radeon/TAHITI_pfp.bin radeon/tahiti_rlc.bin radeon/TAHITI_rlc.bin radeon/tahiti_smc.bin radeon/TAHITI_smc.bin radeon/TAHITI_uvd.bin radeon/TURKS_mc.bin radeon/TURKS_me.bin radeon/TURKS_pfp.bin radeon/TURKS_smc.bin radeon/verde_ce.bin radeon/VERDE_ce.bin radeon/VERDE_mc2.bin radeon/verde_mc.bin radeon/VERDE_mc.bin radeon/verde_me.bin radeon/VERDE_me.bin radeon/verde_pfp.bin radeon/VERDE_pfp.bin radeon/verde_rlc.bin radeon/VERDE_rlc.bin radeon/verde_smc.bin radeon/VERDE_smc.bin" CONFIG_EXTRA_FIRMWARE_DIR="firmware" # CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set +# CONFIG_ALLOW_DEV_COREDUMP is not set # CONFIG_DEBUG_DRIVER is not set # CONFIG_DEBUG_DEVRES is not set # CONFIG_SYS_HYPERVISOR is not set @@ -1111,6 +1125,7 @@ CONFIG_ALTERA_STAPL=m # # CONFIG_GENWQE is not set # CONFIG_ECHO is not set +# CONFIG_CXL_BASE is not set CONFIG_HAVE_IDE=y # CONFIG_IDE is not set @@ -1122,6 +1137,7 @@ CONFIG_SCSI_MOD=y CONFIG_SCSI=y CONFIG_SCSI_DMA=y # CONFIG_SCSI_NETLINK is not set +# CONFIG_SCSI_MQ_DEFAULT is not set # CONFIG_SCSI_PROC_FS is not set # @@ -1338,12 +1354,15 @@ CONFIG_TUN=y # CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set # CONFIG_NET_DSA_MV88E6131 is not set # CONFIG_NET_DSA_MV88E6123_61_65 is not set +# CONFIG_NET_DSA_MV88E6171 is not set +# CONFIG_NET_DSA_BCM_SF2 is not set CONFIG_ETHERNET=y CONFIG_MDIO=y CONFIG_NET_VENDOR_3COM=y CONFIG_VORTEX=y # CONFIG_TYPHOON is not set # CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_AGERE is not set # CONFIG_NET_VENDOR_ALTEON is not set # CONFIG_ALTERA_TSE is not set CONFIG_NET_VENDOR_AMD=y @@ -1395,6 +1414,7 @@ CONFIG_IGB_HWMON=y # CONFIG_IXGBEVF is not set # CONFIG_I40E is not set # CONFIG_I40EVF is not set +# CONFIG_FM10K is not set CONFIG_NET_VENDOR_I825XX=y CONFIG_IP1000=y CONFIG_JME=y @@ -1420,6 +1440,7 @@ CONFIG_QLA3XXX=y # CONFIG_QLCNIC is not set # CONFIG_QLGE is not set # CONFIG_NETXEN_NIC is not set +# CONFIG_NET_VENDOR_QUALCOMM is not set CONFIG_NET_VENDOR_REALTEK=y # CONFIG_8139CP is not set CONFIG_8139TOO=y @@ -1474,6 +1495,7 @@ CONFIG_REALTEK_PHY=y # CONFIG_MICREL_PHY is not set # CONFIG_FIXED_PHY is not set # CONFIG_MDIO_BITBANG is not set +# CONFIG_MDIO_BCM_UNIMAC is not set CONFIG_PPP=y CONFIG_PPP_BSDCOMP=m CONFIG_PPP_DEFLATE=m @@ -1548,7 +1570,9 @@ CONFIG_ATH9K=m CONFIG_ATH9K_PCI=y CONFIG_ATH9K_AHB=y # CONFIG_ATH9K_DEBUGFS is not set +# CONFIG_ATH9K_DYNACK is not set # CONFIG_ATH9K_WOW is not set +# CONFIG_ATH9K_CHANNEL_CONTEXT is not set CONFIG_ATH9K_HTC=m # CONFIG_ATH9K_HTC_DEBUGFS is not set CONFIG_CARL9170=m @@ -1622,6 +1646,7 @@ CONFIG_IWLDVM=m CONFIG_IWLMVM=m CONFIG_IWLWIFI_OPMODE_MODULAR=y # CONFIG_IWLWIFI_BCAST_FILTERING is not set +# CONFIG_IWLWIFI_UAPSD is not set # # Debugging Options @@ -1680,6 +1705,8 @@ CONFIG_RTL8192DE=m CONFIG_RTL8723AE=m CONFIG_RTL8723BE=m CONFIG_RTL8188EE=m +CONFIG_RTL8192EE=m +CONFIG_RTL8821AE=m # CONFIG_RTL8192CU is not set CONFIG_RTLWIFI=m CONFIG_RTLWIFI_PCI=m @@ -1808,6 +1835,7 @@ CONFIG_INPUT_UINPUT=y # CONFIG_INPUT_IMS_PCU is not set # CONFIG_INPUT_CMA3000 is not set # CONFIG_INPUT_IDEAPAD_SLIDEBAR is not set +# CONFIG_INPUT_DRV2667_HAPTICS is not set # # Hardware I/O ports @@ -1856,6 +1884,7 @@ CONFIG_SERIAL_8250_NR_UARTS=4 CONFIG_SERIAL_8250_RUNTIME_UARTS=4 # CONFIG_SERIAL_8250_EXTENDED is not set # CONFIG_SERIAL_8250_DW is not set +# CONFIG_SERIAL_8250_FINTEK is not set # # Non-8250 serial port support @@ -1883,6 +1912,7 @@ CONFIG_SERIAL_CORE=y # CONFIG_TCG_TPM is not set # CONFIG_TELCLOCK is not set CONFIG_DEVPORT=y +# CONFIG_XILLYBUS is not set # # I2C support @@ -2147,11 +2177,12 @@ CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set # CONFIG_THERMAL_GOV_FAIR_SHARE is not set CONFIG_THERMAL_GOV_STEP_WISE=y +# CONFIG_THERMAL_GOV_BANG_BANG is not set # CONFIG_THERMAL_GOV_USER_SPACE is not set # CONFIG_THERMAL_EMULATION is not set CONFIG_INTEL_POWERCLAMP=m -# CONFIG_ACPI_INT3403_THERMAL is not set CONFIG_INTEL_SOC_DTS_THERMAL=m +# CONFIG_INT340X_THERMAL is not set # # Texas Instruments thermal drivers @@ -2217,6 +2248,7 @@ CONFIG_LPC_SCH=y # CONFIG_MFD_MAX8925 is not set # CONFIG_MFD_MAX8997 is not set # CONFIG_MFD_MAX8998 is not set +# CONFIG_MFD_MENF21BMC is not set # CONFIG_MFD_VIPERBOARD is not set # CONFIG_MFD_RETU is not set # CONFIG_MFD_PCF50633 is not set @@ -2224,6 +2256,7 @@ CONFIG_LPC_SCH=y CONFIG_MFD_RTSX_PCI=y CONFIG_MFD_RTSX_USB=y # CONFIG_MFD_RC5T583 is not set +# CONFIG_MFD_RN5T618 is not set # CONFIG_MFD_SEC_CORE is not set # CONFIG_MFD_SI476X_CORE is not set # CONFIG_MFD_SM501 is not set @@ -2306,6 +2339,7 @@ CONFIG_IR_XMP_DECODER=m CONFIG_RC_DEVICES=y CONFIG_RC_ATI_REMOTE=m CONFIG_IR_ENE=m +# CONFIG_IR_HIX5HD2 is not set CONFIG_IR_IMON=m CONFIG_IR_MCEUSB=m CONFIG_IR_ITE_CIR=m @@ -2410,6 +2444,7 @@ CONFIG_DVB_USB_DVBSKY=m CONFIG_SMS_USB_DRV=m CONFIG_DVB_B2C2_FLEXCOP_USB=m # CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set +CONFIG_DVB_AS102=m # # Webcam, TV (analog/digital) USB devices @@ -2434,6 +2469,7 @@ CONFIG_MEDIA_PCI_SUPPORT=y # CONFIG_VIDEO_HEXIUM_ORION is not set # CONFIG_VIDEO_MXB is not set # CONFIG_VIDEO_SOLO6X10 is not set +# CONFIG_VIDEO_TW68 is not set # # Media capture/analog/hybrid TV support @@ -2461,6 +2497,7 @@ CONFIG_VIDEO_SAA7164=m # # Media digital TV PCI Adapters # +CONFIG_DVB_AV7110_IR=y CONFIG_DVB_AV7110=m CONFIG_DVB_AV7110_OSD=y CONFIG_DVB_BUDGET_CORE=m @@ -2473,6 +2510,7 @@ CONFIG_DVB_B2C2_FLEXCOP_PCI=m # CONFIG_DVB_PLUTO2 is not set CONFIG_DVB_DM1105=m # CONFIG_DVB_PT1 is not set +# CONFIG_DVB_PT3 is not set CONFIG_MANTIS_CORE=m CONFIG_DVB_MANTIS=m # CONFIG_DVB_HOPPER is not set @@ -2682,6 +2720,7 @@ CONFIG_DVB_CXD2820R=m CONFIG_DVB_RTL2830=m CONFIG_DVB_RTL2832=m CONFIG_DVB_SI2168=m +CONFIG_DVB_AS102_FE=m # # DVB-C (cable) frontends @@ -2730,7 +2769,6 @@ CONFIG_DVB_ISL6405=m CONFIG_DVB_ISL6421=m CONFIG_DVB_ISL6423=m CONFIG_DVB_A8293=m -CONFIG_DVB_SP2=m CONFIG_DVB_LGS8GXX=m CONFIG_DVB_ATBM8830=m CONFIG_DVB_TDA665x=m @@ -2800,6 +2838,7 @@ CONFIG_DRM_I915_FBDEV=y # CONFIG_FB=y # CONFIG_FIRMWARE_EDID is not set +CONFIG_FB_CMDLINE=y # CONFIG_FB_DDC is not set # CONFIG_FB_BOOT_VESA_SUPPORT is not set CONFIG_FB_CFB_FILLRECT=y @@ -3087,9 +3126,9 @@ CONFIG_HID_MONTEREY=y # CONFIG_HID_MULTITOUCH is not set # CONFIG_HID_NTRIG is not set CONFIG_HID_ORTEK=y -CONFIG_HID_OUYA=y CONFIG_HID_PANTHERLORD=y CONFIG_PANTHERLORD_FF=y +CONFIG_HID_PENMOUNT=y CONFIG_HID_PETALYNX=y # CONFIG_HID_PICOLCD is not set # CONFIG_HID_PRIMAX is not set @@ -3151,6 +3190,7 @@ CONFIG_USB_DEFAULT_PERSIST=y # # CONFIG_USB_C67X00_HCD is not set CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_PCI=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_ROOT_HUB_TT=y CONFIG_USB_EHCI_TT_NEWSCHED=y @@ -3267,7 +3307,6 @@ CONFIG_USB_SERIAL_PL2303=m # CONFIG_USB_SERIAL_OPTICON is not set # CONFIG_USB_SERIAL_XSENS_MT is not set # CONFIG_USB_SERIAL_WISHBONE is not set -# CONFIG_USB_SERIAL_ZTE is not set # CONFIG_USB_SERIAL_SSU100 is not set # CONFIG_USB_SERIAL_QT2 is not set # CONFIG_USB_SERIAL_DEBUG is not set @@ -3305,10 +3344,9 @@ CONFIG_USB_SERIAL_PL2303=m # # CONFIG_USB_PHY is not set # CONFIG_NOP_USB_XCEIV is not set -# CONFIG_SAMSUNG_USB2PHY is not set -# CONFIG_SAMSUNG_USB3PHY is not set # CONFIG_USB_ISP1301 is not set # CONFIG_USB_GADGET is not set +# CONFIG_USB_LED_TRIG is not set # CONFIG_UWB is not set CONFIG_MMC=y # CONFIG_MMC_DEBUG is not set @@ -3501,7 +3539,6 @@ CONFIG_UIO=y # Microsoft Hyper-V guest support # CONFIG_STAGING=y -CONFIG_ET131X=y # CONFIG_SLICOSS is not set # CONFIG_PRISM2_USB is not set # CONFIG_COMEDI is not set @@ -3509,10 +3546,7 @@ CONFIG_RTL8192U=m # CONFIG_RTLLIB is not set CONFIG_R8712U=m # CONFIG_R8188EU is not set -CONFIG_R8192EE=m -CONFIG_R8821AE=m CONFIG_RTS5208=y -# CONFIG_RTS5208_DEBUG is not set # CONFIG_LINE6_USB is not set # CONFIG_VT6655 is not set CONFIG_VT6656=m @@ -3526,7 +3560,6 @@ CONFIG_VT6656=m # CONFIG_SPEAKUP is not set # CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set CONFIG_STAGING_MEDIA=y -CONFIG_DVB_AS102=m CONFIG_DVB_CXD2099=m # CONFIG_VIDEO_DT3155 is not set # CONFIG_VIDEO_TCM825X is not set @@ -3550,7 +3583,6 @@ CONFIG_LIRC_XBOX=m # CONFIG_LTE_GDM724X is not set # CONFIG_FIREWIRE_SERIAL is not set # CONFIG_LUSTRE_FS is not set -# CONFIG_XILLYBUS is not set # CONFIG_DGNC is not set # CONFIG_DGAP is not set # CONFIG_GS_FPGABOOT is not set @@ -3563,6 +3595,7 @@ CONFIG_LIRC_XBOX=m # # SOC (System On Chip) specific Drivers # +# CONFIG_SOC_TI is not set CONFIG_CLKDEV_LOOKUP=y CONFIG_HAVE_CLK_PREPARE=y CONFIG_COMMON_CLK=y @@ -3571,6 +3604,7 @@ CONFIG_COMMON_CLK=y # Common Clock Framework # # CONFIG_COMMON_CLK_SI5351 is not set +# CONFIG_COMMON_CLK_PXA is not set # # Hardware Spinlock drivers @@ -3581,6 +3615,7 @@ CONFIG_COMMON_CLK=y # CONFIG_CLKEVT_I8253=y CONFIG_CLKBLD_I8253=y +# CONFIG_ATMEL_PIT is not set # CONFIG_SH_TIMER_CMT is not set # CONFIG_SH_TIMER_MTU2 is not set # CONFIG_SH_TIMER_TMU is not set @@ -3596,6 +3631,10 @@ CONFIG_CLKBLD_I8253=y # # Rpmsg drivers # + +# +# SOC (System On Chip) specific Drivers +# # CONFIG_PM_DEVFREQ is not set # CONFIG_EXTCON is not set # CONFIG_MEMORY is not set @@ -3687,6 +3726,7 @@ CONFIG_FANOTIFY=y CONFIG_AUTOFS4_FS=y CONFIG_FUSE_FS=m # CONFIG_CUSE is not set +# CONFIG_OVERLAY_FS is not set # # Caches @@ -3783,6 +3823,7 @@ CONFIG_ROOT_NFS=y # CONFIG_NFS_USE_LEGACY_DNS is not set CONFIG_NFS_USE_KERNEL_DNS=y # CONFIG_NFSD is not set +CONFIG_GRACE_PERIOD=y CONFIG_LOCKD=y CONFIG_LOCKD_V4=y CONFIG_NFS_COMMON=y @@ -3926,6 +3967,7 @@ CONFIG_PANIC_ON_OOPS_VALUE=0 CONFIG_PANIC_TIMEOUT=0 # CONFIG_SCHED_DEBUG is not set # CONFIG_SCHEDSTATS is not set +# CONFIG_SCHED_STACK_END_CHECK is not set # CONFIG_TIMER_STATS is not set # @@ -3993,7 +4035,7 @@ CONFIG_TRACING_SUPPORT=y # CONFIG_TEST_RHASHTABLE is not set # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set # CONFIG_DMA_API_DEBUG is not set -# CONFIG_TEST_MODULE is not set +# CONFIG_TEST_LKM is not set # CONFIG_TEST_USER_COPY is not set # CONFIG_TEST_BPF is not set # CONFIG_TEST_FIRMWARE is not set @@ -4068,6 +4110,7 @@ CONFIG_CRYPTO_MANAGER2=y # CONFIG_CRYPTO_PCRYPT is not set CONFIG_CRYPTO_WORKQUEUE=y # CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_MCRYPTD is not set # CONFIG_CRYPTO_AUTHENC is not set # CONFIG_CRYPTO_TEST is not set @@ -4117,6 +4160,7 @@ CONFIG_CRYPTO_SHA1=y # CONFIG_CRYPTO_SHA1_SSSE3 is not set # CONFIG_CRYPTO_SHA256_SSSE3 is not set # CONFIG_CRYPTO_SHA512_SSSE3 is not set +# CONFIG_CRYPTO_SHA1_MB is not set CONFIG_CRYPTO_SHA256=y # CONFIG_CRYPTO_SHA512 is not set # CONFIG_CRYPTO_TGR192 is not set diff --git a/projects/RPi/linux/linux.arm.conf b/projects/RPi/linux/linux.arm.conf index ad86a83c61..ed06342f6b 100644 --- a/projects/RPi/linux/linux.arm.conf +++ b/projects/RPi/linux/linux.arm.conf @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm 3.17.4 Kernel Configuration +# Linux/arm 3.18.2 Kernel Configuration # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y @@ -63,6 +63,7 @@ CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_IRQ_SHOW=y CONFIG_HARDIRQS_SW_RESEND=y CONFIG_IRQ_DOMAIN=y +CONFIG_HANDLE_DOMAIN_IRQ=y # CONFIG_IRQ_DOMAIN_DEBUG is not set CONFIG_IRQ_FORCED_THREADING=y CONFIG_GENERIC_CLOCKEVENTS=y @@ -92,6 +93,7 @@ CONFIG_TICK_CPU_ACCOUNTING=y # CONFIG_TREE_PREEMPT_RCU=y CONFIG_PREEMPT_RCU=y +# CONFIG_TASKS_RCU is not set CONFIG_RCU_STALL_COMMON=y CONFIG_RCU_FANOUT=32 CONFIG_RCU_FANOUT_LEAF=16 @@ -108,7 +110,6 @@ CONFIG_BUILD_BIN2C=y CONFIG_IKCONFIG=m CONFIG_IKCONFIG_PROC=y CONFIG_LOG_BUF_SHIFT=17 -CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 CONFIG_GENERIC_SCHED_CLOCK=y CONFIG_CGROUPS=y # CONFIG_CGROUP_DEBUG is not set @@ -138,6 +139,7 @@ CONFIG_RD_GZIP=y CONFIG_SYSCTL=y CONFIG_ANON_INODES=y CONFIG_HAVE_UID16=y +CONFIG_BPF=y CONFIG_EXPERT=y # CONFIG_UID16 is not set # CONFIG_SGETMASK_SYSCALL is not set @@ -154,8 +156,10 @@ CONFIG_EPOLL=y CONFIG_SIGNALFD=y CONFIG_TIMERFD=y CONFIG_EVENTFD=y +# CONFIG_BPF_SYSCALL is not set CONFIG_SHMEM=y # CONFIG_AIO is not set +CONFIG_ADVISE_SYSCALLS=y CONFIG_EMBEDDED=y CONFIG_HAVE_PERF_EVENTS=y CONFIG_PERF_USE_VMALLOC=y @@ -222,6 +226,7 @@ CONFIG_MODULE_UNLOAD=y # CONFIG_MODVERSIONS is not set # CONFIG_MODULE_SRCVERSION_ALL is not set # CONFIG_MODULE_SIG is not set +# CONFIG_MODULE_COMPRESS is not set CONFIG_BLOCK=y CONFIG_LBDAF=y CONFIG_BLK_DEV_BSG=y @@ -304,7 +309,6 @@ CONFIG_ARCH_BCM2708=y # CONFIG_ARCH_S3C64XX is not set # CONFIG_ARCH_DAVINCI is not set # CONFIG_ARCH_OMAP1 is not set -# CONFIG_PLAT_SPEAR is not set # # Broadcom BCM2708 Implementations @@ -525,6 +529,8 @@ CONFIG_IP_MROUTE=y # CONFIG_IP_PIMSM_V2 is not set # CONFIG_SYN_COOKIES is not set # CONFIG_NET_UDP_TUNNEL is not set +# CONFIG_NET_FOU is not set +# CONFIG_GENEVE is not set # CONFIG_INET_AH is not set # CONFIG_INET_ESP is not set # CONFIG_INET_IPCOMP is not set @@ -687,7 +693,9 @@ CONFIG_NF_DEFRAG_IPV4=m CONFIG_NF_CONNTRACK_IPV4=m # CONFIG_NF_LOG_ARP is not set # CONFIG_NF_LOG_IPV4 is not set +CONFIG_NF_REJECT_IPV4=m CONFIG_NF_NAT_IPV4=m +CONFIG_NF_NAT_MASQUERADE_IPV4=m # CONFIG_NF_NAT_PPTP is not set # CONFIG_NF_NAT_H323 is not set CONFIG_IP_NF_IPTABLES=m @@ -710,8 +718,10 @@ CONFIG_IP_NF_TARGET_MASQUERADE=m # CONFIG_NF_DEFRAG_IPV6=m CONFIG_NF_CONNTRACK_IPV6=m +CONFIG_NF_REJECT_IPV6=m # CONFIG_NF_LOG_IPV6 is not set CONFIG_NF_NAT_IPV6=m +# CONFIG_NF_NAT_MASQUERADE_IPV6 is not set CONFIG_IP6_NF_IPTABLES=m # CONFIG_IP6_NF_MATCH_AH is not set # CONFIG_IP6_NF_MATCH_EUI64 is not set @@ -846,6 +856,7 @@ CONFIG_FW_LOADER=y CONFIG_FIRMWARE_IN_KERNEL=y CONFIG_EXTRA_FIRMWARE="" # CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set +# CONFIG_ALLOW_DEV_COREDUMP is not set # CONFIG_DEBUG_DRIVER is not set # CONFIG_DEBUG_DEVRES is not set # CONFIG_SYS_HYPERVISOR is not set @@ -954,6 +965,7 @@ CONFIG_BCM2708_VCHIQ=y # Intel MIC Card Driver # # CONFIG_ECHO is not set +# CONFIG_CXL_BASE is not set # # SCSI device support @@ -963,6 +975,7 @@ CONFIG_SCSI_MOD=y CONFIG_SCSI=y CONFIG_SCSI_DMA=y # CONFIG_SCSI_NETLINK is not set +# CONFIG_SCSI_MQ_DEFAULT is not set # CONFIG_SCSI_PROC_FS is not set # @@ -1026,6 +1039,8 @@ CONFIG_TUN=y # CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set # CONFIG_NET_DSA_MV88E6131 is not set # CONFIG_NET_DSA_MV88E6123_61_65 is not set +# CONFIG_NET_DSA_MV88E6171 is not set +# CONFIG_NET_DSA_BCM_SF2 is not set # CONFIG_ETHERNET is not set CONFIG_PHYLIB=y @@ -1052,6 +1067,7 @@ CONFIG_PHYLIB=y # CONFIG_MICREL_PHY is not set # CONFIG_FIXED_PHY is not set # CONFIG_MDIO_BITBANG is not set +# CONFIG_MDIO_BCM_UNIMAC is not set # CONFIG_MICREL_KS8995MA is not set CONFIG_PPP=y CONFIG_PPP_BSDCOMP=m @@ -1114,6 +1130,8 @@ CONFIG_ATH9K_BTCOEX_SUPPORT=y CONFIG_ATH9K=m CONFIG_ATH9K_AHB=y # CONFIG_ATH9K_DEBUGFS is not set +# CONFIG_ATH9K_DYNACK is not set +# CONFIG_ATH9K_CHANNEL_CONTEXT is not set CONFIG_ATH9K_HTC=m # CONFIG_ATH9K_HTC_DEBUGFS is not set CONFIG_CARL9170=m @@ -1264,6 +1282,8 @@ CONFIG_INPUT_UINPUT=y # CONFIG_INPUT_ADXL34X is not set # CONFIG_INPUT_IMS_PCU is not set # CONFIG_INPUT_CMA3000 is not set +# CONFIG_INPUT_DRV260X_HAPTICS is not set +# CONFIG_INPUT_DRV2667_HAPTICS is not set # # Hardware I/O ports @@ -1438,6 +1458,7 @@ CONFIG_GPIO_SYSFS=y # Memory mapped GPIO drivers: # # CONFIG_GPIO_GENERIC_PLATFORM is not set +# CONFIG_GPIO_DWAPB is not set # CONFIG_GPIO_PL061 is not set # CONFIG_GPIO_SCH311X is not set @@ -1460,6 +1481,7 @@ CONFIG_GPIO_ARIZONA=m # SPI GPIO expanders: # # CONFIG_GPIO_MAX7301 is not set +# CONFIG_GPIO_MCP23S08 is not set # CONFIG_GPIO_MC33880 is not set # @@ -1497,7 +1519,6 @@ CONFIG_POWER_SUPPLY=y # CONFIG_CHARGER_BQ24735 is not set # CONFIG_CHARGER_SMB347 is not set # CONFIG_POWER_RESET is not set -CONFIG_POWER_RESET_RESTART=y # CONFIG_POWER_AVS is not set CONFIG_HWMON=y # CONFIG_HWMON_VID is not set @@ -1623,6 +1644,7 @@ CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set # CONFIG_THERMAL_GOV_FAIR_SHARE is not set CONFIG_THERMAL_GOV_STEP_WISE=y +# CONFIG_THERMAL_GOV_BANG_BANG is not set # CONFIG_THERMAL_GOV_USER_SPACE is not set # CONFIG_THERMAL_EMULATION is not set CONFIG_THERMAL_BCM2835=y @@ -1640,6 +1662,7 @@ CONFIG_WATCHDOG=y # CONFIG_SOFT_WATCHDOG is not set # CONFIG_XILINX_WATCHDOG is not set # CONFIG_ARM_SP805_WATCHDOG is not set +# CONFIG_CADENCE_WATCHDOG is not set # CONFIG_DW_WATCHDOG is not set # CONFIG_MAX63XX_WATCHDOG is not set CONFIG_BCM2708_WDT=m @@ -1706,6 +1729,7 @@ CONFIG_MFD_CORE=y # CONFIG_MFD_MAX8925 is not set # CONFIG_MFD_MAX8997 is not set # CONFIG_MFD_MAX8998 is not set +# CONFIG_MFD_MENF21BMC is not set # CONFIG_EZX_PCAP is not set # CONFIG_MFD_VIPERBOARD is not set # CONFIG_MFD_RETU is not set @@ -1714,6 +1738,7 @@ CONFIG_MFD_CORE=y # CONFIG_MFD_PM8921_CORE is not set CONFIG_MFD_RTSX_USB=y # CONFIG_MFD_RC5T583 is not set +# CONFIG_MFD_RN5T618 is not set # CONFIG_MFD_SEC_CORE is not set # CONFIG_MFD_SI476X_CORE is not set # CONFIG_MFD_SM501 is not set @@ -1805,6 +1830,7 @@ CONFIG_IR_MCE_KBD_DECODER=m CONFIG_IR_XMP_DECODER=m CONFIG_RC_DEVICES=y CONFIG_RC_ATI_REMOTE=m +# CONFIG_IR_HIX5HD2 is not set CONFIG_IR_IMON=m CONFIG_IR_MCEUSB=m CONFIG_IR_REDRAT3=m @@ -1903,6 +1929,7 @@ CONFIG_DVB_USB_DVBSKY=m CONFIG_SMS_USB_DRV=m CONFIG_DVB_B2C2_FLEXCOP_USB=m # CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set +CONFIG_DVB_AS102=m # # Webcam, TV (analog/digital) USB devices @@ -2056,7 +2083,6 @@ CONFIG_DVB_TUNER_ITD1000=m CONFIG_DVB_TUNER_CX24113=m CONFIG_DVB_TDA826X=m CONFIG_DVB_CX24116=m -CONFIG_DVB_DVBSKY_M88DS3103=m CONFIG_DVB_SI21XX=m CONFIG_DVB_TS2020=m CONFIG_DVB_DS3000=m @@ -2080,6 +2106,7 @@ CONFIG_DVB_CXD2820R=m CONFIG_DVB_RTL2830=m CONFIG_DVB_RTL2832=m CONFIG_DVB_SI2168=m +CONFIG_DVB_AS102_FE=m # # DVB-C (cable) frontends @@ -2123,7 +2150,6 @@ CONFIG_DVB_LNBP22=m CONFIG_DVB_ISL6421=m CONFIG_DVB_ISL6423=m CONFIG_DVB_A8293=m -CONFIG_DVB_SP2=m CONFIG_DVB_LGS8GXX=m CONFIG_DVB_ATBM8830=m CONFIG_DVB_IX2505V=m @@ -2149,6 +2175,7 @@ CONFIG_DVB_AF9033=m # CONFIG_FB=y # CONFIG_FIRMWARE_EDID is not set +CONFIG_FB_CMDLINE=y # CONFIG_FB_DDC is not set # CONFIG_FB_BOOT_VESA_SUPPORT is not set CONFIG_FB_CFB_FILLRECT=y @@ -2271,6 +2298,7 @@ CONFIG_SND_SOC_I2C_AND_SPI=m # CONFIG_SND_SOC_AK4642 is not set # CONFIG_SND_SOC_AK5386 is not set # CONFIG_SND_SOC_ALC5623 is not set +# CONFIG_SND_SOC_CS35L32 is not set # CONFIG_SND_SOC_CS42L52 is not set # CONFIG_SND_SOC_CS42L56 is not set # CONFIG_SND_SOC_CS42L73 is not set @@ -2279,6 +2307,7 @@ CONFIG_SND_SOC_I2C_AND_SPI=m # CONFIG_SND_SOC_CS4271 is not set # CONFIG_SND_SOC_CS42XX8_I2C is not set # CONFIG_SND_SOC_HDMI_CODEC is not set +# CONFIG_SND_SOC_ES8328 is not set # CONFIG_SND_SOC_PCM1681 is not set # CONFIG_SND_SOC_PCM1792A is not set CONFIG_SND_SOC_PCM512x=m @@ -2289,6 +2318,9 @@ CONFIG_SND_SOC_PCM5102A=m # CONFIG_SND_SOC_SGTL5000 is not set # CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set # CONFIG_SND_SOC_SPDIF is not set +# CONFIG_SND_SOC_SSM2602_SPI is not set +# CONFIG_SND_SOC_SSM2602_I2C is not set +# CONFIG_SND_SOC_SSM4567 is not set # CONFIG_SND_SOC_STA350 is not set # CONFIG_SND_SOC_TAS2552 is not set # CONFIG_SND_SOC_TAS5086 is not set @@ -2310,6 +2342,7 @@ CONFIG_SND_SOC_TAS5713=m CONFIG_SND_SOC_WM8804=m # CONFIG_SND_SOC_WM8903 is not set # CONFIG_SND_SOC_WM8962 is not set +# CONFIG_SND_SOC_WM8978 is not set # CONFIG_SND_SOC_TPA6130A2 is not set # CONFIG_SND_SIMPLE_CARD is not set # CONFIG_SOUND_PRIME is not set @@ -2369,9 +2402,9 @@ CONFIG_HID_MONTEREY=y # CONFIG_HID_MULTITOUCH is not set # CONFIG_HID_NTRIG is not set CONFIG_HID_ORTEK=y -CONFIG_HID_OUYA=y CONFIG_HID_PANTHERLORD=y CONFIG_PANTHERLORD_FF=y +CONFIG_HID_PENMOUNT=y CONFIG_HID_PETALYNX=y # CONFIG_HID_PICOLCD is not set # CONFIG_HID_PRIMAX is not set @@ -2541,7 +2574,6 @@ CONFIG_USB_SERIAL_PL2303=m # CONFIG_USB_SERIAL_OPTICON is not set # CONFIG_USB_SERIAL_XSENS_MT is not set # CONFIG_USB_SERIAL_WISHBONE is not set -# CONFIG_USB_SERIAL_ZTE is not set # CONFIG_USB_SERIAL_SSU100 is not set # CONFIG_USB_SERIAL_QT2 is not set # CONFIG_USB_SERIAL_DEBUG is not set @@ -2579,12 +2611,12 @@ CONFIG_USB_SERIAL_PL2303=m # CONFIG_USB_PHY is not set # CONFIG_NOP_USB_XCEIV is not set # CONFIG_AM335X_PHY_USB is not set -# CONFIG_SAMSUNG_USB2PHY is not set -# CONFIG_SAMSUNG_USB3PHY is not set # CONFIG_USB_GPIO_VBUS is not set # CONFIG_USB_ISP1301 is not set # CONFIG_USB_ULPI is not set # CONFIG_USB_GADGET is not set +# CONFIG_USB_LED_TRIG is not set +# CONFIG_UWB is not set CONFIG_MMC=y # CONFIG_MMC_DEBUG is not set # CONFIG_MMC_CLKGATE is not set @@ -2802,7 +2834,6 @@ CONFIG_VT6656=m # CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set # CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set CONFIG_STAGING_MEDIA=y -CONFIG_DVB_AS102=m # CONFIG_VIDEO_TCM825X is not set CONFIG_LIRC_STAGING=y CONFIG_LIRC_IGORPLUGUSB=m @@ -2828,6 +2859,7 @@ CONFIG_LIRC_XBOX=m # # SOC (System On Chip) specific Drivers # +# CONFIG_SOC_TI is not set CONFIG_CLKDEV_LOOKUP=y CONFIG_HAVE_CLK_PREPARE=y CONFIG_COMMON_CLK=y @@ -2836,6 +2868,7 @@ CONFIG_COMMON_CLK=y # Common Clock Framework # # CONFIG_COMMON_CLK_SI5351 is not set +# CONFIG_COMMON_CLK_PXA is not set # # Hardware Spinlock drivers @@ -2844,6 +2877,7 @@ CONFIG_COMMON_CLK=y # # Clock Source drivers # +# CONFIG_ATMEL_PIT is not set # CONFIG_SH_TIMER_CMT is not set # CONFIG_SH_TIMER_MTU2 is not set # CONFIG_SH_TIMER_TMU is not set @@ -2860,6 +2894,10 @@ CONFIG_COMMON_CLK=y # # Rpmsg drivers # + +# +# SOC (System On Chip) specific Drivers +# # CONFIG_PM_DEVFREQ is not set CONFIG_EXTCON=m @@ -2868,6 +2906,7 @@ CONFIG_EXTCON=m # CONFIG_EXTCON_ARIZONA=m # CONFIG_EXTCON_GPIO is not set +# CONFIG_EXTCON_RT8973A is not set # CONFIG_EXTCON_SM5502 is not set # CONFIG_MEMORY is not set # CONFIG_IIO is not set @@ -2933,6 +2972,7 @@ CONFIG_FANOTIFY=y CONFIG_AUTOFS4_FS=y CONFIG_FUSE_FS=m # CONFIG_CUSE is not set +# CONFIG_OVERLAY_FS is not set # # Caches @@ -3026,6 +3066,7 @@ CONFIG_ROOT_NFS=y # CONFIG_NFS_USE_LEGACY_DNS is not set CONFIG_NFS_USE_KERNEL_DNS=y # CONFIG_NFSD is not set +CONFIG_GRACE_PERIOD=y CONFIG_LOCKD=y CONFIG_LOCKD_V4=y CONFIG_NFS_COMMON=y @@ -3156,6 +3197,7 @@ CONFIG_PANIC_ON_OOPS_VALUE=0 CONFIG_PANIC_TIMEOUT=0 # CONFIG_SCHED_DEBUG is not set # CONFIG_SCHEDSTATS is not set +# CONFIG_SCHED_STACK_END_CHECK is not set # CONFIG_TIMER_STATS is not set # CONFIG_DEBUG_PREEMPT is not set @@ -3218,7 +3260,7 @@ CONFIG_TRACING_SUPPORT=y # CONFIG_TEST_KSTRTOX is not set # CONFIG_TEST_RHASHTABLE is not set # CONFIG_DMA_API_DEBUG is not set -# CONFIG_TEST_MODULE is not set +# CONFIG_TEST_LKM is not set # CONFIG_TEST_USER_COPY is not set # CONFIG_TEST_BPF is not set # CONFIG_TEST_FIRMWARE is not set @@ -3234,6 +3276,7 @@ CONFIG_HAVE_ARCH_KGDB=y CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S" # CONFIG_DEBUG_UART_PL01X is not set # CONFIG_DEBUG_UART_8250 is not set +# CONFIG_DEBUG_UART_BCM63XX is not set CONFIG_UNCOMPRESS_INCLUDE="mach/uncompress.h" # CONFIG_OC_ETM is not set # CONFIG_PID_IN_CONTEXTIDR is not set @@ -3277,6 +3320,7 @@ CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y # CONFIG_CRYPTO_NULL is not set CONFIG_CRYPTO_WORKQUEUE=y # CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_MCRYPTD is not set # CONFIG_CRYPTO_AUTHENC is not set # CONFIG_CRYPTO_TEST is not set @@ -3407,6 +3451,7 @@ CONFIG_XZ_DEC=y # CONFIG_XZ_DEC_BCJ is not set # CONFIG_XZ_DEC_TEST is not set CONFIG_DECOMPRESS_GZIP=y +CONFIG_GENERIC_ALLOCATOR=y CONFIG_ASSOCIATIVE_ARRAY=y CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT_MAP=y diff --git a/projects/RPi/patches/linux/linux-01-RPi_support.patch b/projects/RPi/patches/linux/linux-01-RPi_support.patch index 9e4bf27af9..55e101000b 100644 --- a/projects/RPi/patches/linux/linux-01-RPi_support.patch +++ b/projects/RPi/patches/linux/linux-01-RPi_support.patch @@ -1,7 +1,7 @@ -From 902ab5f10e718ac886446fc79574bf2ff2459abd Mon Sep 17 00:00:00 2001 +From e06cd62d169985e2dc8ad7018d624d24a09ab8e5 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Sun, 12 May 2013 12:24:19 +0100 -Subject: [PATCH 01/76] Main bcm2708 linux port +Subject: [PATCH 01/87] Main bcm2708 linux port Signed-off-by: popcornmix --- @@ -39,7 +39,7 @@ Signed-off-by: popcornmix arch/arm/mach-bcm2708/include/mach/vc_mem.h | 35 ++ arch/arm/mach-bcm2708/include/mach/vcio.h | 165 ++++++ arch/arm/mach-bcm2708/include/mach/vmalloc.h | 20 + - arch/arm/mach-bcm2708/power.c | 194 +++++++ + arch/arm/mach-bcm2708/power.c | 197 +++++++ arch/arm/mach-bcm2708/vc_mem.c | 432 +++++++++++++++ arch/arm/mach-bcm2708/vcio.c | 474 ++++++++++++++++ arch/arm/mm/Kconfig | 2 +- @@ -48,7 +48,7 @@ Signed-off-by: popcornmix drivers/tty/serial/amba-pl011.c | 2 +- include/linux/mmc/host.h | 1 + include/linux/mmc/sdhci.h | 1 + - 43 files changed, 4712 insertions(+), 5 deletions(-) + 43 files changed, 4715 insertions(+), 5 deletions(-) create mode 100644 arch/arm/configs/bcmrpi_defconfig create mode 100644 arch/arm/mach-bcm2708/Kconfig create mode 100644 arch/arm/mach-bcm2708/Makefile @@ -84,10 +84,10 @@ Signed-off-by: popcornmix create mode 100644 arch/arm/mach-bcm2708/vcio.c diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index 32cbbd5..aeb74cd 100644 +index 89c4b5c..4cedaf2 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig -@@ -378,6 +378,22 @@ config ARCH_AT91 +@@ -381,6 +381,22 @@ config ARCH_AT91 This enables support for systems based on Atmel AT91RM9200 and AT91SAM9* processors. @@ -110,7 +110,7 @@ index 32cbbd5..aeb74cd 100644 config ARCH_CLPS711X bool "Cirrus Logic CLPS711x/EP721x/EP731x-based" select ARCH_REQUIRE_GPIOLIB -@@ -964,6 +980,7 @@ source "arch/arm/plat-versatile/Kconfig" +@@ -972,6 +988,7 @@ source "arch/arm/plat-versatile/Kconfig" source "arch/arm/mach-vt8500/Kconfig" source "arch/arm/mach-w90x900/Kconfig" @@ -119,10 +119,10 @@ index 32cbbd5..aeb74cd 100644 source "arch/arm/mach-zynq/Kconfig" diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug -index 2f78e54..f00a063 100644 +index d8f6a2e..526e50d 100644 --- a/arch/arm/Kconfig.debug +++ b/arch/arm/Kconfig.debug -@@ -953,6 +953,14 @@ choice +@@ -985,6 +985,14 @@ choice options; the platform specific options are deprecated and will be soon removed. @@ -138,10 +138,10 @@ index 2f78e54..f00a063 100644 config DEBUG_EXYNOS_UART diff --git a/arch/arm/Makefile b/arch/arm/Makefile -index 0ce9d0f..7c10625 100644 +index 034a949..fea9213 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile -@@ -148,6 +148,7 @@ textofs-$(CONFIG_ARCH_AXXIA) := 0x00308000 +@@ -146,6 +146,7 @@ textofs-$(CONFIG_ARCH_AXXIA) := 0x00308000 machine-$(CONFIG_ARCH_AT91) += at91 machine-$(CONFIG_ARCH_AXXIA) += axxia machine-$(CONFIG_ARCH_BCM) += bcm @@ -620,10 +620,10 @@ index 0000000..8950e53 +CONFIG_CRC_ITU_T=y +CONFIG_LIBCRC32C=y diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c -index a35f6eb..ee0ef19 100644 +index fe972a2..f4f3bfd 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c -@@ -171,6 +171,16 @@ void arch_cpu_idle_dead(void) +@@ -166,6 +166,16 @@ void arch_cpu_idle_dead(void) } #endif @@ -3911,10 +3911,10 @@ index 0000000..502c617 +#define VMALLOC_END (0xe8000000) diff --git a/arch/arm/mach-bcm2708/power.c b/arch/arm/mach-bcm2708/power.c new file mode 100644 -index 0000000..256bf1a +index 0000000..2696be9 --- /dev/null +++ b/arch/arm/mach-bcm2708/power.c -@@ -0,0 +1,194 @@ +@@ -0,0 +1,197 @@ +/* + * linux/arch/arm/mach-bcm2708/power.c + * @@ -3941,7 +3941,10 @@ index 0000000..256bf1a +#define BCM_POWER_NOCLIENT (1<<31) + +/* Some drivers expect there devices to be permanently powered */ ++ ++#ifdef CONFIG_USB +#define BCM_POWER_ALWAYS_ON (BCM_POWER_USB) ++#endif + +#if 1 +#define DPRINTK printk @@ -5080,7 +5083,7 @@ index a10297d..c9ddd87 100644 ics_if_voip MACH_ICS_IF_VOIP ICS_IF_VOIP 3206 wlf_cragg_6410 MACH_WLF_CRAGG_6410 WLF_CRAGG_6410 3207 diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c -index 8572f2a..4041738 100644 +index 02016fc..fed2b92 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c @@ -84,7 +84,7 @@ struct vendor_data { @@ -5093,10 +5096,10 @@ index 8572f2a..4041738 100644 static struct vendor_data vendor_arm = { diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h -index 7960424..b82f5cd 100644 +index df0c153..c226105 100644 --- a/include/linux/mmc/host.h +++ b/include/linux/mmc/host.h -@@ -283,6 +283,7 @@ struct mmc_host { +@@ -290,6 +290,7 @@ struct mmc_host { #define MMC_CAP2_HS400 (MMC_CAP2_HS400_1_8V | \ MMC_CAP2_HS400_1_2V) #define MMC_CAP2_SDIO_IRQ_NOTHREAD (1 << 17) @@ -5105,10 +5108,10 @@ index 7960424..b82f5cd 100644 mmc_pm_flag_t pm_caps; /* supported pm features */ diff --git a/include/linux/mmc/sdhci.h b/include/linux/mmc/sdhci.h -index 09ebe57..582ce64 100644 +index dba793e..9300f87 100644 --- a/include/linux/mmc/sdhci.h +++ b/include/linux/mmc/sdhci.h -@@ -128,6 +128,7 @@ struct sdhci_host { +@@ -130,6 +130,7 @@ struct sdhci_host { #define SDHCI_SDIO_IRQ_ENABLED (1<<9) /* SDIO irq enabled */ #define SDHCI_SDR104_NEEDS_TUNING (1<<10) /* SDR104/HS200 needs tuning */ #define SDHCI_USING_RETUNING_TIMER (1<<11) /* Host is using a retuning timer for the card */ @@ -5117,10 +5120,10 @@ index 09ebe57..582ce64 100644 unsigned int version; /* SDHCI spec. version */ -From bc08fa921ef396693c279990ffc7f1be305292bf Mon Sep 17 00:00:00 2001 +From 53ce5129b52eff70f734862a174754ca7f85c829 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 8 Oct 2014 18:50:05 +0100 -Subject: [PATCH 02/76] Add bcm2708_gpio driver +Subject: [PATCH 02/87] Add bcm2708_gpio driver Signed-off-by: popcornmix @@ -5221,7 +5224,7 @@ index 9b4e709..7503649 100644 bcm_register_device(&bcm2708_usb_device); diff --git a/arch/arm/mach-bcm2708/bcm2708_gpio.c b/arch/arm/mach-bcm2708/bcm2708_gpio.c new file mode 100644 -index 0000000..86cafa7 +index 0000000..97c8245 --- /dev/null +++ b/arch/arm/mach-bcm2708/bcm2708_gpio.c @@ -0,0 +1,401 @@ @@ -5596,7 +5599,7 @@ index 0000000..86cafa7 + + printk(KERN_ERR DRIVER_NAME ": bcm2708_gpio_remove %p\n", dev); + -+ err = gpiochip_remove(&ucb->gc); ++ gpiochip_remove(&ucb->gc); + + platform_set_drvdata(dev, NULL); + kfree(ucb); @@ -5679,10 +5682,10 @@ index 0000000..fb69624 + +#endif -From eff92148ee1b5a1ff07e5817179fefb4a0562b17 Mon Sep 17 00:00:00 2001 +From a0917ecb05a1cda23451e92288020506596ae7c9 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 7 May 2013 22:20:24 +0100 -Subject: [PATCH 03/76] Add quick config. +Subject: [PATCH 03/87] Add quick config. This is designed for quick compiling when developing. No modules are needed and it includes all Pi specific drivers @@ -5895,10 +5898,10 @@ index 0000000..e5efe75 +CONFIG_CRC_ITU_T=y +CONFIG_LIBCRC32C=y -From 5526529e626408f649d60f3ec4693f93b6407ed7 Mon Sep 17 00:00:00 2001 +From 98dc742d7dc83b824b5a4b990dbe34b96172efc7 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 1 May 2013 19:46:17 +0100 -Subject: [PATCH 04/76] Add dwc_otg driver +Subject: [PATCH 04/87] Add dwc_otg driver Signed-off-by: popcornmix @@ -5913,7 +5916,7 @@ Signed-off-by: Kari Suvanto drivers/usb/Makefile | 1 + drivers/usb/core/generic.c | 1 + drivers/usb/core/message.c | 79 + - drivers/usb/core/otg_whitelist.h | 160 +- + drivers/usb/core/otg_whitelist.h | 164 +- drivers/usb/gadget/file_storage.c | 3676 ++++++++++ drivers/usb/host/Kconfig | 13 + drivers/usb/host/Makefile | 2 + @@ -5974,7 +5977,7 @@ Signed-off-by: Kari Suvanto drivers/usb/host/dwc_otg/test/dwc_otg_test.pm | 337 + drivers/usb/host/dwc_otg/test/test_mod_param.pl | 133 + drivers/usb/host/dwc_otg/test/test_sysfs.pl | 193 + - 64 files changed, 56473 insertions(+), 43 deletions(-) + 64 files changed, 56471 insertions(+), 49 deletions(-) create mode 100644 drivers/usb/gadget/file_storage.c create mode 100644 drivers/usb/host/dwc_common_port/Makefile create mode 100644 drivers/usb/host/dwc_common_port/Makefile.fbsd @@ -6059,10 +6062,10 @@ index 358ca8d..abaac7c 100644 return i; } diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c -index 0c8a7fc..e5dca4d 100644 +index f7b7713..5423d18 100644 --- a/drivers/usb/core/message.c +++ b/drivers/usb/core/message.c -@@ -1891,6 +1891,85 @@ int usb_set_configuration(struct usb_device *dev, int configuration) +@@ -1889,6 +1889,85 @@ int usb_set_configuration(struct usb_device *dev, int configuration) if (cp->string == NULL && !(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS)) cp->string = usb_cache_string(dev, cp->desc.iConfiguration); @@ -6149,10 +6152,10 @@ index 0c8a7fc..e5dca4d 100644 /* Now that the interfaces are installed, re-enable LPM. */ usb_unlocked_enable_lpm(dev); diff --git a/drivers/usb/core/otg_whitelist.h b/drivers/usb/core/otg_whitelist.h -index e8cdce5..ca0ac47 100644 +index de0c9c9..54d313b 100644 --- a/drivers/usb/core/otg_whitelist.h +++ b/drivers/usb/core/otg_whitelist.h -@@ -19,33 +19,82 @@ +@@ -19,87 +19,153 @@ static struct usb_device_id whitelist_table [] = { /* hubs are optional in OTG, but very handy ... */ @@ -6241,18 +6244,48 @@ index e8cdce5..ca0ac47 100644 static int is_targeted(struct usb_device *dev) { struct usb_device_id *id = whitelist_table; -@@ -55,58 +104,83 @@ static int is_targeted(struct usb_device *dev) - return 1; /* HNP test device is _never_ targeted (see OTG spec 6.6.6) */ - if ((le16_to_cpu(dev->descriptor.idVendor) == 0x1a0a && - le16_to_cpu(dev->descriptor.idProduct) == 0xbadd)) - return 0; +- +- /* NOTE: can't use usb_match_id() since interface caches +- * aren't set up yet. this is cut/paste from that code. +- */ +- for (id = whitelist_table; id->match_flags; id++) { +- if ((id->match_flags & USB_DEVICE_ID_MATCH_VENDOR) && +- id->idVendor != le16_to_cpu(dev->descriptor.idVendor)) +- continue; +- +- if ((id->match_flags & USB_DEVICE_ID_MATCH_PRODUCT) && +- id->idProduct != le16_to_cpu(dev->descriptor.idProduct)) +- continue; +- +- /* No need to test id->bcdDevice_lo != 0, since 0 is never +- greater than any unsigned number. */ +- if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_LO) && +- (id->bcdDevice_lo > le16_to_cpu(dev->descriptor.bcdDevice))) +- continue; +- +- if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_HI) && +- (id->bcdDevice_hi < le16_to_cpu(dev->descriptor.bcdDevice))) +- continue; +- +- if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_CLASS) && +- (id->bDeviceClass != dev->descriptor.bDeviceClass)) +- continue; +- +- if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_SUBCLASS) && +- (id->bDeviceSubClass != dev->descriptor.bDeviceSubClass)) +- continue; +- +- if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_PROTOCOL) && +- (id->bDeviceProtocol != dev->descriptor.bDeviceProtocol)) +- continue; + if (dev->descriptor.idVendor == 0x1a0a && + dev->descriptor.idProduct == 0xbadd) { + return 0; -+ } else if (!enable_whitelist) { -+ return 1; + } else { + +#ifdef DEBUG @@ -6264,14 +6297,8 @@ index e8cdce5..ca0ac47 100644 + dev->descriptor.bDeviceProtocol); +#endif -- /* NOTE: can't use usb_match_id() since interface caches -- * aren't set up yet. this is cut/paste from that code. -- */ -- for (id = whitelist_table; id->match_flags; id++) { -- if ((id->match_flags & USB_DEVICE_ID_MATCH_VENDOR) && -- id->idVendor != le16_to_cpu(dev->descriptor.idVendor)) -- continue; -+ return 1; + return 1; +- } + /* NOTE: can't use usb_match_id() since interface caches + * aren't set up yet. this is cut/paste from that code. + */ @@ -6286,80 +6313,49 @@ index e8cdce5..ca0ac47 100644 + id->bDeviceProtocol); +#endif -- if ((id->match_flags & USB_DEVICE_ID_MATCH_PRODUCT) && -- id->idProduct != le16_to_cpu(dev->descriptor.idProduct)) -- continue; +- /* add other match criteria here ... */ + if ((id->match_flags & USB_DEVICE_ID_MATCH_VENDOR) && + id->idVendor != le16_to_cpu(dev->descriptor.idVendor)) + continue; -- /* No need to test id->bcdDevice_lo != 0, since 0 is never -- greater than any unsigned number. */ -- if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_LO) && -- (id->bcdDevice_lo > le16_to_cpu(dev->descriptor.bcdDevice))) -- continue; + if ((id->match_flags & USB_DEVICE_ID_MATCH_PRODUCT) && + id->idProduct != le16_to_cpu(dev->descriptor.idProduct)) + continue; -- if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_HI) && -- (id->bcdDevice_hi < le16_to_cpu(dev->descriptor.bcdDevice))) -- continue; +- /* OTG MESSAGE: report errors here, customize to match your product */ +- dev_err(&dev->dev, "device v%04x p%04x is not supported\n", +- le16_to_cpu(dev->descriptor.idVendor), +- le16_to_cpu(dev->descriptor.idProduct)); + /* No need to test id->bcdDevice_lo != 0, since 0 is never + greater than any unsigned number. */ + if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_LO) && + (id->bcdDevice_lo > le16_to_cpu(dev->descriptor.bcdDevice))) + continue; - -- if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_CLASS) && -- (id->bDeviceClass != dev->descriptor.bDeviceClass)) -- continue; ++ + if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_HI) && + (id->bcdDevice_hi < le16_to_cpu(dev->descriptor.bcdDevice))) + continue; - -- if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_SUBCLASS) && -- (id->bDeviceSubClass != dev->descriptor.bDeviceSubClass)) -- continue; ++ + if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_CLASS) && + (id->bDeviceClass != dev->descriptor.bDeviceClass)) + continue; - -- if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_PROTOCOL) && -- (id->bDeviceProtocol != dev->descriptor.bDeviceProtocol)) -- continue; ++ + if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_SUBCLASS) && + (id->bDeviceSubClass != dev->descriptor.bDeviceSubClass)) + continue; - -- return 1; ++ + if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_PROTOCOL) && + (id->bDeviceProtocol != dev->descriptor.bDeviceProtocol)) + continue; + + return 1; + } - } ++ } ++ ++ /* add other match criteria here ... */ - /* add other match criteria here ... */ - -- -- /* OTG MESSAGE: report errors here, customize to match your product */ -- dev_err(&dev->dev, "device v%04x p%04x is not supported\n", -- le16_to_cpu(dev->descriptor.idVendor), -- le16_to_cpu(dev->descriptor.idProduct)); - #ifdef CONFIG_USB_OTG_WHITELIST + report_errors(dev); return 0; - #else -- return 1; -+ if (enable_whitelist) { -+ report_errors(dev); -+ return 0; -+ } else { -+ return 1; -+ } - #endif } diff --git a/drivers/usb/gadget/file_storage.c b/drivers/usb/gadget/file_storage.c @@ -10045,10 +10041,10 @@ index 0000000..a896d73 +} +module_exit(fsg_cleanup); diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig -index 6f1d48e..d841967 100644 +index a3ca137..4937c9c 100644 --- a/drivers/usb/host/Kconfig +++ b/drivers/usb/host/Kconfig -@@ -721,6 +721,19 @@ config USB_HWA_HCD +@@ -744,6 +744,19 @@ config USB_HWA_HCD To compile this driver a module, choose M here: the module will be called "hwa-hc". @@ -10069,10 +10065,10 @@ index 6f1d48e..d841967 100644 tristate "i.MX21 HCD support" depends on ARM && ARCH_MXC diff --git a/drivers/usb/host/Makefile b/drivers/usb/host/Makefile -index 144c038..7672a59 100644 +index 348c243..7ca1836 100644 --- a/drivers/usb/host/Makefile +++ b/drivers/usb/host/Makefile -@@ -69,6 +69,8 @@ obj-$(CONFIG_USB_U132_HCD) += u132-hcd.o +@@ -71,6 +71,8 @@ obj-$(CONFIG_USB_U132_HCD) += u132-hcd.o obj-$(CONFIG_USB_R8A66597_HCD) += r8a66597-hcd.o obj-$(CONFIG_USB_ISP1760_HCD) += isp1760.o obj-$(CONFIG_USB_HWA_HCD) += hwa-hc.o @@ -63008,10 +63004,10 @@ index 0000000..cdc9963 +test_main(); +0; -From 7c7ba78f95fcea4bfced5afff52c97d41eea5b62 Mon Sep 17 00:00:00 2001 +From 2f65a140b82fd08c4774802fd038539d6e2de510 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 1 May 2013 19:54:32 +0100 -Subject: [PATCH 05/76] bcm2708 watchdog driver +Subject: [PATCH 05/87] bcm2708 watchdog driver Signed-off-by: popcornmix --- @@ -63022,10 +63018,10 @@ Signed-off-by: popcornmix create mode 100644 drivers/watchdog/bcm2708_wdog.c diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig -index f57312f..c0eb247 100644 +index d0107d4..ff56894 100644 --- a/drivers/watchdog/Kconfig +++ b/drivers/watchdog/Kconfig -@@ -413,6 +413,12 @@ config RETU_WATCHDOG +@@ -452,6 +452,12 @@ config RETU_WATCHDOG To compile this driver as a module, choose M here: the module will be called retu_wdt. @@ -63039,10 +63035,10 @@ index f57312f..c0eb247 100644 tristate "MOXART watchdog" depends on ARCH_MOXART diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile -index 468c320..c9a497a 100644 +index c569ec8..10e0665 100644 --- a/drivers/watchdog/Makefile +++ b/drivers/watchdog/Makefile -@@ -54,6 +54,7 @@ obj-$(CONFIG_TS72XX_WATCHDOG) += ts72xx_wdt.o +@@ -56,6 +56,7 @@ obj-$(CONFIG_TS72XX_WATCHDOG) += ts72xx_wdt.o obj-$(CONFIG_IMX2_WDT) += imx2_wdt.o obj-$(CONFIG_UX500_WATCHDOG) += ux500_wdt.o obj-$(CONFIG_RETU_WATCHDOG) += retu_wdt.o @@ -63439,10 +63435,10 @@ index 0000000..8a27d68 +MODULE_ALIAS_MISCDEV(TEMP_MINOR); +MODULE_LICENSE("GPL"); -From 6c0d0b4b2384f95482b19b05eb5e7cad96b81bca Mon Sep 17 00:00:00 2001 +From 1c10683e3ffe66fdd733aa56780693226b01e084 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 1 May 2013 19:55:09 +0100 -Subject: [PATCH 06/76] bcm2708 framebuffer driver +Subject: [PATCH 06/87] bcm2708 framebuffer driver Signed-off-by: popcornmix @@ -63458,10 +63454,10 @@ bcm2708_fb: Add pan and vsync controls create mode 100644 drivers/video/fbdev/bcm2708_fb.c diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig -index e911b9c..96a4d2b 100644 +index c7bf606..0349473 100644 --- a/drivers/video/fbdev/Kconfig +++ b/drivers/video/fbdev/Kconfig -@@ -220,6 +220,20 @@ config FB_TILEBLITTING +@@ -224,6 +224,20 @@ config FB_TILEBLITTING comment "Frame buffer hardware drivers" depends on FB @@ -66548,10 +66544,10 @@ index 3c14e43..7626beb 100644 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 -From 14a1cf6175d4e0736a9de0f275557514ef32dcaf Mon Sep 17 00:00:00 2001 +From abd46c08f49df3d6cddd1e7371a296640dede01d Mon Sep 17 00:00:00 2001 From: Harm Hanemaaijer Date: Thu, 20 Jun 2013 20:21:39 +0200 -Subject: [PATCH 07/76] Speed up console framebuffer imageblit function +Subject: [PATCH 07/87] Speed up console framebuffer imageblit function Especially on platforms with a slower CPU but a relatively high framebuffer fill bandwidth, like current ARM devices, the existing @@ -66760,10 +66756,10 @@ index a2bb276..436494f 100644 start_index, pitch_index); } else -From 2e0c1cd9a4c707a8d678ad2c590aa0f099eb6da5 Mon Sep 17 00:00:00 2001 +From 8ebfecfe9cac285c783391afc54f2906c12ec374 Mon Sep 17 00:00:00 2001 From: Siarhei Siamashka Date: Mon, 17 Jun 2013 13:32:11 +0300 -Subject: [PATCH 08/76] fbdev: add FBIOCOPYAREA ioctl +Subject: [PATCH 08/87] fbdev: add FBIOCOPYAREA ioctl Based on the patch authored by Ali Gholami Rudi at https://lkml.org/lkml/2009/7/13/153 @@ -66778,7 +66774,7 @@ Signed-off-by: Siarhei Siamashka 2 files changed, 35 insertions(+) diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c -index b5e85f6..dff4c47 100644 +index 0705d88..771992a 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -1084,6 +1084,25 @@ fb_blank(struct fb_info *info, int blank) @@ -66856,10 +66852,10 @@ index fb795c3..fa72af0 100644 #define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */ #define FB_TYPE_PLANES 1 /* Non interleaved planes */ -From 213ec9d3b772e7ea710738a53c8dd30201c71417 Mon Sep 17 00:00:00 2001 +From 00f3af8c01c3223d8ea5475e1db1a70ef4f4d027 Mon Sep 17 00:00:00 2001 From: Siarhei Siamashka Date: Mon, 17 Jun 2013 16:00:25 +0300 -Subject: [PATCH 09/76] bcm2708_fb: DMA acceleration for fb_copyarea +Subject: [PATCH 09/87] bcm2708_fb: DMA acceleration for fb_copyarea Based on http://www.raspberrypi.org/phpBB3/viewtopic.php?p=62425#p62425 Also used Simon's dmaer_master module as a reference for tweaking DMA @@ -67343,10 +67339,10 @@ index ac04125..9d7ecda 100644 return 0; -From 43d9811fd811f4b59bcd5c199f61ed4201005722 Mon Sep 17 00:00:00 2001 +From df3f65668a5fb75915acb9ede96bac80f8fd9d7e Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 2 Jul 2013 23:42:01 +0100 -Subject: [PATCH 10/76] bcm2708 vchiq driver +Subject: [PATCH 10/87] bcm2708 vchiq driver Signed-off-by: popcornmix @@ -67468,7 +67464,7 @@ described above. create mode 100644 drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig -index b841180..526082a 100644 +index bbeb451..b6109a2 100644 --- a/drivers/misc/Kconfig +++ b/drivers/misc/Kconfig @@ -524,6 +524,7 @@ source "drivers/misc/carma/Kconfig" @@ -67480,7 +67476,7 @@ index b841180..526082a 100644 source "drivers/misc/genwqe/Kconfig" source "drivers/misc/echo/Kconfig" diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile -index 5497d02..99defa0 100644 +index 7d5c4cd..c085ede 100644 --- a/drivers/misc/Makefile +++ b/drivers/misc/Makefile @@ -51,6 +51,7 @@ obj-$(CONFIG_INTEL_MEI) += mei/ @@ -80295,10 +80291,10 @@ index 0000000..b6bfa21 + return vchiq_build_time; +} -From 913b82a0fb3b5a292f027f3fcd80c79586b871f5 Mon Sep 17 00:00:00 2001 +From 918270607c11470943c18ffb32211775a51f323c Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 12 May 2014 15:12:02 +0100 -Subject: [PATCH 11/76] vchiq: Avoid high load when blocked and unkillable +Subject: [PATCH 11/87] vchiq: Avoid high load when blocked and unkillable vchiq: Include SIGSTOP and SIGCONT in list of signals not-masked by vchiq to allow gdb to work --- @@ -80460,22 +80456,22 @@ index c2eefef..05e7979 100644 static inline int is_pow2(int i) { -From c29d3b8b106d7dd4c1f01c315ab5bf21468fc046 Mon Sep 17 00:00:00 2001 +From 138ab6a6512b4fa5960a43e4c9c57f2d384a9c72 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 3 Jul 2013 00:31:47 +0100 -Subject: [PATCH 12/76] cma: Add vc_cma driver to enable use of CMA +Subject: [PATCH 12/87] cma: Add vc_cma driver to enable use of CMA Signed-off-by: popcornmix --- drivers/char/Kconfig | 2 + - drivers/char/Makefile | 2 + + drivers/char/Makefile | 1 + drivers/char/broadcom/Kconfig | 16 + drivers/char/broadcom/Makefile | 1 + drivers/char/broadcom/vc_cma/Makefile | 14 + drivers/char/broadcom/vc_cma/vc_cma.c | 1143 +++++++++++++++++++++++++++++++++ drivers/misc/Makefile | 2 +- include/linux/broadcom/vc_cma.h | 29 + - 8 files changed, 1208 insertions(+), 1 deletion(-) + 8 files changed, 1207 insertions(+), 1 deletion(-) create mode 100644 drivers/char/broadcom/Kconfig create mode 100644 drivers/char/broadcom/Makefile create mode 100644 drivers/char/broadcom/vc_cma/Makefile @@ -80483,7 +80479,7 @@ Signed-off-by: popcornmix create mode 100644 include/linux/broadcom/vc_cma.h diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig -index 6e9f74a..17ff032 100644 +index efefd12..aebd7ca 100644 --- a/drivers/char/Kconfig +++ b/drivers/char/Kconfig @@ -581,6 +581,8 @@ config DEVPORT @@ -80496,14 +80492,13 @@ index 6e9f74a..17ff032 100644 bool "Enable device interface for some SMD packet ports" default n diff --git a/drivers/char/Makefile b/drivers/char/Makefile -index a324f93..aef3ed0 100644 +index d06cde26..a9f9daf 100644 --- a/drivers/char/Makefile +++ b/drivers/char/Makefile -@@ -61,3 +61,5 @@ obj-$(CONFIG_JS_RTC) += js-rtc.o - js-rtc-y = rtc.o +@@ -62,3 +62,4 @@ js-rtc-y = rtc.o obj-$(CONFIG_TILE_SROM) += tile-srom.o -+ + obj-$(CONFIG_XILLYBUS) += xillybus/ +obj-$(CONFIG_BRCM_CHAR_DRIVERS) += broadcom/ diff --git a/drivers/char/broadcom/Kconfig b/drivers/char/broadcom/Kconfig new file mode 100644 @@ -81704,7 +81699,7 @@ index 0000000..a635f9f +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Broadcom Corporation"); diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile -index 99defa0..7b281b7 100644 +index c085ede..43d2ac9 100644 --- a/drivers/misc/Makefile +++ b/drivers/misc/Makefile @@ -51,7 +51,7 @@ obj-$(CONFIG_INTEL_MEI) += mei/ @@ -81752,10 +81747,10 @@ index 0000000..5325832 + +#endif /* VC_CMA_H */ -From 4489d2212bd91b2c891a300c6d5231560bb1ac34 Mon Sep 17 00:00:00 2001 +From 8f444f02f445dcbb2ff933ec1cbe621727146eb9 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 26 Mar 2012 22:15:50 +0100 -Subject: [PATCH 13/76] bcm2708: alsa sound driver +Subject: [PATCH 13/87] bcm2708: alsa sound driver Signed-off-by: popcornmix @@ -84518,10 +84513,10 @@ index 0000000..af3e6eb + +#endif // _VC_AUDIO_DEFS_H_ -From 8c9d231b5abbce7a782052d1f2e1e8b80f096b88 Mon Sep 17 00:00:00 2001 +From db11fc52b5814fbd6503bf41787210de50d444cd Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 3 Jul 2013 00:51:55 +0100 -Subject: [PATCH 14/76] Add hwrng (hardware random number generator) driver +Subject: [PATCH 14/87] Add hwrng (hardware random number generator) driver --- drivers/char/hw_random/Kconfig | 11 ++++ @@ -84531,7 +84526,7 @@ Subject: [PATCH 14/76] Add hwrng (hardware random number generator) driver create mode 100755 drivers/char/hw_random/bcm2708-rng.c diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig -index 836b061..e6d1fd1 100644 +index 91a04ae..0d2ca0d 100644 --- a/drivers/char/hw_random/Kconfig +++ b/drivers/char/hw_random/Kconfig @@ -320,6 +320,17 @@ config HW_RANDOM_TPM @@ -84553,15 +84548,16 @@ index 836b061..e6d1fd1 100644 tristate "Qualcomm SoCs Random Number Generator support" depends on HW_RANDOM && ARCH_QCOM diff --git a/drivers/char/hw_random/Makefile b/drivers/char/hw_random/Makefile -index 199ed283..1299292 100644 +index 0b4cd57..78b019c 100644 --- a/drivers/char/hw_random/Makefile +++ b/drivers/char/hw_random/Makefile -@@ -28,4 +28,5 @@ obj-$(CONFIG_HW_RANDOM_POWERNV) += powernv-rng.o +@@ -28,5 +28,6 @@ obj-$(CONFIG_HW_RANDOM_POWERNV) += powernv-rng.o obj-$(CONFIG_HW_RANDOM_EXYNOS) += exynos-rng.o obj-$(CONFIG_HW_RANDOM_TPM) += tpm-rng.o obj-$(CONFIG_HW_RANDOM_BCM2835) += bcm2835-rng.o +obj-$(CONFIG_HW_RANDOM_BCM2708) += bcm2708-rng.o obj-$(CONFIG_HW_RANDOM_MSM) += msm-rng.o + obj-$(CONFIG_HW_RANDOM_XGENE) += xgene-rng.o diff --git a/drivers/char/hw_random/bcm2708-rng.c b/drivers/char/hw_random/bcm2708-rng.c new file mode 100755 index 0000000..340f004 @@ -84687,10 +84683,10 @@ index 0000000..340f004 +MODULE_DESCRIPTION("BCM2708 H/W Random Number Generator (RNG) driver"); +MODULE_LICENSE("GPL and additional rights"); -From 4de5c39fa372f6b8e0575d7489d65da39c7988c6 Mon Sep 17 00:00:00 2001 +From 52004453c2e2e2eb585ae677f2377883c9167ea3 Mon Sep 17 00:00:00 2001 From: Aron Szabo Date: Sat, 16 Jun 2012 12:15:55 +0200 -Subject: [PATCH 15/76] lirc: added support for RaspberryPi GPIO +Subject: [PATCH 15/87] lirc: added support for RaspberryPi GPIO lirc_rpi: Use read_current_timer to determine transmitter delay. Thanks to jjmz and others See: https://github.com/raspberrypi/linux/issues/525 @@ -85438,10 +85434,10 @@ index 0000000..887c36b +module_param(debug, bool, S_IRUGO | S_IWUSR); +MODULE_PARM_DESC(debug, "Enable debugging messages"); -From a5312198c0161d6d4c63b46d57a540bbc8d9d252 Mon Sep 17 00:00:00 2001 +From 3accdaee0529e04e8eaf1fbbf962de81358b2072 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 3 Jul 2013 00:49:20 +0100 -Subject: [PATCH 16/76] Add cpufreq driver +Subject: [PATCH 16/87] Add cpufreq driver --- arch/arm/Kconfig | 1 + @@ -85452,10 +85448,10 @@ Subject: [PATCH 16/76] Add cpufreq driver create mode 100755 drivers/cpufreq/bcm2835-cpufreq.c diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index aeb74cd..2b7243f 100644 +index 4cedaf2..6283d7d 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig -@@ -387,6 +387,7 @@ config ARCH_BCM2708 +@@ -390,6 +390,7 @@ config ARCH_BCM2708 select NEED_MACH_GPIO_H select NEED_MACH_MEMORY_H select CLKDEV_LOOKUP @@ -85464,7 +85460,7 @@ index aeb74cd..2b7243f 100644 select ARM_ERRATA_411920 select MACH_BCM2708 diff --git a/drivers/cpufreq/Kconfig.arm b/drivers/cpufreq/Kconfig.arm -index 7364a53..d0294fe 100644 +index 83a75dc..210394f 100644 --- a/drivers/cpufreq/Kconfig.arm +++ b/drivers/cpufreq/Kconfig.arm @@ -241,6 +241,14 @@ config ARM_SPEAR_CPUFREQ @@ -85483,7 +85479,7 @@ index 7364a53..d0294fe 100644 bool "TEGRA CPUFreq support" depends on ARCH_TEGRA diff --git a/drivers/cpufreq/Makefile b/drivers/cpufreq/Makefile -index db6d9a2..a7874d1 100644 +index 40c53dc..47d2922 100644 --- a/drivers/cpufreq/Makefile +++ b/drivers/cpufreq/Makefile @@ -75,6 +75,7 @@ obj-$(CONFIG_ARM_S5PV210_CPUFREQ) += s5pv210-cpufreq.o @@ -85725,10 +85721,10 @@ index 0000000..447ca09 +module_init(bcm2835_cpufreq_module_init); +module_exit(bcm2835_cpufreq_module_exit); -From ea455618690499004afcfc687972711ddcf8b7e3 Mon Sep 17 00:00:00 2001 +From 15a901d70141951d27144b90f7ec15d09e5d9d6f Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 26 Mar 2013 19:24:24 +0000 -Subject: [PATCH 17/76] Added hwmon/thermal driver for reporting core +Subject: [PATCH 17/87] Added hwmon/thermal driver for reporting core temperature. Thanks Dorian --- @@ -85773,10 +85769,10 @@ index f3dccae..af57d11 100644 struct amba_device *d = amba_devs[i]; amba_device_register(d, &iomem_resource); diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig -index f00d048..20a8679 100644 +index 5286d7c..d52e192 100644 --- a/drivers/hwmon/Kconfig +++ b/drivers/hwmon/Kconfig -@@ -1669,6 +1669,16 @@ config SENSORS_ULTRA45 +@@ -1680,6 +1680,16 @@ config SENSORS_ULTRA45 This driver provides support for the Ultra45 workstation environmental sensors. @@ -85794,10 +85790,10 @@ index f00d048..20a8679 100644 comment "ACPI drivers" diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile -index be28152..7fabf32 100644 +index c90a761..15aaecf 100644 --- a/drivers/hwmon/Makefile +++ b/drivers/hwmon/Makefile -@@ -152,6 +152,7 @@ obj-$(CONFIG_SENSORS_W83L785TS) += w83l785ts.o +@@ -153,6 +153,7 @@ obj-$(CONFIG_SENSORS_W83L785TS) += w83l785ts.o obj-$(CONFIG_SENSORS_W83L786NG) += w83l786ng.o obj-$(CONFIG_SENSORS_WM831X) += wm831x-hwmon.o obj-$(CONFIG_SENSORS_WM8350) += wm8350-hwmon.o @@ -86031,10 +86027,10 @@ index 0000000..5bbed45 + +module_platform_driver(bcm2835_hwmon_driver); diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig -index 693208e..fb11a9f 100644 +index f554d25..fecc621 100644 --- a/drivers/thermal/Kconfig +++ b/drivers/thermal/Kconfig -@@ -196,6 +196,12 @@ config INTEL_POWERCLAMP +@@ -206,6 +206,12 @@ config INTEL_POWERCLAMP enforce idle time which results in more package C-state residency. The user interface is exposed via generic thermal framework. @@ -86048,10 +86044,10 @@ index 693208e..fb11a9f 100644 tristate "X86 package temperature thermal driver" depends on X86_THERMAL_VECTOR diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile -index 31e232f..8e956ca 100644 +index 39c4fe8..30a4741 100644 --- a/drivers/thermal/Makefile +++ b/drivers/thermal/Makefile -@@ -28,6 +28,7 @@ obj-$(CONFIG_ARMADA_THERMAL) += armada_thermal.o +@@ -29,6 +29,7 @@ obj-$(CONFIG_ARMADA_THERMAL) += armada_thermal.o obj-$(CONFIG_IMX_THERMAL) += imx_thermal.o obj-$(CONFIG_DB8500_CPUFREQ_COOLING) += db8500_cpufreq_cooling.o obj-$(CONFIG_INTEL_POWERCLAMP) += intel_powerclamp.o @@ -86250,10 +86246,10 @@ index 0000000..85fceb5 + +module_platform_driver(bcm2835_thermal_driver); -From ff227891dbe0d68dc129ec25044504fc7ccbc562 Mon Sep 17 00:00:00 2001 +From 96fdd6c4c066556ae7dfacde29ae85173efe8f7f Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 26 Mar 2013 17:26:38 +0000 -Subject: [PATCH 18/76] Allow mac address to be set in smsc95xx +Subject: [PATCH 18/87] Allow mac address to be set in smsc95xx Signed-off-by: popcornmix --- @@ -86344,10 +86340,10 @@ index d07bf4c..5ae60ab 100644 if (smsc95xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN, dev->net->dev_addr) == 0) { -From 6c948916e1db353ca8eda81e4cfeb88e710fbd42 Mon Sep 17 00:00:00 2001 +From ffafcc67ea6dab2c17e57e81c720c2052cd75f81 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 4 Nov 2013 18:56:10 +0000 -Subject: [PATCH 19/76] Add Chris Boot's i2c and spi drivers. +Subject: [PATCH 19/87] Add Chris Boot's i2c and spi drivers. i2c-bcm2708: fixed baudrate @@ -86563,10 +86559,10 @@ index af57d11..82f56fb 100644 static void timer_set_mode(enum clock_event_mode mode, diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig -index 2ac87fa..d8f8e2a 100644 +index 917c358..3d3db41 100644 --- a/drivers/i2c/busses/Kconfig +++ b/drivers/i2c/busses/Kconfig -@@ -349,6 +349,25 @@ config I2C_BCM2835 +@@ -371,6 +371,25 @@ config I2C_BCM2835 This support is also available as a module. If so, the module will be called i2c-bcm2835. @@ -86593,12 +86589,12 @@ index 2ac87fa..d8f8e2a 100644 tristate "BCM Kona I2C adapter" depends on ARCH_BCM_MOBILE diff --git a/drivers/i2c/busses/Makefile b/drivers/i2c/busses/Makefile -index 49bf07e..66a704e 100644 +index 78d56c5..abe642f 100644 --- a/drivers/i2c/busses/Makefile +++ b/drivers/i2c/busses/Makefile -@@ -32,6 +32,7 @@ obj-$(CONFIG_I2C_POWERMAC) += i2c-powermac.o - obj-$(CONFIG_I2C_AT91) += i2c-at91.o +@@ -33,6 +33,7 @@ obj-$(CONFIG_I2C_AT91) += i2c-at91.o obj-$(CONFIG_I2C_AU1550) += i2c-au1550.o + obj-$(CONFIG_I2C_AXXIA) += i2c-axxia.o obj-$(CONFIG_I2C_BCM2835) += i2c-bcm2835.o +obj-$(CONFIG_I2C_BCM2708) += i2c-bcm2708.o obj-$(CONFIG_I2C_BLACKFIN_TWI) += i2c-bfin-twi.o @@ -87030,10 +87026,10 @@ index 0000000..f266f10 +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:" DRV_NAME); diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig -index 62e2242..6a7943c 100644 +index 84e7c9e..71b4741 100644 --- a/drivers/spi/Kconfig +++ b/drivers/spi/Kconfig -@@ -85,6 +85,14 @@ config SPI_BCM2835 +@@ -86,6 +86,14 @@ config SPI_BCM2835 is for the regular SPI controller. Slave mode operation is not also not supported. @@ -87049,10 +87045,10 @@ index 62e2242..6a7943c 100644 tristate "SPI controller driver for ADI Blackfin5xx" depends on BLACKFIN && !BF60x diff --git a/drivers/spi/Makefile b/drivers/spi/Makefile -index 762da07..2b4be86 100644 +index 78f24ca..fdd29d3 100644 --- a/drivers/spi/Makefile +++ b/drivers/spi/Makefile -@@ -19,6 +19,7 @@ obj-$(CONFIG_SPI_BCM63XX) += spi-bcm63xx.o +@@ -20,6 +20,7 @@ obj-$(CONFIG_SPI_BCM63XX) += spi-bcm63xx.o obj-$(CONFIG_SPI_BCM63XX_HSSPI) += spi-bcm63xx-hsspi.o obj-$(CONFIG_SPI_BFIN5XX) += spi-bfin5xx.o obj-$(CONFIG_SPI_ADI_V3) += spi-adi-v3.o @@ -87693,10 +87689,10 @@ index 0000000..b04a57d +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:" DRV_NAME); -From bd166f02c19b0adb56ffffffff159a458f62e50f Mon Sep 17 00:00:00 2001 +From e093f147af2dcafa8f7aa57faf816a4708b9c2e7 Mon Sep 17 00:00:00 2001 From: cbeytas Date: Mon, 24 Jun 2013 00:05:40 -0400 -Subject: [PATCH 20/76] Perform I2C combined transactions when possible +Subject: [PATCH 20/87] Perform I2C combined transactions when possible Perform I2C combined transactions whenever possible, within the restrictions of the Broadcomm Serial Controller. @@ -87768,10 +87764,10 @@ index f266f10..8750634 100644 } -From e1ac2431db53086c50001b9f40c5ecfc4293fc98 Mon Sep 17 00:00:00 2001 +From bac73e0a55b4227952ac46d1fe7925f4235ce2c8 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 8 May 2013 11:46:50 +0100 -Subject: [PATCH 21/76] enabling the realtime clock 1-wire chip DS1307 and +Subject: [PATCH 21/87] enabling the realtime clock 1-wire chip DS1307 and 1-wire on GPIO4 (as a module) 1-wire: Add support for configuring pin for w1-gpio kernel module @@ -88043,17 +88039,17 @@ index 2820924..fd0550f 100644 } } -From b066e09163caa141635d7b86d9dbd902d71c6d09 Mon Sep 17 00:00:00 2001 +From d8e5144b7f9885fcd1cb26ca40bc84f69c0e6749 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 12 Apr 2013 23:58:47 +0100 -Subject: [PATCH 23/76] config: add missing options from 3.6.y kernel +Subject: [PATCH 23/87] config: add missing options from 3.6.y kernel --- - arch/arm/configs/bcmrpi_defconfig | 650 ++++++++++++++++++++++++++++++++++++-- - 1 file changed, 629 insertions(+), 21 deletions(-) + arch/arm/configs/bcmrpi_defconfig | 652 ++++++++++++++++++++++++++++++++++++-- + 1 file changed, 631 insertions(+), 21 deletions(-) diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index 6d2eae1..c200be9 100644 +index 6d2eae1..0f3fe96 100644 --- a/arch/arm/configs/bcmrpi_defconfig +++ b/arch/arm/configs/bcmrpi_defconfig @@ -1,3 +1,5 @@ @@ -88073,7 +88069,7 @@ index 6d2eae1..c200be9 100644 CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_CGROUP_FREEZER=y -@@ -16,28 +22,40 @@ CONFIG_RESOURCE_COUNTERS=y +@@ -16,28 +22,41 @@ CONFIG_RESOURCE_COUNTERS=y CONFIG_BLK_CGROUP=y CONFIG_NAMESPACES=y CONFIG_SCHED_AUTOGROUP=y @@ -88110,14 +88106,15 @@ index 6d2eae1..c200be9 100644 +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_STAT=m +CONFIG_CPU_FREQ_STAT_DETAILS=y -+CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y -+CONFIG_CPU_FREQ_GOV_POWERSAVE=y ++CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y ++CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y ++CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y CONFIG_CPU_IDLE=y CONFIG_VFP=y CONFIG_BINFMT_MISC=m -@@ -48,19 +66,272 @@ CONFIG_XFRM_USER=y +@@ -48,19 +67,272 @@ CONFIG_XFRM_USER=y CONFIG_NET_KEY=m CONFIG_INET=y CONFIG_IP_MULTICAST=y @@ -88396,7 +88393,7 @@ index 6d2eae1..c200be9 100644 CONFIG_IRCOMM=m CONFIG_IRDA_ULTRA=y CONFIG_IRDA_CACHE_LAST_LSAP=y -@@ -87,44 +358,84 @@ CONFIG_BT_HCIVHCI=m +@@ -87,44 +359,84 @@ CONFIG_BT_HCIVHCI=m CONFIG_BT_MRVL=m CONFIG_BT_MRVL_SDIO=m CONFIG_BT_ATH3K=m @@ -88484,7 +88481,7 @@ index 6d2eae1..c200be9 100644 CONFIG_USB_NET_DM9601=m CONFIG_USB_NET_SMSC75XX=m CONFIG_USB_NET_SMSC95XX=y -@@ -135,10 +446,13 @@ CONFIG_USB_NET_MCS7830=m +@@ -135,10 +447,13 @@ CONFIG_USB_NET_MCS7830=m CONFIG_USB_NET_CDC_SUBSET=m CONFIG_USB_ALI_M5632=y CONFIG_USB_AN2720=y @@ -88499,7 +88496,7 @@ index 6d2eae1..c200be9 100644 CONFIG_USB_NET_INT51X1=m CONFIG_USB_IPHETH=m CONFIG_USB_SIERRA_NET=m -@@ -150,7 +464,15 @@ CONFIG_USB_ZD1201=m +@@ -150,7 +465,15 @@ CONFIG_USB_ZD1201=m CONFIG_USB_NET_RNDIS_WLAN=m CONFIG_RTL8187=m CONFIG_MAC80211_HWSIM=m @@ -88515,7 +88512,7 @@ index 6d2eae1..c200be9 100644 CONFIG_B43LEGACY=m CONFIG_HOSTAP=m CONFIG_LIBERTAS=m -@@ -162,7 +484,10 @@ CONFIG_RT2X00=m +@@ -162,7 +485,10 @@ CONFIG_RT2X00=m CONFIG_RT2500USB=m CONFIG_RT73USB=m CONFIG_RT2800USB=m @@ -88526,7 +88523,7 @@ index 6d2eae1..c200be9 100644 CONFIG_RTL8192CU=m CONFIG_ZD1211RW=m CONFIG_MWIFIEX=m -@@ -174,6 +499,13 @@ CONFIG_INPUT_JOYDEV=m +@@ -174,6 +500,13 @@ CONFIG_INPUT_JOYDEV=m CONFIG_INPUT_EVDEV=m # CONFIG_INPUT_KEYBOARD is not set # CONFIG_INPUT_MOUSE is not set @@ -88540,7 +88537,7 @@ index 6d2eae1..c200be9 100644 CONFIG_INPUT_MISC=y CONFIG_INPUT_AD714X=m CONFIG_INPUT_ATI_REMOTE2=m -@@ -189,22 +521,205 @@ CONFIG_SERIO_RAW=m +@@ -189,22 +522,207 @@ CONFIG_SERIO_RAW=m CONFIG_GAMEPORT=m CONFIG_GAMEPORT_NS558=m CONFIG_GAMEPORT_L4=m @@ -88575,6 +88572,7 @@ index 6d2eae1..c200be9 100644 +CONFIG_W1_SLAVE_SMEM=m +CONFIG_W1_SLAVE_DS2408=m +CONFIG_W1_SLAVE_DS2413=m ++CONFIG_W1_SLAVE_DS2406=m +CONFIG_W1_SLAVE_DS2423=m +CONFIG_W1_SLAVE_DS2431=m +CONFIG_W1_SLAVE_DS2433=m @@ -88724,6 +88722,7 @@ index 6d2eae1..c200be9 100644 +CONFIG_DVB_USB_RTL28XXU=m +CONFIG_SMS_USB_DRV=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m ++CONFIG_DVB_AS102=m +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m @@ -88748,7 +88747,7 @@ index 6d2eae1..c200be9 100644 CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_LOGO=y # CONFIG_LOGO_LINUX_MONO is not set -@@ -227,8 +742,10 @@ CONFIG_SND_BCM2835=m +@@ -227,8 +745,10 @@ CONFIG_SND_BCM2835=m CONFIG_SND_USB_AUDIO=m CONFIG_SND_USB_UA101=m CONFIG_SND_USB_CAIAQ=m @@ -88759,7 +88758,7 @@ index 6d2eae1..c200be9 100644 CONFIG_HID_A4TECH=m CONFIG_HID_ACRUX=m CONFIG_HID_APPLE=m -@@ -267,9 +784,11 @@ CONFIG_HID_SUNPLUS=m +@@ -267,9 +787,11 @@ CONFIG_HID_SUNPLUS=m CONFIG_HID_GREENASIA=m CONFIG_HID_SMARTJOYPLUS=m CONFIG_HID_TOPSEED=m @@ -88771,7 +88770,7 @@ index 6d2eae1..c200be9 100644 CONFIG_HID_ZEROPLUS=m CONFIG_HID_ZYDACRON=m CONFIG_HID_PID=y -@@ -277,6 +796,8 @@ CONFIG_USB_HIDDEV=y +@@ -277,6 +799,8 @@ CONFIG_USB_HIDDEV=y CONFIG_USB=y CONFIG_USB_ANNOUNCE_NEW_DEVICES=y CONFIG_USB_MON=m @@ -88780,7 +88779,7 @@ index 6d2eae1..c200be9 100644 CONFIG_USB_STORAGE=y CONFIG_USB_STORAGE_REALTEK=m CONFIG_USB_STORAGE_DATAFAB=m -@@ -311,6 +832,7 @@ CONFIG_USB_SERIAL_IPAQ=m +@@ -311,6 +835,7 @@ CONFIG_USB_SERIAL_IPAQ=m CONFIG_USB_SERIAL_IR=m CONFIG_USB_SERIAL_EDGEPORT=m CONFIG_USB_SERIAL_EDGEPORT_TI=m @@ -88788,7 +88787,7 @@ index 6d2eae1..c200be9 100644 CONFIG_USB_SERIAL_GARMIN=m CONFIG_USB_SERIAL_IPW=m CONFIG_USB_SERIAL_IUU=m -@@ -319,6 +841,7 @@ CONFIG_USB_SERIAL_KEYSPAN=m +@@ -319,6 +844,7 @@ CONFIG_USB_SERIAL_KEYSPAN=m CONFIG_USB_SERIAL_KLSI=m CONFIG_USB_SERIAL_KOBIL_SCT=m CONFIG_USB_SERIAL_MCT_U232=m @@ -88796,19 +88795,18 @@ index 6d2eae1..c200be9 100644 CONFIG_USB_SERIAL_MOS7720=m CONFIG_USB_SERIAL_MOS7840=m CONFIG_USB_SERIAL_NAVMAN=m -@@ -336,7 +859,11 @@ CONFIG_USB_SERIAL_XIRCOM=m +@@ -336,7 +862,10 @@ CONFIG_USB_SERIAL_XIRCOM=m CONFIG_USB_SERIAL_OPTION=m CONFIG_USB_SERIAL_OMNINET=m CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_XSENS_MT=m +CONFIG_USB_SERIAL_WISHBONE=m -+CONFIG_USB_SERIAL_ZTE=m CONFIG_USB_SERIAL_SSU100=m +CONFIG_USB_SERIAL_QT2=m CONFIG_USB_SERIAL_DEBUG=m CONFIG_USB_EMI62=m CONFIG_USB_EMI26=m -@@ -357,12 +884,79 @@ CONFIG_USB_IOWARRIOR=m +@@ -357,12 +886,79 @@ CONFIG_USB_IOWARRIOR=m CONFIG_USB_TEST=m CONFIG_USB_ISIGHTFW=m CONFIG_USB_YUREX=m @@ -88822,7 +88820,8 @@ index 6d2eae1..c200be9 100644 CONFIG_MMC_SDHCI=y CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SPI=m -+CONFIG_LEDS_GPIO=m ++CONFIG_LEDS_CLASS=y ++CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_ONESHOT=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y @@ -88875,7 +88874,6 @@ index 6d2eae1..c200be9 100644 +CONFIG_SPEAKUP=m +CONFIG_SPEAKUP_SYNTH_SOFT=m +CONFIG_STAGING_MEDIA=y -+CONFIG_DVB_AS102=m +CONFIG_LIRC_STAGING=y +CONFIG_LIRC_IGORPLUGUSB=m +CONFIG_LIRC_IMON=m @@ -88888,7 +88886,7 @@ index 6d2eae1..c200be9 100644 CONFIG_EXT4_FS=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y -@@ -384,6 +978,8 @@ CONFIG_BTRFS_FS=m +@@ -384,6 +980,8 @@ CONFIG_BTRFS_FS=m CONFIG_BTRFS_FS_POSIX_ACL=y CONFIG_NILFS2_FS=m CONFIG_FANOTIFY=y @@ -88897,7 +88895,7 @@ index 6d2eae1..c200be9 100644 CONFIG_AUTOFS4_FS=y CONFIG_FUSE_FS=m CONFIG_CUSE=m -@@ -399,18 +995,26 @@ CONFIG_MSDOS_FS=y +@@ -399,18 +997,26 @@ CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y CONFIG_FAT_DEFAULT_IOCHARSET="ascii" CONFIG_NTFS_FS=m @@ -88924,7 +88922,7 @@ index 6d2eae1..c200be9 100644 CONFIG_CIFS=m CONFIG_CIFS_WEAK_PW_HASH=y CONFIG_CIFS_XATTR=y -@@ -455,36 +1059,40 @@ CONFIG_NLS_ISO8859_14=m +@@ -455,36 +1061,40 @@ CONFIG_NLS_ISO8859_14=m CONFIG_NLS_ISO8859_15=m CONFIG_NLS_KOI8_R=m CONFIG_NLS_KOI8_U=m @@ -88972,10 +88970,10 @@ index 6d2eae1..c200be9 100644 # CONFIG_CRYPTO_HW is not set CONFIG_CRC_ITU_T=y -From 3df04c3bf190f0b483f95a288caeb6ec3852108e Mon Sep 17 00:00:00 2001 +From d1a86275aaba5bb17498eec49160e5ff29c14686 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 18 Dec 2013 22:16:19 +0000 -Subject: [PATCH 24/76] config: Enable CONFIG_MEMCG, but leave it disabled (due +Subject: [PATCH 24/87] config: Enable CONFIG_MEMCG, but leave it disabled (due to memory cost). Enable with cgroup_enable=memory. --- @@ -88985,7 +88983,7 @@ Subject: [PATCH 24/76] config: Enable CONFIG_MEMCG, but leave it disabled (due 3 files changed, 25 insertions(+) diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index c200be9..ecfe133 100644 +index 0f3fe96..c017b94 100644 --- a/arch/arm/configs/bcmrpi_defconfig +++ b/arch/arm/configs/bcmrpi_defconfig @@ -19,6 +19,7 @@ CONFIG_CGROUP_FREEZER=y @@ -88997,10 +88995,10 @@ index c200be9..ecfe133 100644 CONFIG_NAMESPACES=y CONFIG_SCHED_AUTOGROUP=y diff --git a/kernel/cgroup.c b/kernel/cgroup.c -index 3a73f99..077246c 100644 +index 136ecea..c909506 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c -@@ -5400,6 +5400,29 @@ static int __init cgroup_disable(char *str) +@@ -5322,6 +5322,29 @@ static int __init cgroup_disable(char *str) } __setup("cgroup_disable=", cgroup_disable); @@ -89031,10 +89029,10 @@ index 3a73f99..077246c 100644 { printk("cgroup: using legacy files on the default hierarchy\n"); diff --git a/mm/memcontrol.c b/mm/memcontrol.c -index 48914e1..a08d374 100644 +index d6ac0e3..49f53b1 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c -@@ -6343,6 +6343,7 @@ struct cgroup_subsys memory_cgrp_subsys = { +@@ -6207,6 +6207,7 @@ struct cgroup_subsys memory_cgrp_subsys = { .bind = mem_cgroup_bind, .legacy_cftypes = mem_cgroup_files, .early_init = 0, @@ -89043,10 +89041,10 @@ index 48914e1..a08d374 100644 #ifdef CONFIG_MEMCG_SWAP -From df71198bcadc8f74372472d7c1e8f71ec0dcbb68 Mon Sep 17 00:00:00 2001 +From 16eda2f645d4e1f6d8a44d169c8351ace4ad7336 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 3 Jul 2013 00:46:42 +0100 -Subject: [PATCH 25/76] Add FIQ patch to dwc_otg driver. Enable with +Subject: [PATCH 25/87] Add FIQ patch to dwc_otg driver. Enable with dwc_otg.fiq_fix_enable=1. Should give about 10% more ARM performance. Thanks to Gordon and Costas @@ -89328,10 +89326,10 @@ incarnations. create mode 100755 drivers/usb/host/dwc_otg/dwc_otg_mphi_fix.h diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index 2b7243f..8303659 100644 +index 6283d7d..ba9c18e 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig -@@ -392,6 +392,7 @@ config ARCH_BCM2708 +@@ -395,6 +395,7 @@ config ARCH_BCM2708 select ARM_ERRATA_411920 select MACH_BCM2708 select VC4 @@ -92342,10 +92340,10 @@ index 1b1f83c..c8590b5 100644 if (status.b.sr) { -From da7b56d64c677e21e5176daf26408e8bfb740011 Mon Sep 17 00:00:00 2001 +From 426b37a828ce1dbfb28ffe9abb1a0584a1c0f8c4 Mon Sep 17 00:00:00 2001 From: P33M Date: Wed, 19 Mar 2014 12:58:23 +0000 -Subject: [PATCH 26/76] dwc_otg: fiq_fsm: Base commit for driver rewrite +Subject: [PATCH 26/87] dwc_otg: fiq_fsm: Base commit for driver rewrite This commit removes the previous FIQ fixes entirely and adds fiq_fsm. @@ -97241,10 +97239,10 @@ index 5d310df..4b32941 100644 return -EBUSY; } -From e3b2a19aae7183eb7db66bcffaead4627d869250 Mon Sep 17 00:00:00 2001 +From 8f509ffcbc8f163dfa3eb4711269bbbb9c606e3d Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Wed, 30 Jan 2013 12:45:18 +0000 -Subject: [PATCH 27/76] bcm2835: add v4l2 camera device +Subject: [PATCH 27/87] bcm2835: add v4l2 camera device - Supports raw YUV capture, preview, JPEG and H264. - Uses videobuf2 for data transfer, using dma_buf. @@ -97356,10 +97354,10 @@ index 0000000..c585a8f + +$ v4l2-ctl --list-formats diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig -index 5d666af2..27b0b14 100644 +index 3aac88f..9bc18aa 100644 --- a/drivers/media/platform/Kconfig +++ b/drivers/media/platform/Kconfig -@@ -121,6 +121,7 @@ config VIDEO_S3C_CAMIF +@@ -126,6 +126,7 @@ config VIDEO_S3C_CAMIF source "drivers/media/platform/soc_camera/Kconfig" source "drivers/media/platform/exynos4-is/Kconfig" source "drivers/media/platform/s5p-tv/Kconfig" @@ -97368,12 +97366,12 @@ index 5d666af2..27b0b14 100644 endif # V4L_PLATFORM_DRIVERS diff --git a/drivers/media/platform/Makefile b/drivers/media/platform/Makefile -index e5269da..6e01549 100644 +index 579046b..9c9cb34 100644 --- a/drivers/media/platform/Makefile +++ b/drivers/media/platform/Makefile -@@ -51,4 +51,6 @@ obj-y += davinci/ +@@ -49,4 +49,6 @@ obj-$(CONFIG_VIDEO_RENESAS_VSP1) += vsp1/ - obj-$(CONFIG_ARCH_OMAP) += omap/ + obj-y += omap/ +obj-$(CONFIG_VIDEO_BCM2835) += bcm2835/ + @@ -103227,10 +103225,10 @@ index 0000000..9d1d11e + +#endif /* MMAL_VCHIQ_H */ -From d6bd17f9bbb5d1b0f20f403351f99c14de391e50 Mon Sep 17 00:00:00 2001 +From 45b91b2377e542c3fdc6f38f89688ea4353c72c3 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 9 Dec 2013 10:58:01 +0000 -Subject: [PATCH 28/76] V4L2: Fixes from 6by9 +Subject: [PATCH 28/87] V4L2: Fixes from 6by9 V4L2: Fix EV values. Add manual shutter speed control @@ -103462,10 +103460,10 @@ bcm2835-camera: stop_streaming now has a void return 8 files changed, 1300 insertions(+), 187 deletions(-) diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index ecfe133..1dc68ce 100644 +index c017b94..ea24343 100644 --- a/arch/arm/configs/bcmrpi_defconfig +++ b/arch/arm/configs/bcmrpi_defconfig -@@ -703,6 +703,9 @@ CONFIG_DVB_B2C2_FLEXCOP_USB=m +@@ -706,6 +706,9 @@ CONFIG_DVB_AS102=m CONFIG_VIDEO_EM28XX=m CONFIG_VIDEO_EM28XX_ALSA=m CONFIG_VIDEO_EM28XX_DVB=m @@ -105642,10 +105640,10 @@ index a06fb44..76f249e 100644 release_msg: -From f70bf7c2c80ffb0dcfd845ef8a6ddeae1dca494b Mon Sep 17 00:00:00 2001 +From 53fe0c3937f06eae6ef85181a3e014e2328088db Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 22 Nov 2013 14:22:53 +0100 -Subject: [PATCH 29/76] dmaengine: Add support for BCM2708 +Subject: [PATCH 29/87] dmaengine: Add support for BCM2708 Add support for DMA controller of BCM2708 as used in the Raspberry Pi. Currently it only supports cyclic DMA. @@ -105695,7 +105693,7 @@ index a4aac4c..d03e7b5 100644 /* return channel no or -ve error */ extern int bcm_dma_chan_alloc(unsigned preferred_feature_set, diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig -index 9b1ea0e..a6d171f 100644 +index de46982..c9b8eb5 100644 --- a/drivers/dma/Kconfig +++ b/drivers/dma/Kconfig @@ -330,6 +330,12 @@ config DMA_BCM2835 @@ -105712,10 +105710,10 @@ index 9b1ea0e..a6d171f 100644 tristate "AM33xx CPPI41 DMA support" depends on ARCH_OMAP diff --git a/drivers/dma/Makefile b/drivers/dma/Makefile -index c6adb92..6746945 100644 +index cb626c1..d3c4a82 100644 --- a/drivers/dma/Makefile +++ b/drivers/dma/Makefile -@@ -39,6 +39,7 @@ obj-$(CONFIG_DMA_SA11X0) += sa11x0-dma.o +@@ -38,6 +38,7 @@ obj-$(CONFIG_DMA_SA11X0) += sa11x0-dma.o obj-$(CONFIG_MMP_TDMA) += mmp_tdma.o obj-$(CONFIG_DMA_OMAP) += omap-dma.o obj-$(CONFIG_DMA_BCM2835) += bcm2835-dma.o @@ -106771,10 +106769,10 @@ index 0000000..6766799 +MODULE_AUTHOR("Gellert Weisz "); +MODULE_LICENSE("GPL v2"); -From 96f4de49d613d3cadd11d570c5ad7d3fb25dfba2 Mon Sep 17 00:00:00 2001 +From e6438af7156c328ec9b0b4984e3ef33dbcaf26e7 Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 22 Nov 2013 14:33:38 +0100 -Subject: [PATCH 30/76] ASoC: Add support for BCM2708 +Subject: [PATCH 30/87] ASoC: Add support for BCM2708 This driver adds support for digital audio (I2S) for the BCM2708 SoC that is used by the @@ -107906,10 +107904,10 @@ index 0000000..94fed6a + +#endif -From 74820e3bd1bb4a2ce396dab04190b2318759b39b Mon Sep 17 00:00:00 2001 +From d9347a289bb9b8f9c7e77f3f9e98ecf36bdabaf4 Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 22 Nov 2013 14:59:51 +0100 -Subject: [PATCH 31/76] ASoC: Add support for PCM5102A codec +Subject: [PATCH 31/87] ASoC: Add support for PCM5102A codec Some definitions to support the PCM5102A codec by Texas Instruments. @@ -107923,10 +107921,10 @@ Signed-off-by: Florian Meier create mode 100644 sound/soc/codecs/pcm5102a.c diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig -index 8838838e..d9be496 100644 +index a68d173..0ef8bb7 100644 --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig -@@ -76,6 +76,7 @@ config SND_SOC_ALL_CODECS +@@ -80,6 +80,7 @@ config SND_SOC_ALL_CODECS select SND_SOC_PCM512x_I2C if I2C select SND_SOC_PCM512x_SPI if SPI_MASTER select SND_SOC_RT286 if I2C @@ -107934,9 +107932,9 @@ index 8838838e..d9be496 100644 select SND_SOC_RT5631 if I2C select SND_SOC_RT5640 if I2C select SND_SOC_RT5645 if I2C -@@ -465,6 +466,9 @@ config SND_SOC_RL6231 - config SND_SOC_RT286 +@@ -486,6 +487,9 @@ config SND_SOC_RT286 tristate + depends on I2C +config SND_SOC_PCM5102A + tristate @@ -107945,10 +107943,10 @@ index 8838838e..d9be496 100644 tristate diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile -index 20afe0f..c5f6390 100644 +index 5dce451..7b606e6 100644 --- a/sound/soc/codecs/Makefile +++ b/sound/soc/codecs/Makefile -@@ -70,6 +70,7 @@ snd-soc-pcm512x-i2c-objs := pcm512x-i2c.o +@@ -74,6 +74,7 @@ snd-soc-pcm512x-i2c-objs := pcm512x-i2c.o snd-soc-pcm512x-spi-objs := pcm512x-spi.o snd-soc-rl6231-objs := rl6231.o snd-soc-rt286-objs := rt286.o @@ -107956,7 +107954,7 @@ index 20afe0f..c5f6390 100644 snd-soc-rt5631-objs := rt5631.o snd-soc-rt5640-objs := rt5640.o snd-soc-rt5645-objs := rt5645.o -@@ -241,6 +242,7 @@ obj-$(CONFIG_SND_SOC_PCM512x_I2C) += snd-soc-pcm512x-i2c.o +@@ -250,6 +251,7 @@ obj-$(CONFIG_SND_SOC_PCM512x_I2C) += snd-soc-pcm512x-i2c.o obj-$(CONFIG_SND_SOC_PCM512x_SPI) += snd-soc-pcm512x-spi.o obj-$(CONFIG_SND_SOC_RL6231) += snd-soc-rl6231.o obj-$(CONFIG_SND_SOC_RT286) += snd-soc-rt286.o @@ -108034,10 +108032,10 @@ index 0000000..126f1e9 +MODULE_AUTHOR("Florian Meier "); +MODULE_LICENSE("GPL v2"); -From 868612fc207c272b67a894bab0281b3b9558fae0 Mon Sep 17 00:00:00 2001 +From e80e01e0fde534457804f0816f37040bcba76269 Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 22 Nov 2013 19:04:54 +0100 -Subject: [PATCH 32/76] BCM2708: Add I2S support to board file +Subject: [PATCH 32/87] BCM2708: Add I2S support to board file Adds the required initializations for I2S to the board file of mach-bcm2708. @@ -108092,10 +108090,10 @@ index a740344..dca28ad 100644 struct amba_device *d = amba_devs[i]; amba_device_register(d, &iomem_resource); -From 2c4398af1a1f24bcccee837a200e277a8c3e23db Mon Sep 17 00:00:00 2001 +From 1754cf0588685eb8cbe6125424c53e027249aa43 Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 22 Nov 2013 19:19:08 +0100 -Subject: [PATCH 33/76] ASoC: Add support for HifiBerry DAC +Subject: [PATCH 33/87] ASoC: Add support for HifiBerry DAC This adds a machine driver for the HifiBerry DAC. It is a sound card that can @@ -108244,10 +108242,10 @@ index 0000000..4b70b45 +MODULE_DESCRIPTION("ASoC Driver for HifiBerry DAC"); +MODULE_LICENSE("GPL v2"); -From 31f0e24ec324d48329ac50d0adf0ccf9bcf546f3 Mon Sep 17 00:00:00 2001 +From adf71becb306e783aa880c988387a3c53ac32a50 Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 22 Nov 2013 19:21:34 +0100 -Subject: [PATCH 34/76] BCM2708: Add HifiBerry DAC to board file +Subject: [PATCH 34/87] BCM2708: Add HifiBerry DAC to board file This adds the initalization of the HifiBerry DAC to the mach-bcm2708 board file. @@ -108295,10 +108293,10 @@ index dca28ad..50d4991 100644 struct amba_device *d = amba_devs[i]; amba_device_register(d, &iomem_resource); -From ece0d271217d4046a7782a77b02ef0546e6fd8c1 Mon Sep 17 00:00:00 2001 +From 9e3fa566c19004b00d87181d59d34ce99571437f Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Mon, 2 Dec 2013 20:28:22 +0100 -Subject: [PATCH 35/76] BCM2708: Add I2S and DMA support to default config +Subject: [PATCH 35/87] BCM2708: Add I2S and DMA support to default config This commit adds several modules that are needed for I2S support for the Raspberry Pi to the defconfig. @@ -108309,10 +108307,10 @@ Signed-off-by: Florian Meier 1 file changed, 6 insertions(+) diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index 1dc68ce..312cf9a 100644 +index ea24343..09c61b0 100644 --- a/arch/arm/configs/bcmrpi_defconfig +++ b/arch/arm/configs/bcmrpi_defconfig -@@ -748,6 +748,10 @@ CONFIG_SND_USB_UA101=m +@@ -751,6 +751,10 @@ CONFIG_SND_USB_UA101=m CONFIG_SND_USB_CAIAQ=m CONFIG_SND_USB_CAIAQ_INPUT=y CONFIG_SND_USB_6FIRE=m @@ -108323,7 +108321,7 @@ index 1dc68ce..312cf9a 100644 CONFIG_SOUND_PRIME=m CONFIG_HIDRAW=y CONFIG_HID_A4TECH=m -@@ -942,6 +946,8 @@ CONFIG_RTC_DRV_RS5C348=m +@@ -945,6 +949,8 @@ CONFIG_RTC_DRV_RS5C348=m CONFIG_RTC_DRV_DS3234=m CONFIG_RTC_DRV_PCF2123=m CONFIG_RTC_DRV_RX4581=m @@ -108333,10 +108331,10 @@ index 1dc68ce..312cf9a 100644 CONFIG_UIO_PDRV_GENIRQ=m CONFIG_STAGING=y -From f090d27be933b107fc42eb3cc0135835e60d6592 Mon Sep 17 00:00:00 2001 +From af6f000362e735c9714940c96f11865f8388ca2c Mon Sep 17 00:00:00 2001 From: Florian Meier Date: Fri, 6 Dec 2013 20:50:28 +0100 -Subject: [PATCH 36/76] ASoC: BCM2708: Add support for RPi-DAC +Subject: [PATCH 36/87] ASoC: BCM2708: Add support for RPi-DAC This adds a machine driver for the RPi-DAC. @@ -108355,10 +108353,10 @@ Signed-off-by: Florian Meier create mode 100644 sound/soc/codecs/pcm1794a.c diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index 312cf9a..05b3823 100644 +index 09c61b0..8ede9ca 100644 --- a/arch/arm/configs/bcmrpi_defconfig +++ b/arch/arm/configs/bcmrpi_defconfig -@@ -751,6 +751,7 @@ CONFIG_SND_USB_6FIRE=m +@@ -754,6 +754,7 @@ CONFIG_SND_USB_6FIRE=m CONFIG_SND_SOC=m CONFIG_SND_BCM2708_SOC_I2S=m CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m @@ -108534,10 +108532,10 @@ index 0000000..6d6e0ba +MODULE_DESCRIPTION("ASoC Driver for RPi-DAC"); +MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig -index d9be496..f252baa 100644 +index 0ef8bb7..3c236a6 100644 --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig -@@ -77,6 +77,7 @@ config SND_SOC_ALL_CODECS +@@ -81,6 +81,7 @@ config SND_SOC_ALL_CODECS select SND_SOC_PCM512x_SPI if SPI_MASTER select SND_SOC_RT286 if I2C select SND_SOC_PCM5102A if I2C @@ -108545,9 +108543,9 @@ index d9be496..f252baa 100644 select SND_SOC_RT5631 if I2C select SND_SOC_RT5640 if I2C select SND_SOC_RT5645 if I2C -@@ -466,6 +467,9 @@ config SND_SOC_RL6231 - config SND_SOC_RT286 +@@ -487,6 +488,9 @@ config SND_SOC_RT286 tristate + depends on I2C +config SND_SOC_PCM1794A + tristate @@ -108556,10 +108554,10 @@ index d9be496..f252baa 100644 tristate diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile -index c5f6390..b4a8a98 100644 +index 7b606e6..2a7f823 100644 --- a/sound/soc/codecs/Makefile +++ b/sound/soc/codecs/Makefile -@@ -70,6 +70,7 @@ snd-soc-pcm512x-i2c-objs := pcm512x-i2c.o +@@ -74,6 +74,7 @@ snd-soc-pcm512x-i2c-objs := pcm512x-i2c.o snd-soc-pcm512x-spi-objs := pcm512x-spi.o snd-soc-rl6231-objs := rl6231.o snd-soc-rt286-objs := rt286.o @@ -108567,7 +108565,7 @@ index c5f6390..b4a8a98 100644 snd-soc-pcm5102a-objs := pcm5102a.o snd-soc-rt5631-objs := rt5631.o snd-soc-rt5640-objs := rt5640.o -@@ -242,6 +243,7 @@ obj-$(CONFIG_SND_SOC_PCM512x_I2C) += snd-soc-pcm512x-i2c.o +@@ -251,6 +252,7 @@ obj-$(CONFIG_SND_SOC_PCM512x_I2C) += snd-soc-pcm512x-i2c.o obj-$(CONFIG_SND_SOC_PCM512x_SPI) += snd-soc-pcm512x-spi.o obj-$(CONFIG_SND_SOC_RL6231) += snd-soc-rl6231.o obj-$(CONFIG_SND_SOC_RT286) += snd-soc-rt286.o @@ -108644,10 +108642,10 @@ index 0000000..b4eaa44 +MODULE_AUTHOR("Florian Meier "); +MODULE_LICENSE("GPL v2"); -From b5b2b5e93d52b1926c48898bb2c581a62b5c3198 Mon Sep 17 00:00:00 2001 +From f8b269dcdf4414eeceb92c8021d9728559df0c4d Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Wed, 15 Jan 2014 21:41:23 +0100 -Subject: [PATCH 37/76] ASoC: wm8804: Implement MCLK configuration options, add +Subject: [PATCH 37/87] ASoC: wm8804: Implement MCLK configuration options, add 32bit support WM8804 can run with PLL frequencies of 256xfs and 128xfs for most sample rates. At 192kHz only 128xfs is supported. The existing driver selects 128xfs automatically for some lower samples rates. By using an @@ -108666,7 +108664,7 @@ Signed-off-by: Daniel Matuschek 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/wm8804.c b/sound/soc/codecs/wm8804.c -index 0ea01df..4724553 100644 +index 3addc5f..d060b23 100644 --- a/sound/soc/codecs/wm8804.c +++ b/sound/soc/codecs/wm8804.c @@ -278,6 +278,7 @@ static int wm8804_hw_params(struct snd_pcm_substream *substream, @@ -108677,7 +108675,7 @@ index 0ea01df..4724553 100644 blen = 0x2; break; default: -@@ -641,7 +642,7 @@ static const struct snd_soc_dai_ops wm8804_dai_ops = { +@@ -624,7 +625,7 @@ static const struct snd_soc_dai_ops wm8804_dai_ops = { }; #define WM8804_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \ @@ -108687,10 +108685,10 @@ index 0ea01df..4724553 100644 #define WM8804_RATES (SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_64000 | \ -From b7917612d03df1a7172a547496231d1561bf8569 Mon Sep 17 00:00:00 2001 +From 3affd35e2cf59c17242a82ec695344892063ecc2 Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Wed, 15 Jan 2014 21:42:08 +0100 -Subject: [PATCH 38/76] ASoC: BCM:Add support for HiFiBerry Digi. Driver is +Subject: [PATCH 38/87] ASoC: BCM:Add support for HiFiBerry Digi. Driver is based on the patched WM8804 driver. Signed-off-by: Daniel Matuschek @@ -108893,10 +108891,10 @@ index 0000000..e4f769d +MODULE_DESCRIPTION("ASoC Driver for HifiBerry Digi"); +MODULE_LICENSE("GPL v2"); -From 4f9d3dc3a6301ceede7cd6c79aa1ad095f650b04 Mon Sep 17 00:00:00 2001 +From de3f6cfb38c5ab3e441bae4fce582c86b651b374 Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Thu, 16 Jan 2014 07:26:08 +0100 -Subject: [PATCH 39/76] BCM2708: Added support for HiFiBerry Digi board Board +Subject: [PATCH 39/87] BCM2708: Added support for HiFiBerry Digi board Board initalization by I2C Signed-off-by: Daniel Matuschek @@ -108943,10 +108941,10 @@ index 100c223..a57cb85 100644 bcm_register_device(&snd_rpi_dac_device); bcm_register_device(&snd_pcm1794a_codec_device); -From 4a9d416ee41973acc8fe4c36df41df623bdc4c52 Mon Sep 17 00:00:00 2001 +From fdd464bddf5ae9896f0a843759780c6582c13dbc Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Thu, 16 Jan 2014 07:27:28 +0100 -Subject: [PATCH 40/76] BCM2708: Added HiFiBerry Digi configuration option It +Subject: [PATCH 40/87] BCM2708: Added HiFiBerry Digi configuration option It will be compiled as a module by default. This also includes the WM8804 driver. @@ -108956,10 +108954,10 @@ Signed-off-by: Daniel Matuschek 1 file changed, 1 insertion(+) diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index 05b3823..5e3628a 100644 +index 8ede9ca..dc57f43 100644 --- a/arch/arm/configs/bcmrpi_defconfig +++ b/arch/arm/configs/bcmrpi_defconfig -@@ -751,6 +751,7 @@ CONFIG_SND_USB_6FIRE=m +@@ -754,6 +754,7 @@ CONFIG_SND_USB_6FIRE=m CONFIG_SND_SOC=m CONFIG_SND_BCM2708_SOC_I2S=m CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m @@ -108968,10 +108966,10 @@ index 05b3823..5e3628a 100644 CONFIG_SND_SIMPLE_CARD=m CONFIG_SOUND_PRIME=m -From cbad8f4a561f65a2cc5b33631044075f0a861d71 Mon Sep 17 00:00:00 2001 +From c875a360b96fca9926167eba6e7cc59a8c50eded Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Thu, 16 Jan 2014 07:36:35 +0100 -Subject: [PATCH 41/76] ASoC: wm8804: Set idle_bias_off to false Idle bias has +Subject: [PATCH 41/87] ASoC: wm8804: Set idle_bias_off to false Idle bias has been change to remove warning on driver startup Signed-off-by: Daniel Matuschek @@ -108980,12 +108978,12 @@ Signed-off-by: Daniel Matuschek 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/codecs/wm8804.c b/sound/soc/codecs/wm8804.c -index 4724553..5d4140e 100644 +index d060b23..d486a9d 100644 --- a/sound/soc/codecs/wm8804.c +++ b/sound/soc/codecs/wm8804.c -@@ -675,7 +675,7 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8804 = { - .suspend = wm8804_suspend, - .resume = wm8804_resume, +@@ -656,7 +656,7 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8804 = { + .probe = wm8804_probe, + .remove = wm8804_remove, .set_bias_level = wm8804_set_bias_level, - .idle_bias_off = true, + .idle_bias_off = false, @@ -108993,10 +108991,10 @@ index 4724553..5d4140e 100644 .controls = wm8804_snd_controls, .num_controls = ARRAY_SIZE(wm8804_snd_controls), -From 595dd18c08acbe5af114201c72544d57858fd00a Mon Sep 17 00:00:00 2001 +From b82e9fe19068d5fccff1ce7be1ab6da99ec99cea Mon Sep 17 00:00:00 2001 From: Gordon Garrity Date: Sat, 8 Mar 2014 16:56:57 +0000 -Subject: [PATCH 42/76] Add IQaudIO Sound Card support for Raspberry Pi +Subject: [PATCH 42/87] Add IQaudIO Sound Card support for Raspberry Pi --- arch/arm/configs/bcmrpi_defconfig | 1 + @@ -109008,10 +109006,10 @@ Subject: [PATCH 42/76] Add IQaudIO Sound Card support for Raspberry Pi create mode 100644 sound/soc/bcm/iqaudio-dac.c diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index 5e3628a..0d26cc5 100644 +index dc57f43..5a2714c 100644 --- a/arch/arm/configs/bcmrpi_defconfig +++ b/arch/arm/configs/bcmrpi_defconfig -@@ -753,6 +753,7 @@ CONFIG_SND_BCM2708_SOC_I2S=m +@@ -756,6 +756,7 @@ CONFIG_SND_BCM2708_SOC_I2S=m CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m CONFIG_SND_BCM2708_SOC_RPI_DAC=m @@ -109206,87 +109204,10 @@ index 0000000..8d0e2ae +MODULE_DESCRIPTION("ASoC Driver for IQAudio DAC"); +MODULE_LICENSE("GPL v2"); -From 0ec8dfe2d0c9b64d62e1b3b857749db604ca5319 Mon Sep 17 00:00:00 2001 -From: Howard Mitchell -Date: Wed, 30 Jul 2014 21:43:37 +0100 -Subject: [PATCH 43/76] soc-core: Fix volsw_range funcs so - SOC_DOUBLE_R_RANGE_TLV works. - -This is so that the correct range of values as specified -with the SOC_DOUBLE_R_RANGE_TLV macro are sent to the -hardware for both the normal and invert cases. ---- - sound/soc/soc-core.c | 22 ++++++++++------------ - 1 file changed, 10 insertions(+), 12 deletions(-) - -diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c -index a3e0a0d..ca4aa5a 100644 ---- a/sound/soc/soc-core.c -+++ b/sound/soc/soc-core.c -@@ -2995,8 +2995,8 @@ int snd_soc_info_volsw_range(struct snd_kcontrol *kcontrol, - - uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER; - uinfo->count = snd_soc_volsw_is_stereo(mc) ? 2 : 1; -- uinfo->value.integer.min = 0; -- uinfo->value.integer.max = platform_max - min; -+ uinfo->value.integer.min = min; -+ uinfo->value.integer.max = platform_max; - - return 0; - } -@@ -3027,9 +3027,10 @@ int snd_soc_put_volsw_range(struct snd_kcontrol *kcontrol, - unsigned int val, val_mask; - int ret; - -- val = ((ucontrol->value.integer.value[0] + min) & mask); - if (invert) -- val = max - val; -+ val = ((max - ucontrol->value.integer.value[0] + min) & mask); -+ else -+ val = (ucontrol->value.integer.value[0] & mask); - val_mask = mask << shift; - val = val << shift; - -@@ -3038,9 +3039,10 @@ int snd_soc_put_volsw_range(struct snd_kcontrol *kcontrol, - return ret; - - if (snd_soc_volsw_is_stereo(mc)) { -- val = ((ucontrol->value.integer.value[1] + min) & mask); - if (invert) -- val = max - val; -+ val = ((max - ucontrol->value.integer.value[1] + min) & mask); -+ else -+ val = (ucontrol->value.integer.value[1] & mask); - val_mask = mask << shift; - val = val << shift; - -@@ -3084,9 +3086,7 @@ int snd_soc_get_volsw_range(struct snd_kcontrol *kcontrol, - ucontrol->value.integer.value[0] = (val >> shift) & mask; - if (invert) - ucontrol->value.integer.value[0] = -- max - ucontrol->value.integer.value[0]; -- ucontrol->value.integer.value[0] = -- ucontrol->value.integer.value[0] - min; -+ max - ucontrol->value.integer.value[0] + min; - - if (snd_soc_volsw_is_stereo(mc)) { - ret = snd_soc_component_read(component, rreg, &val); -@@ -3096,9 +3096,7 @@ int snd_soc_get_volsw_range(struct snd_kcontrol *kcontrol, - ucontrol->value.integer.value[1] = (val >> shift) & mask; - if (invert) - ucontrol->value.integer.value[1] = -- max - ucontrol->value.integer.value[1]; -- ucontrol->value.integer.value[1] = -- ucontrol->value.integer.value[1] - min; -+ max - ucontrol->value.integer.value[1] + min; - } - - return 0; - -From 4c402038b4f2e17e6e0609ecc4d961a735d94e43 Mon Sep 17 00:00:00 2001 +From f931826ec6d01fd7eedf75517058174f3ac802a6 Mon Sep 17 00:00:00 2001 From: Howard Mitchell Date: Fri, 28 Mar 2014 16:40:31 +0000 -Subject: [PATCH 44/76] pcm512x: Use a range macro for Volume and rename to +Subject: [PATCH 43/87] pcm512x: Use a range macro for Volume and rename to PCM. This allows limiting the output gain to avoid clipping in the @@ -109311,10 +109232,10 @@ index 0c8aefa..8252e6d 100644 PCM512x_LAGN_SHIFT, PCM512x_RAGN_SHIFT, 1, 1, analog_tlv), SOC_DOUBLE_TLV("Playback Boost Volume", PCM512x_ANALOG_GAIN_BOOST, -From e200eaa158bf79d0906e758d443091cb22d3140c Mon Sep 17 00:00:00 2001 +From 03d70d6ee3548261dddee64c934bfda4bd39c709 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Wed, 18 Jun 2014 13:42:01 +0100 -Subject: [PATCH 45/76] vmstat: Workaround for issue where dirty page count +Subject: [PATCH 44/87] vmstat: Workaround for issue where dirty page count goes negative See: @@ -109341,10 +109262,10 @@ index 82e7db7..f87d16d 100644 static inline void __inc_zone_page_state(struct page *page, -From d1259da20166acd154c7d400e2488633b4548c8b Mon Sep 17 00:00:00 2001 +From 883832016f4b3c14f5f7067edb6a094e38ae05b5 Mon Sep 17 00:00:00 2001 From: P33M Date: Fri, 20 Jun 2014 16:03:12 +0100 -Subject: [PATCH 46/76] dwc_otg: Fix various issues with root port and +Subject: [PATCH 45/87] dwc_otg: Fix various issues with root port and transaction errors Process the host port interrupts correctly (and don't trample them). @@ -109414,10 +109335,10 @@ index d3e2035..6182d3e 100644 fiq_print(FIQDBG_ERR, dwc_otg_hcd->fiq_state, "RESET "); } -From 12aa749b2bc959e4f6535c0db41e50bbe310bdcc Mon Sep 17 00:00:00 2001 +From ef5f8d5147086a10032c770e49e15065523460b6 Mon Sep 17 00:00:00 2001 From: P33M Date: Fri, 20 Jun 2014 17:23:20 +0100 -Subject: [PATCH 47/76] fiq_fsm: Implement hack for Split Interrupt +Subject: [PATCH 46/87] fiq_fsm: Implement hack for Split Interrupt transactions Hubs aren't too picky about which endpoint we send Control type split @@ -109503,10 +109424,10 @@ index ebc3553..c39ef31 100644 break; } -From e0ac6112209b11360860c9cf43543fddbcd843b6 Mon Sep 17 00:00:00 2001 +From 3f0b322f014dc983d3f5f8855516ae0e78c3efca Mon Sep 17 00:00:00 2001 From: notro Date: Sun, 6 Jul 2014 12:07:25 +0200 -Subject: [PATCH 48/76] spi-bcm2708: Prepare for Common Clock Framework +Subject: [PATCH 47/87] spi-bcm2708: Prepare for Common Clock Framework migration As part of migrating to use the Common Clock Framework, replace clk_enable() @@ -109551,10 +109472,10 @@ index b04a57d..349d21f 100644 free_irq(bs->irq, master); iounmap(bs->base); -From 5733bd304c27830853fb0f7521dd1e9c3f7c38e5 Mon Sep 17 00:00:00 2001 +From a1b2ce17b07acbbcaec6f66864eb331a62032d4c Mon Sep 17 00:00:00 2001 From: notro Date: Sun, 6 Jul 2014 12:09:30 +0200 -Subject: [PATCH 49/76] BCM2708: Migrate to the Common Clock Framework +Subject: [PATCH 48/87] BCM2708: Migrate to the Common Clock Framework As part of moving towards using Device Tree, the Common Clock Framework has to be used instead of the BCM2708 clock implementation. @@ -109575,10 +109496,10 @@ Signed-off-by: Noralf Tronnes delete mode 100644 arch/arm/mach-bcm2708/clock.h diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index 8303659..fa220bc 100644 +index ba9c18e..0f2287f 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig -@@ -382,11 +382,10 @@ config ARCH_BCM2708 +@@ -385,11 +385,10 @@ config ARCH_BCM2708 bool "Broadcom BCM2708 family" select CPU_V6 select ARM_AMBA @@ -109824,10 +109745,10 @@ index 5f9d725..0000000 - unsigned long rate; -}; -From 46a4b8205331808088f7815050684f4d6cb31e35 Mon Sep 17 00:00:00 2001 +From a4833007678f0810c9f652eb0742905dad5b33a4 Mon Sep 17 00:00:00 2001 From: notro Date: Wed, 9 Jul 2014 14:46:08 +0200 -Subject: [PATCH 50/76] BCM2708: Add core Device Tree support +Subject: [PATCH 49/87] BCM2708: Add core Device Tree support Add the bare minimum needed to boot BCM2708 from a Device Tree. @@ -109851,17 +109772,17 @@ Signed-off-by: Noralf Tronnes notro@tronnes.org create mode 100644 arch/arm/boot/dts/bcm2708.dtsi diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile -index e6aa6e7..a034d52 100644 +index 38c89ca..c727f71 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile -@@ -51,6 +51,7 @@ dtb-$(CONFIG_ARCH_AT91) += sama5d36ek.dtb +@@ -53,6 +53,7 @@ dtb-$(CONFIG_ARCH_AT91) += at91-sama5d4ek.dtb dtb-$(CONFIG_ARCH_ATLAS6) += atlas6-evb.dtb dtb-$(CONFIG_ARCH_AXXIA) += axm5516-amarillo.dtb +dtb-$(CONFIG_BCM2708_DT) += bcm2708-rpi-b.dtb dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb dtb-$(CONFIG_ARCH_BCM_5301X) += bcm4708-netgear-r6250.dtb - dtb-$(CONFIG_ARCH_BCM_MOBILE) += bcm28155-ap.dtb \ + dtb-$(CONFIG_ARCH_BCM_63XX) += bcm963138dvt.dtb diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts new file mode 100644 index 0000000..e319c8e @@ -109992,10 +109913,10 @@ index ef12cb8..747e27a 100644 module_param(boardrev, uint, 0644); -From 0ab4eaa0d9f5b71a1876e4f1133af44d5e0659af Mon Sep 17 00:00:00 2001 +From 95ee62c9e6e33483b510932ae96f9a57b018bfac Mon Sep 17 00:00:00 2001 From: notro Date: Wed, 9 Jul 2014 14:47:48 +0200 -Subject: [PATCH 51/76] BCM2708: armctrl: Add IRQ Device Tree support +Subject: [PATCH 50/87] BCM2708: armctrl: Add IRQ Device Tree support Add Device Tree IRQ support for BCM2708. Usage is the same as for irq-bcm2835. @@ -110159,10 +110080,10 @@ index d4c5333..42f5e1c 100644 return 0; } -From 44ebe95b3434c3d861cf7d8a8fbdb5a14e62a233 Mon Sep 17 00:00:00 2001 +From 953d76437a38df8f76c88bf63289de927f8f83d2 Mon Sep 17 00:00:00 2001 From: notro Date: Thu, 10 Jul 2014 13:59:47 +0200 -Subject: [PATCH 52/76] pinctrl: add bcm2708 driver +Subject: [PATCH 51/87] pinctrl: add bcm2708 driver This driver is a verbatim copy of the pinctrl-bcm2835 driver, except for: * changed 2835 to 2708 @@ -110220,7 +110141,7 @@ index 182e7ba..05945d6 100644 Enable Device Tree support for BCM2708 diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig -index bfd2c2e..977b4d6 100644 +index c6a66de..dd631cc 100644 --- a/drivers/pinctrl/Kconfig +++ b/drivers/pinctrl/Kconfig @@ -79,6 +79,11 @@ config PINCTRL_BAYTRAIL @@ -110236,7 +110157,7 @@ index bfd2c2e..977b4d6 100644 bool select PINMUX diff --git a/drivers/pinctrl/Makefile b/drivers/pinctrl/Makefile -index 05d2275..2014825 100644 +index 51f52d3..12ae1bd 100644 --- a/drivers/pinctrl/Makefile +++ b/drivers/pinctrl/Makefile @@ -14,6 +14,7 @@ obj-$(CONFIG_PINCTRL_AS3722) += pinctrl-as3722.o @@ -110249,7 +110170,7 @@ index 05d2275..2014825 100644 obj-$(CONFIG_PINCTRL_BCM281XX) += pinctrl-bcm281xx.o diff --git a/drivers/pinctrl/pinctrl-bcm2708.c b/drivers/pinctrl/pinctrl-bcm2708.c new file mode 100644 -index 0000000..b0995fd +index 0000000..f395e95 --- /dev/null +++ b/drivers/pinctrl/pinctrl-bcm2708.c @@ -0,0 +1,762 @@ @@ -110821,7 +110742,7 @@ index 0000000..b0995fd + return 0; +} + -+static int bcm2708_pmx_enable(struct pinctrl_dev *pctldev, ++static int bcm2708_pmx_set(struct pinctrl_dev *pctldev, + unsigned func_selector, + unsigned group_selector) +{ @@ -110860,7 +110781,7 @@ index 0000000..b0995fd + .get_functions_count = bcm2708_pmx_get_functions_count, + .get_function_name = bcm2708_pmx_get_function_name, + .get_function_groups = bcm2708_pmx_get_function_groups, -+ .enable = bcm2708_pmx_enable, ++ .set_mux = bcm2708_pmx_set, + .gpio_disable_free = bcm2708_pmx_gpio_disable_free, + .gpio_set_direction = bcm2708_pmx_gpio_set_direction, +}; @@ -111016,10 +110937,10 @@ index 0000000..b0995fd +MODULE_DESCRIPTION("BCM2708 Pin control driver"); +MODULE_LICENSE("GPL"); -From cb66c254f5ea4a068148cd905e4abf589eab420b Mon Sep 17 00:00:00 2001 +From c5c3a31046630ac668c74babf9c64777a6c6196d Mon Sep 17 00:00:00 2001 From: notro Date: Sun, 27 Jul 2014 20:12:58 +0200 -Subject: [PATCH 53/76] spi: bcm2708: add device tree support +Subject: [PATCH 52/87] spi: bcm2708: add device tree support Add DT support to driver and add to .dtsi file. Setup pins and spidev in .dts file. @@ -111138,10 +111059,10 @@ index 349d21f..041b5e2 100644 .probe = bcm2708_spi_probe, .remove = bcm2708_spi_remove, -From 11595f8ca7d15db6f0e2854e527e247c80cfb900 Mon Sep 17 00:00:00 2001 +From 37c26457e4ceba3f49b594431432c9cd57c70188 Mon Sep 17 00:00:00 2001 From: notro Date: Sun, 27 Jul 2014 20:13:44 +0200 -Subject: [PATCH 54/76] BCM2708: don't register SPI controller when using DT +Subject: [PATCH 53/87] BCM2708: don't register SPI controller when using DT The device for the SPI controller is in the Device Tree. Only register the device when not using DT. @@ -111212,10 +111133,10 @@ index 747e27a..0434cbf 100644 bcm_register_device(&bcm2708_bsc1_device); -From a913832ca5008360ceaf5d480543e9b6180f56e7 Mon Sep 17 00:00:00 2001 +From 503b772789cf0e88898278dda62b491cb1c5d258 Mon Sep 17 00:00:00 2001 From: notro Date: Sun, 27 Jul 2014 20:14:05 +0200 -Subject: [PATCH 55/76] spi: bcm2835: make driver available on ARCH_BCM2708 +Subject: [PATCH 54/87] spi: bcm2835: make driver available on ARCH_BCM2708 Make this driver available on ARCH_BCM2708 @@ -111225,10 +111146,10 @@ Signed-off-by: Noralf Tronnes 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig -index 6a7943c..6600723 100644 +index 71b4741..a5238ab 100644 --- a/drivers/spi/Kconfig +++ b/drivers/spi/Kconfig -@@ -76,7 +76,7 @@ config SPI_ATMEL +@@ -77,7 +77,7 @@ config SPI_ATMEL config SPI_BCM2835 tristate "BCM2835 SPI controller" @@ -111238,10 +111159,10 @@ index 6a7943c..6600723 100644 This selects a driver for the Broadcom BCM2835 SPI master. -From 2a96bb1098dc547371af967e0a77a3c035681513 Mon Sep 17 00:00:00 2001 +From 918466788c24fa1bdee3f8f4037a22e852a20275 Mon Sep 17 00:00:00 2001 From: notro Date: Tue, 29 Jul 2014 11:04:49 +0200 -Subject: [PATCH 56/76] i2c: bcm2708: add device tree support +Subject: [PATCH 55/87] i2c: bcm2708: add device tree support Add DT support to driver and add to .dtsi file. Setup pins in .dts file. @@ -111406,10 +111327,10 @@ index 8750634..728cb69 100644 .probe = bcm2708_i2c_probe, .remove = bcm2708_i2c_remove, -From 5932cd4d797f4c929190afdf677965f2ce06665d Mon Sep 17 00:00:00 2001 +From 6d10b38d8ccf6640538e2ff74720e5e088dcb78a Mon Sep 17 00:00:00 2001 From: notro Date: Tue, 29 Jul 2014 11:05:18 +0200 -Subject: [PATCH 57/76] bcm2708: don't register i2c controllers when using DT +Subject: [PATCH 56/87] bcm2708: don't register i2c controllers when using DT The devices for the i2c controllers are in the Device Tree. Only register devices when not using DT. @@ -111451,10 +111372,10 @@ index 0434cbf..902f8c7 100644 bcm_register_device(&bcm2835_hwmon_device); bcm_register_device(&bcm2835_thermal_device); -From e88ebf69f8f7bf0587b3f85f297ad40b281cbdab Mon Sep 17 00:00:00 2001 +From 16522c5131466ead24a8f6c508ae0bf64c203e44 Mon Sep 17 00:00:00 2001 From: notro Date: Tue, 29 Jul 2014 11:05:39 +0200 -Subject: [PATCH 58/76] i2c: bcm2835: make driver available on ARCH_BCM2708 +Subject: [PATCH 57/87] i2c: bcm2835: make driver available on ARCH_BCM2708 Make this driver available on ARCH_BCM2708 @@ -111464,10 +111385,10 @@ Signed-off-by: Noralf Tronnes 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig -index d8f8e2a..5f62d88 100644 +index 3d3db41..d30a986 100644 --- a/drivers/i2c/busses/Kconfig +++ b/drivers/i2c/busses/Kconfig -@@ -339,7 +339,7 @@ config I2C_AU1550 +@@ -361,7 +361,7 @@ config I2C_AXXIA config I2C_BCM2835 tristate "Broadcom BCM2835 I2C controller" @@ -111477,10 +111398,10 @@ index d8f8e2a..5f62d88 100644 If you say yes to this option, support will be included for the BCM2835 I2C controller. -From 12ee75138da3897a7fb9b5252c08653d5b3fc897 Mon Sep 17 00:00:00 2001 +From c645b231fc20ea8108b4b099f8cd6fe5468084b1 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Mon, 14 Jul 2014 22:02:09 +0100 -Subject: [PATCH 59/76] hid: Reduce default mouse polling interval to 60Hz +Subject: [PATCH 58/87] hid: Reduce default mouse polling interval to 60Hz Reduces overhead when using X --- @@ -111488,7 +111409,7 @@ Reduces overhead when using X 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c -index ddd547a..520d3cd 100644 +index ca6849a..4671921 100644 --- a/drivers/hid/usbhid/hid-core.c +++ b/drivers/hid/usbhid/hid-core.c @@ -49,7 +49,7 @@ @@ -111500,7 +111421,7 @@ index ddd547a..520d3cd 100644 module_param_named(mousepoll, hid_mousepoll_interval, uint, 0644); MODULE_PARM_DESC(mousepoll, "Polling interval of mice"); -@@ -1095,8 +1095,12 @@ static int usbhid_start(struct hid_device *hid) +@@ -1079,8 +1079,12 @@ static int usbhid_start(struct hid_device *hid) } /* Change the polling interval of mice. */ @@ -111516,10 +111437,10 @@ index ddd547a..520d3cd 100644 ret = -ENOMEM; if (usb_endpoint_dir_in(endpoint)) { -From 0e6ac52bd2ff0280bc9003f1d0043e2d2181bc24 Mon Sep 17 00:00:00 2001 +From fd6f47b6ad4477097d8e505f50a4bb4858656288 Mon Sep 17 00:00:00 2001 From: P33M Date: Thu, 24 Jul 2014 21:24:03 +0100 -Subject: [PATCH 60/76] usb: core: make overcurrent messages more prominent +Subject: [PATCH 59/87] usb: core: make overcurrent messages more prominent Hub overcurrent messages are more serious than "debug". Increase loglevel. --- @@ -111527,10 +111448,10 @@ Hub overcurrent messages are more serious than "debug". Increase loglevel. 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c -index 674c262..b1ac9e0 100644 +index b649fef..5f8d914 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c -@@ -4918,7 +4918,7 @@ static void port_event(struct usb_hub *hub, int port1) +@@ -4923,7 +4923,7 @@ static void port_event(struct usb_hub *hub, int port1) if (portchange & USB_PORT_STAT_C_OVERCURRENT) { u16 status = 0, unused; @@ -111540,10 +111461,10 @@ index 674c262..b1ac9e0 100644 USB_PORT_FEAT_C_OVER_CURRENT); msleep(100); /* Cool down */ -From 2f6ba571e6c9966303e1a8c42e52798958ba1d4d Mon Sep 17 00:00:00 2001 +From 9e78784975e7411d0bc6bd87119f84349843ca6b Mon Sep 17 00:00:00 2001 From: Tim Gover Date: Tue, 22 Jul 2014 15:41:04 +0100 -Subject: [PATCH 61/76] vcsm: VideoCore shared memory service for BCM2835 +Subject: [PATCH 60/87] vcsm: VideoCore shared memory service for BCM2835 Add experimental support for the VideoCore shared memory service. This allows user processes to allocate memory from VideoCore's @@ -115876,10 +115797,10 @@ index 0000000..da1c523 +MODULE_DESCRIPTION("VideoCore SharedMemory Driver"); +MODULE_LICENSE("GPL v2"); -From 18df98569225b62214f111359b3a7872c01adef8 Mon Sep 17 00:00:00 2001 +From 1ca69f1065de9fda7a259195522af33bfdd57d0b Mon Sep 17 00:00:00 2001 From: popcornmix Date: Thu, 7 Aug 2014 02:03:50 +0100 -Subject: [PATCH 62/76] Revert "ARM: dma: Use dma_pfn_offset for dma address +Subject: [PATCH 61/87] Revert "ARM: dma: Use dma_pfn_offset for dma address translation" This reverts commit 6ce0d20016925d031f1e24d64302e4c976d7cec6. @@ -115888,7 +115809,7 @@ This reverts commit 6ce0d20016925d031f1e24d64302e4c976d7cec6. 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/arch/arm/include/asm/dma-mapping.h b/arch/arm/include/asm/dma-mapping.h -index c45b61a..0af6bd0 100644 +index 85738b2..9477f09 100644 --- a/arch/arm/include/asm/dma-mapping.h +++ b/arch/arm/include/asm/dma-mapping.h @@ -58,37 +58,21 @@ static inline int dma_set_mask(struct device *dev, u64 mask) @@ -115931,10 +115852,10 @@ index c45b61a..0af6bd0 100644 } -From 8722c953c202910212a515a418df1b2d43428313 Mon Sep 17 00:00:00 2001 +From 0af048a460e8ec3b9a1fc576ba33e9b252f79024 Mon Sep 17 00:00:00 2001 From: gellert Date: Fri, 15 Aug 2014 16:35:06 +0100 -Subject: [PATCH 63/76] MMC: added alternative MMC driver +Subject: [PATCH 62/87] MMC: added alternative MMC driver --- arch/arm/configs/bcmrpi_defconfig | 2 + @@ -115946,18 +115867,18 @@ Subject: [PATCH 63/76] MMC: added alternative MMC driver create mode 100644 drivers/mmc/host/bcm2835-mmc.c diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index 0d26cc5..0c17531 100644 +index 5a2714c..ca84a3b 100644 --- a/arch/arm/configs/bcmrpi_defconfig +++ b/arch/arm/configs/bcmrpi_defconfig -@@ -904,6 +904,8 @@ CONFIG_MMC=y +@@ -906,6 +906,8 @@ CONFIG_MMC=y CONFIG_MMC_BLOCK_MINORS=32 CONFIG_MMC_SDHCI=y CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_BCM2835=y +CONFIG_MMC_BCM2835_DMA=y CONFIG_MMC_SPI=m - CONFIG_LEDS_GPIO=m - CONFIG_LEDS_TRIGGER_TIMER=y + CONFIG_LEDS_CLASS=y + CONFIG_LEDS_GPIO=y diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c index 902f8c7..c9e3038 100644 --- a/arch/arm/mach-bcm2708/bcm2708.c @@ -116008,10 +115929,10 @@ index 902f8c7..c9e3038 100644 for (i = 0; i < ARRAY_SIZE(bcm2708_alsa_devices); i++) bcm_register_device(&bcm2708_alsa_devices[i]); diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig -index 4511358..edf18c6 100644 +index 1386065..977aeef 100644 --- a/drivers/mmc/host/Kconfig +++ b/drivers/mmc/host/Kconfig -@@ -270,17 +270,6 @@ config MMC_SDHCI_BCM_KONA +@@ -281,17 +281,6 @@ config MMC_SDHCI_BCM_KONA If you have a controller with this interface, say Y or M here. @@ -116029,7 +115950,7 @@ index 4511358..edf18c6 100644 config MMC_MOXART tristate "MOXART SD/MMC Host Controller support" depends on ARCH_MOXART && MMC -@@ -302,6 +291,35 @@ config MMC_SDHCI_ST +@@ -313,6 +302,35 @@ config MMC_SDHCI_ST If you have a controller with this interface, say Y or M here. If unsure, say N. @@ -116066,10 +115987,10 @@ index 4511358..edf18c6 100644 tristate "TI OMAP Multimedia Card Interface support" depends on ARCH_OMAP diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile -index f211eed..5baa507 100644 +index b09ecfb..7b17387 100644 --- a/drivers/mmc/host/Makefile +++ b/drivers/mmc/host/Makefile -@@ -16,6 +16,7 @@ obj-$(CONFIG_MMC_SDHCI_PXAV2) += sdhci-pxav2.o +@@ -17,6 +17,7 @@ obj-$(CONFIG_MMC_SDHCI_PXAV2) += sdhci-pxav2.o obj-$(CONFIG_MMC_SDHCI_S3C) += sdhci-s3c.o obj-$(CONFIG_MMC_SDHCI_SIRF) += sdhci-sirf.o obj-$(CONFIG_MMC_SDHCI_SPEAR) += sdhci-spear.o @@ -117631,10 +117552,10 @@ index 0000000..123ff94 +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Gellert Weisz"); -From 8a0edaa156944c1fbf6a21f9b4d5a0a66c8d6b23 Mon Sep 17 00:00:00 2001 +From d2f60dd79e4099d49d8feeb1f598fc811261f336 Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Mon, 4 Aug 2014 10:06:56 +0200 -Subject: [PATCH 64/76] Added support for HiFiBerry DAC+ +Subject: [PATCH 63/87] Added support for HiFiBerry DAC+ The driver is based on the HiFiBerry DAC driver. However HiFiBerry DAC+ uses a different codec chip (PCM5122), therefore a new driver is necessary. @@ -117648,10 +117569,10 @@ a different codec chip (PCM5122), therefore a new driver is necessary. create mode 100644 sound/soc/bcm/hifiberry_dacplus.c diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index 0c17531..a56e46f 100644 +index ca84a3b..4be393a 100644 --- a/arch/arm/configs/bcmrpi_defconfig +++ b/arch/arm/configs/bcmrpi_defconfig -@@ -751,6 +751,7 @@ CONFIG_SND_USB_6FIRE=m +@@ -754,6 +754,7 @@ CONFIG_SND_USB_6FIRE=m CONFIG_SND_SOC=m CONFIG_SND_BCM2708_SOC_I2S=m CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m @@ -117858,10 +117779,10 @@ index 0000000..c63387b +MODULE_DESCRIPTION("ASoC Driver for HiFiBerry DAC+"); +MODULE_LICENSE("GPL v2"); -From 0a09ef6473ac8756bbf6042ac5dc3201f76e4a27 Mon Sep 17 00:00:00 2001 +From 286ac0b773dab08b5ce46497754748e9ccf4dfbd Mon Sep 17 00:00:00 2001 From: Daniel Matuschek Date: Mon, 4 Aug 2014 11:09:58 +0200 -Subject: [PATCH 65/76] Added driver for HiFiBerry Amp amplifier add-on board +Subject: [PATCH 64/87] Added driver for HiFiBerry Amp amplifier add-on board The driver contains a low-level hardware driver for the TAS5713 and the drivers for the Raspberry Pi I2S subsystem. @@ -117881,10 +117802,10 @@ drivers for the Raspberry Pi I2S subsystem. create mode 100644 sound/soc/codecs/tas5713.h diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index a56e46f..d1fabab 100644 +index 4be393a..614158e 100644 --- a/arch/arm/configs/bcmrpi_defconfig +++ b/arch/arm/configs/bcmrpi_defconfig -@@ -753,6 +753,7 @@ CONFIG_SND_BCM2708_SOC_I2S=m +@@ -756,6 +756,7 @@ CONFIG_SND_BCM2708_SOC_I2S=m CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m @@ -118079,10 +118000,10 @@ index 0000000..1e87ee0 +MODULE_DESCRIPTION("ASoC driver for HiFiBerry-AMP"); +MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig -index f252baa..abba3ef 100644 +index 3c236a6..83c55f8 100644 --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig -@@ -100,6 +100,7 @@ config SND_SOC_ALL_CODECS +@@ -105,6 +105,7 @@ config SND_SOC_ALL_CODECS select SND_SOC_TAS5086 if I2C select SND_SOC_TLV320AIC23_I2C if I2C select SND_SOC_TLV320AIC23_SPI if SPI_MASTER @@ -118090,7 +118011,7 @@ index f252baa..abba3ef 100644 select SND_SOC_TLV320AIC26 if SPI_MASTER select SND_SOC_TLV320AIC31XX if I2C select SND_SOC_TLV320AIC32X4 if I2C -@@ -556,6 +557,9 @@ config SND_SOC_TAS5086 +@@ -585,6 +586,9 @@ config SND_SOC_TAS5086 tristate "Texas Instruments TAS5086 speaker amplifier" depends on I2C @@ -118101,10 +118022,10 @@ index f252baa..abba3ef 100644 tristate diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile -index b4a8a98..e200d60 100644 +index 2a7f823..ca76a2b 100644 --- a/sound/soc/codecs/Makefile +++ b/sound/soc/codecs/Makefile -@@ -98,6 +98,7 @@ snd-soc-sta350-objs := sta350.o +@@ -103,6 +103,7 @@ snd-soc-sta350-objs := sta350.o snd-soc-sta529-objs := sta529.o snd-soc-stac9766-objs := stac9766.o snd-soc-tas5086-objs := tas5086.o @@ -118112,7 +118033,7 @@ index b4a8a98..e200d60 100644 snd-soc-tlv320aic23-objs := tlv320aic23.o snd-soc-tlv320aic23-i2c-objs := tlv320aic23-i2c.o snd-soc-tlv320aic23-spi-objs := tlv320aic23-spi.o -@@ -268,6 +269,7 @@ obj-$(CONFIG_SND_SOC_STA529) += snd-soc-sta529.o +@@ -278,6 +279,7 @@ obj-$(CONFIG_SND_SOC_STA529) += snd-soc-sta529.o obj-$(CONFIG_SND_SOC_STAC9766) += snd-soc-stac9766.o obj-$(CONFIG_SND_SOC_TAS2552) += snd-soc-tas2552.o obj-$(CONFIG_SND_SOC_TAS5086) += snd-soc-tas5086.o @@ -118705,10 +118626,10 @@ index 0000000..8f019e0 + +#endif /* _TAS5713_H */ -From 10c8bd7a81440cdc84084b5cec7c782cb7f43c10 Mon Sep 17 00:00:00 2001 +From cedada8df17e326d6e1c0ff24b12c473ff204540 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 13 Oct 2014 11:47:53 +0100 -Subject: [PATCH 66/76] Improve __copy_to_user and __copy_from_user performance +Subject: [PATCH 65/87] Improve __copy_to_user and __copy_from_user performance Provide a __copy_from_user that uses memcpy. On BCM2708, use optimised memcpy/memmove/memcmp/memset implementations. @@ -120231,10 +120152,10 @@ index 3e58d71..0622891 100644 static unsigned long noinline __clear_user_memset(void __user *addr, unsigned long n) -From c14827ecdaa36607f6110f9ce8df96e698672191 Mon Sep 17 00:00:00 2001 +From eeb0125101864b040215911a6ce602287a18dc93 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 1 Sep 2014 16:35:56 +0100 -Subject: [PATCH 67/76] bcm2708: Allow option card devices to be configured via +Subject: [PATCH 66/87] bcm2708: Allow option card devices to be configured via DT If the kernel is built with Device Tree support, and if a DT blob @@ -120690,10 +120611,10 @@ index 2685fe4..e2c61d1 100644 static struct platform_driver bcm2835_i2s_driver = { .probe = bcm2835_i2s_probe, -From 4f7d7eb7be6f52b26441ec243d65d5fa37288100 Mon Sep 17 00:00:00 2001 +From 0df6c079bc6aa8712cb19a67174b9e66de5ce247 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Wed, 12 Nov 2014 17:07:02 +0000 -Subject: [PATCH 68/76] Adding Device Tree support for some RPi audio cards +Subject: [PATCH 67/87] Adding Device Tree support for some RPi audio cards --- arch/arm/boot/dts/Makefile | 2 + @@ -120719,18 +120640,18 @@ Subject: [PATCH 68/76] Adding Device Tree support for some RPi audio cards create mode 100644 arch/arm/boot/dts/iqaudio-dacplus-overlay.dts diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile -index a034d52..01a05f5 100644 +index c727f71..adaebbb 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile -@@ -52,6 +52,7 @@ dtb-$(CONFIG_ARCH_AT91) += sama5d36ek.dtb +@@ -54,6 +54,7 @@ dtb-$(CONFIG_ARCH_AT91) += at91-sama5d4ek.dtb dtb-$(CONFIG_ARCH_ATLAS6) += atlas6-evb.dtb dtb-$(CONFIG_ARCH_AXXIA) += axm5516-amarillo.dtb dtb-$(CONFIG_BCM2708_DT) += bcm2708-rpi-b.dtb +dtb-$(CONFIG_BCM2708_DT) += bcm2708-rpi-b-plus.dtb dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb dtb-$(CONFIG_ARCH_BCM_5301X) += bcm4708-netgear-r6250.dtb - dtb-$(CONFIG_ARCH_BCM_MOBILE) += bcm28155-ap.dtb \ -@@ -495,6 +496,7 @@ dtb-$(CONFIG_MACH_DOVE) += dove-cm-a510.dtb \ + dtb-$(CONFIG_ARCH_BCM_63XX) += bcm963138dvt.dtb +@@ -520,6 +521,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += mt6589-aquaris5.dtb targets += dtbs dtbs_install targets += $(dtb-y) @@ -121318,10 +121239,10 @@ index 126f1e9..7c6598e 100644 }; -From fb4aed1c963b0001fdd94146e774889dbc20c7c8 Mon Sep 17 00:00:00 2001 +From 26236ffbb3a4169e29ef01d6ea4f3a1c2305895c Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Fri, 5 Dec 2014 17:26:26 +0000 -Subject: [PATCH 69/76] fdt: Add support for the CONFIG_CMDLINE_EXTEND option +Subject: [PATCH 68/87] fdt: Add support for the CONFIG_CMDLINE_EXTEND option --- drivers/of/fdt.c | 29 ++++++++++++++++++++++++----- @@ -121376,17 +121297,17 @@ index 2e2b6d0..badc6a3 100644 pr_debug("Command line is: %s\n", (char*)data); -From 3724c39c11d9859b39c6343e559b163260dc023c Mon Sep 17 00:00:00 2001 +From 810085f6b25afc495c7a6320da17a789226988bd Mon Sep 17 00:00:00 2001 From: popcornmix Date: Tue, 25 Nov 2014 13:39:03 +0000 -Subject: [PATCH 70/76] config: Enable device tree +Subject: [PATCH 69/87] config: Enable device tree --- arch/arm/configs/bcmrpi_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index d1fabab..6e5d8b6 100644 +index 614158e..c4bfefc 100644 --- a/arch/arm/configs/bcmrpi_defconfig +++ b/arch/arm/configs/bcmrpi_defconfig @@ -39,6 +39,7 @@ CONFIG_PARTITION_ADVANCED=y @@ -121398,10 +121319,10 @@ index d1fabab..6e5d8b6 100644 CONFIG_AEABI=y CONFIG_CLEANCACHE=y -From a66ae5a1b822cd655b0be923afabe70b9b3dcd83 Mon Sep 17 00:00:00 2001 +From 2a156f5a47a73a15aa3a1ca8dac7b0c73d6682cf Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Thu, 11 Dec 2014 15:17:28 +0000 -Subject: [PATCH 71/76] bcm2708: Remove the prohibition on mixing SPIDEV and DT +Subject: [PATCH 70/87] bcm2708: Remove the prohibition on mixing SPIDEV and DT --- arch/arm/mach-bcm2708/Kconfig | 2 +- @@ -121438,20 +121359,20 @@ index c6d4ff6..199d8a5 100644 } -From 240dc6f5b6f8636ab2820a1ebccfa8aaacdf2c68 Mon Sep 17 00:00:00 2001 +From c4e0fdf33959197cc5ca72a0d0ea25c0a1d40452 Mon Sep 17 00:00:00 2001 From: popcornmix Date: Fri, 12 Dec 2014 11:24:48 +0000 -Subject: [PATCH 72/76] config: Add CONFIG_R8188EU and CONFIG_R8723AU +Subject: [PATCH 71/87] config: Add CONFIG_R8188EU and CONFIG_R8723AU --- arch/arm/configs/bcmrpi_defconfig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index 6e5d8b6..58ad7dc 100644 +index c4bfefc..4f0d826 100644 --- a/arch/arm/configs/bcmrpi_defconfig +++ b/arch/arm/configs/bcmrpi_defconfig -@@ -361,7 +361,6 @@ CONFIG_BT_MRVL=m +@@ -362,7 +362,6 @@ CONFIG_BT_MRVL=m CONFIG_BT_MRVL_SDIO=m CONFIG_BT_ATH3K=m CONFIG_BT_WILINK=m @@ -121459,7 +121380,7 @@ index 6e5d8b6..58ad7dc 100644 CONFIG_CFG80211_WEXT=y CONFIG_MAC80211=m CONFIG_MAC80211_MESH=y -@@ -961,6 +960,8 @@ CONFIG_UIO_PDRV_GENIRQ=m +@@ -964,6 +963,8 @@ CONFIG_UIO_PDRV_GENIRQ=m CONFIG_STAGING=y CONFIG_PRISM2_USB=m CONFIG_R8712U=m @@ -121469,10 +121390,47 @@ index 6e5d8b6..58ad7dc 100644 CONFIG_SPEAKUP=m CONFIG_SPEAKUP_SYNTH_SOFT=m -From da40eea599c98a31f47622e5068e727b0ec48c7b Mon Sep 17 00:00:00 2001 +From b10a3f036d8977052871adc6e93e1ce24eccafd3 Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Sat, 13 Dec 2014 15:22:27 +0000 +Subject: [PATCH 72/87] bcm2708_fb: Update from 3.12 + +--- + drivers/video/fbdev/bcm2708_fb.c | 9 ++------- + 1 file changed, 2 insertions(+), 7 deletions(-) + +diff --git a/drivers/video/fbdev/bcm2708_fb.c b/drivers/video/fbdev/bcm2708_fb.c +index 9d7ecda..a443666 100644 +--- a/drivers/video/fbdev/bcm2708_fb.c ++++ b/drivers/video/fbdev/bcm2708_fb.c +@@ -268,12 +268,6 @@ static int bcm2708_fb_check_var(struct fb_var_screeninfo *var, + else if (var->vmode & FB_VMODE_INTERLACED) + yres = (yres + 1) / 2; + +- if (var->xres * yres > 1920 * 1200) { +- pr_err("bcm2708_fb_check_var: ERROR: Pixel size >= 1920x1200; " +- "special treatment required! (TODO)\n"); +- return -EINVAL; +- } +- + return 0; + } + +@@ -481,7 +475,8 @@ static void bcm2708_fb_copyarea(struct fb_info *info, + int pixels = region->width * region->height; + + /* Fallback to cfb_copyarea() if we don't like something */ +- if (bytes_per_pixel > 4 || ++ if (in_atomic() || ++ bytes_per_pixel > 4 || + info->var.xres * info->var.yres > 1920 * 1200 || + region->width <= 0 || region->width > info->var.xres || + region->height <= 0 || region->height > info->var.yres || + +From cbb3bdd72df651bb856add4f3a6e5dbc5e4ba2b6 Mon Sep 17 00:00:00 2001 From: gellert Date: Mon, 15 Dec 2014 17:44:18 +0000 -Subject: [PATCH 73/76] DMA: fix cyclic LITE length overflow bug +Subject: [PATCH 73/87] DMA: fix cyclic LITE length overflow bug --- drivers/dma/bcm2708-dmaengine.c | 17 ++++++++++++++--- @@ -121521,10 +121479,10 @@ index 27ee1c1..e525190 100644 /* -From 83e20a8f51a63aa5ac11ae6353181f1e8ef8e1c1 Mon Sep 17 00:00:00 2001 +From 660dc2931ea0ff0142d5f6c22a9ca538d8df100a Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 16 Dec 2014 10:23:48 +0000 -Subject: [PATCH 74/76] DT: Add overrides to enable i2c0, i2c1, spi and i2s +Subject: [PATCH 74/87] DT: Add overrides to enable i2c0, i2c1, spi and i2s --- arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 10 ++++++++++ @@ -121568,38 +121526,326 @@ index d8c6d15..167b22b 100644 + }; +}; -From bcdba133f20add0f1709b0dc63377b43f72042f2 Mon Sep 17 00:00:00 2001 -From: popcornmix -Date: Sat, 20 Dec 2014 19:07:31 +0000 -Subject: [PATCH 76/76] config: switch on powersave governor (will switch to - ondemand on boot) +From b030b630a4fac3c2d6a6c3aa253d7c6680e67124 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Thu, 18 Dec 2014 16:48:32 +0000 +Subject: [PATCH 75/87] lirc-rpi: Add device tree support, and a suitable + overlay +The overlay supports DT parameters that match the old module +parameters, except that gpio_in_pull should be set using the +strings "up", "down" or "off". --- - arch/arm/configs/bcmrpi_defconfig | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) + arch/arm/boot/dts/lirc-rpi-overlay.dts | 57 +++++++++++++ + arch/arm/mach-bcm2708/bcm2708_gpio.c | 12 +++ + drivers/staging/media/lirc/lirc_rpi.c | 143 ++++++++++++++++++++++++++------- + 3 files changed, 185 insertions(+), 27 deletions(-) + create mode 100644 arch/arm/boot/dts/lirc-rpi-overlay.dts -diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig -index 58ad7dc..b32c814 100644 ---- a/arch/arm/configs/bcmrpi_defconfig -+++ b/arch/arm/configs/bcmrpi_defconfig -@@ -54,9 +54,10 @@ CONFIG_KEXEC=y - CONFIG_CPU_FREQ=y - CONFIG_CPU_FREQ_STAT=m - CONFIG_CPU_FREQ_STAT_DETAILS=y --CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y --CONFIG_CPU_FREQ_GOV_POWERSAVE=y -+CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y -+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y - CONFIG_CPU_FREQ_GOV_USERSPACE=y -+CONFIG_CPU_FREQ_GOV_ONDEMAND=y - CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y - CONFIG_CPU_IDLE=y - CONFIG_VFP=y +diff --git a/arch/arm/boot/dts/lirc-rpi-overlay.dts b/arch/arm/boot/dts/lirc-rpi-overlay.dts +new file mode 100644 +index 0000000..7d5d82b +--- /dev/null ++++ b/arch/arm/boot/dts/lirc-rpi-overlay.dts +@@ -0,0 +1,57 @@ ++// Definitions for lirc-rpi module ++/dts-v1/; ++/plugin/; ++ ++/ { ++ compatible = "brcm,bcm2708"; ++ ++ fragment@0 { ++ target-path = "/"; ++ __overlay__ { ++ lirc_rpi: lirc_rpi { ++ compatible = "rpi,lirc-rpi"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&lirc_pins>; ++ status = "okay"; ++ ++ // Override autodetection of IR receiver circuit ++ // (0 = active high, 1 = active low, -1 = no override ) ++ rpi,sense = <0xffffffff>; ++ ++ // Software carrier ++ // (0 = off, 1 = on) ++ rpi,softcarrier = <1>; ++ ++ // Invert output ++ // (0 = off, 1 = on) ++ rpi,invert = <0>; ++ ++ // Enable debugging messages ++ // (0 = off, 1 = on) ++ rpi,debug = <0>; ++ }; ++ }; ++ }; ++ ++ fragment@1 { ++ target = <&gpio>; ++ __overlay__ { ++ lirc_pins: lirc_pins { ++ brcm,pins = <17 18>; ++ brcm,function = <1 0>; // out in ++ brcm,pull = <0 1>; // off down ++ }; ++ }; ++ }; ++ ++ __overrides__ { ++ gpio_out_pin = <&lirc_pins>,"brcm,pins:0"; ++ gpio_in_pin = <&lirc_pins>,"brcm,pins:4"; ++ gpio_in_pull = <&lirc_pins>,"brcm,pull:4"; ++ ++ sense = <&lirc_rpi>,"rpi,sense:0"; ++ softcarrier = <&lirc_rpi>,"rpi,softcarrier:0"; ++ invert = <&lirc_rpi>,"rpi,invert:0"; ++ debug = <&lirc_rpi>,"rpi,debug:0"; ++ }; ++}; +diff --git a/arch/arm/mach-bcm2708/bcm2708_gpio.c b/arch/arm/mach-bcm2708/bcm2708_gpio.c +index 97c8245..a094fc2 100644 +--- a/arch/arm/mach-bcm2708/bcm2708_gpio.c ++++ b/arch/arm/mach-bcm2708/bcm2708_gpio.c +@@ -90,6 +90,16 @@ static int bcm2708_set_function(struct gpio_chip *gc, unsigned offset, + return 0; + } + ++static int bcm2708_gpio_request(struct gpio_chip *chip, unsigned offset) ++{ ++ return pinctrl_request_gpio(chip->base + offset); ++} ++ ++static void bcm2708_gpio_free(struct gpio_chip *chip, unsigned offset) ++{ ++ pinctrl_free_gpio(chip->base + offset); ++} ++ + static int bcm2708_gpio_dir_in(struct gpio_chip *gc, unsigned offset) + { + return bcm2708_set_function(gc, offset, GPIO_FSEL_INPUT); +@@ -345,6 +355,8 @@ static int bcm2708_gpio_probe(struct platform_device *dev) + ucb->gc.ngpio = BCM2708_NR_GPIOS; + ucb->gc.owner = THIS_MODULE; + ++ ucb->gc.request = bcm2708_gpio_request; ++ ucb->gc.free = bcm2708_gpio_free; + ucb->gc.direction_input = bcm2708_gpio_dir_in; + ucb->gc.direction_output = bcm2708_gpio_dir_out; + ucb->gc.get = bcm2708_gpio_get; +diff --git a/drivers/staging/media/lirc/lirc_rpi.c b/drivers/staging/media/lirc/lirc_rpi.c +index 887c36b..b7d82ad 100644 +--- a/drivers/staging/media/lirc/lirc_rpi.c ++++ b/drivers/staging/media/lirc/lirc_rpi.c +@@ -40,6 +40,7 @@ + #include + #include + #include ++#include + + #include + +@@ -299,32 +300,108 @@ static int is_right_chip(struct gpio_chip *chip, void *data) + return 0; + } + ++static inline int read_bool_property(const struct device_node *np, ++ const char *propname, ++ bool *out_value) ++{ ++ u32 value = 0; ++ int err = of_property_read_u32(np, propname, &value); ++ if (err == 0) ++ *out_value = (value != 0); ++ return err; ++} ++ ++static void read_pin_settings(struct device_node *node) ++{ ++ u32 pin; ++ int index; ++ ++ for (index = 0; ++ of_property_read_u32_index( ++ node, ++ "brcm,pins", ++ index, ++ &pin) == 0; ++ index++) { ++ u32 function; ++ int err; ++ err = of_property_read_u32_index( ++ node, ++ "brcm,function", ++ index, ++ &function); ++ if (err == 0) { ++ if (function == 1) /* Output */ ++ gpio_out_pin = pin; ++ else if (function == 0) /* Input */ ++ gpio_in_pin = pin; ++ } ++ } ++} ++ + static int init_port(void) + { + int i, nlow, nhigh, ret, irq; ++ struct device_node *node; + + gpiochip = gpiochip_find("bcm2708_gpio", is_right_chip); + + if (!gpiochip) + return -ENODEV; + +- if (gpio_request(gpio_out_pin, LIRC_DRIVER_NAME " ir/out")) { +- printk(KERN_ALERT LIRC_DRIVER_NAME +- ": cant claim gpio pin %d\n", gpio_out_pin); +- ret = -ENODEV; +- goto exit_init_port; ++ node = lirc_rpi_dev->dev.of_node; ++ ++ if (node) { ++ struct device_node *pins_node; ++ ++ pins_node = of_parse_phandle(node, "pinctrl-0", 0); ++ if (!pins_node) { ++ printk(KERN_ERR LIRC_DRIVER_NAME ++ ": pinctrl settings not found!\n"); ++ ret = -EINVAL; ++ goto exit_init_port; ++ } ++ ++ read_pin_settings(pins_node); ++ ++ of_property_read_u32(node, "rpi,sense", &sense); ++ ++ read_bool_property(node, "rpi,softcarrier", &softcarrier); ++ ++ read_bool_property(node, "rpi,invert", &invert); ++ ++ read_bool_property(node, "rpi,debug", &debug); ++ + } ++ else ++ { ++ if (gpio_in_pin >= BCM2708_NR_GPIOS || ++ gpio_out_pin >= BCM2708_NR_GPIOS) { ++ ret = -EINVAL; ++ printk(KERN_ERR LIRC_DRIVER_NAME ++ ": invalid GPIO pin(s) specified!\n"); ++ goto exit_init_port; ++ } + +- if (gpio_request(gpio_in_pin, LIRC_DRIVER_NAME " ir/in")) { +- printk(KERN_ALERT LIRC_DRIVER_NAME +- ": cant claim gpio pin %d\n", gpio_in_pin); +- ret = -ENODEV; +- goto exit_gpio_free_out_pin; ++ if (gpio_request(gpio_out_pin, LIRC_DRIVER_NAME " ir/out")) { ++ printk(KERN_ALERT LIRC_DRIVER_NAME ++ ": cant claim gpio pin %d\n", gpio_out_pin); ++ ret = -ENODEV; ++ goto exit_init_port; ++ } ++ ++ if (gpio_request(gpio_in_pin, LIRC_DRIVER_NAME " ir/in")) { ++ printk(KERN_ALERT LIRC_DRIVER_NAME ++ ": cant claim gpio pin %d\n", gpio_in_pin); ++ ret = -ENODEV; ++ goto exit_gpio_free_out_pin; ++ } ++ ++ bcm2708_gpio_setpull(gpiochip, gpio_in_pin, gpio_in_pull); ++ gpiochip->direction_input(gpiochip, gpio_in_pin); ++ gpiochip->direction_output(gpiochip, gpio_out_pin, 1); + } + +- bcm2708_gpio_setpull(gpiochip, gpio_in_pin, gpio_in_pull); +- gpiochip->direction_input(gpiochip, gpio_in_pin); +- gpiochip->direction_output(gpiochip, gpio_out_pin, 1); + gpiochip->set(gpiochip, gpio_out_pin, invert); + + irq = gpiochip->to_irq(gpiochip, gpio_in_pin); +@@ -546,15 +623,23 @@ static struct lirc_driver driver = { + .owner = THIS_MODULE, + }; + ++static const struct of_device_id lirc_rpi_of_match[] = { ++ { .compatible = "rpi,lirc-rpi", }, ++ {}, ++}; ++MODULE_DEVICE_TABLE(of, lirc_rpi_of_match); ++ + static struct platform_driver lirc_rpi_driver = { + .driver = { + .name = LIRC_DRIVER_NAME, + .owner = THIS_MODULE, ++ .of_match_table = of_match_ptr(lirc_rpi_of_match), + }, + }; + + static int __init lirc_rpi_init(void) + { ++ struct device_node *node; + int result; + + /* Init read buffer. */ +@@ -569,15 +654,26 @@ static int __init lirc_rpi_init(void) + goto exit_buffer_free; + } + +- lirc_rpi_dev = platform_device_alloc(LIRC_DRIVER_NAME, 0); +- if (!lirc_rpi_dev) { +- result = -ENOMEM; +- goto exit_driver_unregister; ++ node = of_find_compatible_node(NULL, NULL, ++ lirc_rpi_of_match[0].compatible); ++ ++ if (node) { ++ /* DT-enabled */ ++ lirc_rpi_dev = of_find_device_by_node(node); ++ WARN_ON(lirc_rpi_dev->dev.of_node != node); ++ of_node_put(node); + } ++ else { ++ lirc_rpi_dev = platform_device_alloc(LIRC_DRIVER_NAME, 0); ++ if (!lirc_rpi_dev) { ++ result = -ENOMEM; ++ goto exit_driver_unregister; ++ } + +- result = platform_device_add(lirc_rpi_dev); +- if (result) +- goto exit_device_put; ++ result = platform_device_add(lirc_rpi_dev); ++ if (result) ++ goto exit_device_put; ++ } + + return 0; + +@@ -608,13 +704,6 @@ static int __init lirc_rpi_init_module(void) + if (result) + return result; + +- if (gpio_in_pin >= BCM2708_NR_GPIOS || gpio_out_pin >= BCM2708_NR_GPIOS) { +- result = -EINVAL; +- printk(KERN_ERR LIRC_DRIVER_NAME +- ": invalid GPIO pin(s) specified!\n"); +- goto exit_rpi; +- } +- + result = init_port(); + if (result < 0) + goto exit_rpi; -From 5f1c1ee8aca1f9c69b0e65bcd21065552d271013 Mon Sep 17 00:00:00 2001 +From 63b3cbcf5b9d2f7363900137016a485bc61b1764 Mon Sep 17 00:00:00 2001 From: jeanleflambeur Date: Sat, 20 Dec 2014 12:20:39 +0100 -Subject: [PATCH] Update i2c-bcm2708.c +Subject: [PATCH 76/87] Update i2c-bcm2708.c --- drivers/i2c/busses/i2c-bcm2708.c | 5 +++-- @@ -121623,3 +121869,1475 @@ index 728cb69..526129b 100644 ret = wait_for_completion_timeout(&bi->done, msecs_to_jiffies(I2C_TIMEOUT_MS)); if (ret == 0) { + +From 08e393af2b1e6cb234fa95455a6cd883e64b7e3d Mon Sep 17 00:00:00 2001 +From: notro +Date: Sat, 27 Dec 2014 13:44:05 +0100 +Subject: [PATCH 77/87] BCM2708: armctrl: add space to allocate irq descriptors + +Drivers that act as interrupt controllers need to allocate irq descriptors. +This adds room for that. + +Reported-by: chaosjug +Signed-off-by: Noralf Tronnes +--- + arch/arm/mach-bcm2708/armctrl.c | 5 +++-- + arch/arm/mach-bcm2708/include/mach/irqs.h | 6 ++++-- + 2 files changed, 7 insertions(+), 4 deletions(-) + +diff --git a/arch/arm/mach-bcm2708/armctrl.c b/arch/arm/mach-bcm2708/armctrl.c +index 42f5e1c..9734b0d 100644 +--- a/arch/arm/mach-bcm2708/armctrl.c ++++ b/arch/arm/mach-bcm2708/armctrl.c +@@ -167,7 +167,8 @@ void __init armctrl_dt_init(void) + if (!np) + return; + +- domain = irq_domain_add_legacy(np, NR_IRQS, IRQ_ARMCTRL_START, 0, ++ domain = irq_domain_add_legacy(np, BCM2708_ALLOC_IRQS, ++ IRQ_ARMCTRL_START, 0, + &armctrl_ops, NULL); + WARN_ON(!domain); + } +@@ -298,7 +299,7 @@ int __init armctrl_init(void __iomem * base, unsigned int irq_start, + { + unsigned int irq; + +- for (irq = 0; irq < NR_IRQS; irq++) { ++ for (irq = 0; irq < BCM2708_ALLOC_IRQS; irq++) { + unsigned int data = irq; + if (irq >= INTERRUPT_JPEG && irq <= INTERRUPT_ARASANSDIO) + data = remap_irqs[irq - INTERRUPT_JPEG]; +diff --git a/arch/arm/mach-bcm2708/include/mach/irqs.h b/arch/arm/mach-bcm2708/include/mach/irqs.h +index 4299054..45152ed 100644 +--- a/arch/arm/mach-bcm2708/include/mach/irqs.h ++++ b/arch/arm/mach-bcm2708/include/mach/irqs.h +@@ -191,7 +191,9 @@ + #define FIQ_IRQS (64 + 21) + #define GPIO_IRQ_START (HARD_IRQS + FIQ_IRQS) + #define GPIO_IRQS (32*5) +-#define SPARE_IRQS (64) +-#define NR_IRQS (HARD_IRQS+FIQ_IRQS+GPIO_IRQS+SPARE_IRQS) ++#define SPARE_ALLOC_IRQS 64 ++#define BCM2708_ALLOC_IRQS (HARD_IRQS+FIQ_IRQS+GPIO_IRQS+SPARE_ALLOC_IRQS) ++#define FREE_IRQS 128 ++#define NR_IRQS (BCM2708_ALLOC_IRQS+FREE_IRQS) + + #endif /* _BCM2708_IRQS_H_ */ + +From a4954d353cc993811994f527ee11cffea3c075bd Mon Sep 17 00:00:00 2001 +From: notro +Date: Sat, 27 Dec 2014 13:46:00 +0100 +Subject: [PATCH 78/87] BCM2708: use pinctrl-bcm2835 + +Use pinctrl-bcm2835 instead of the pinctrl-bcm2708 and bcm2708_gpio +combination. + +Signed-off-by: Noralf Tronnes +--- + arch/arm/boot/dts/bcm2708.dtsi | 7 ++++++- + arch/arm/mach-bcm2708/Kconfig | 4 ++-- + arch/arm/mach-bcm2708/bcm2708.c | 2 +- + drivers/pinctrl/pinctrl-bcm2835.c | 2 +- + 4 files changed, 10 insertions(+), 5 deletions(-) + +diff --git a/arch/arm/boot/dts/bcm2708.dtsi b/arch/arm/boot/dts/bcm2708.dtsi +index 4b86aaa..6b36128 100644 +--- a/arch/arm/boot/dts/bcm2708.dtsi ++++ b/arch/arm/boot/dts/bcm2708.dtsi +@@ -25,10 +25,15 @@ + }; + + gpio: gpio { +- compatible = "brcm,bcm2708-pinctrl"; ++ compatible = "brcm,bcm2835-gpio"; + reg = <0x7e200000 0xb4>; ++ interrupts = <2 17>, <2 18>; ++ + gpio-controller; + #gpio-cells = <2>; ++ ++ interrupt-controller; ++ #interrupt-cells = <2>; + }; + + i2s: i2s@7e203000 { +diff --git a/arch/arm/mach-bcm2708/Kconfig b/arch/arm/mach-bcm2708/Kconfig +index 05945d6..4cfae55 100644 +--- a/arch/arm/mach-bcm2708/Kconfig ++++ b/arch/arm/mach-bcm2708/Kconfig +@@ -14,9 +14,9 @@ config BCM2708_DT + depends on MACH_BCM2708 + default n + select USE_OF ++ select ARCH_REQUIRE_GPIOLIB + select PINCTRL +- select PINCTRL_BCM2708 +- select BCM2708_GPIO ++ select PINCTRL_BCM2835 + help + Enable Device Tree support for BCM2708 + +diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c +index 199d8a5..2c6a29d 100644 +--- a/arch/arm/mach-bcm2708/bcm2708.c ++++ b/arch/arm/mach-bcm2708/bcm2708.c +@@ -838,7 +838,7 @@ void __init bcm2708_init(void) + bcm_register_device(&bcm2708_dmaman_device); + bcm_register_device(&bcm2708_vcio_device); + #ifdef CONFIG_BCM2708_GPIO +- bcm_register_device(&bcm2708_gpio_device); ++ bcm_register_device_dt(&bcm2708_gpio_device); + #endif + #if defined(CONFIG_W1_MASTER_GPIO) || defined(CONFIG_W1_MASTER_GPIO_MODULE) + w1_gpio_pdata.pin = w1_gpio_pin; +diff --git a/drivers/pinctrl/pinctrl-bcm2835.c b/drivers/pinctrl/pinctrl-bcm2835.c +index eabba02..962e180 100644 +--- a/drivers/pinctrl/pinctrl-bcm2835.c ++++ b/drivers/pinctrl/pinctrl-bcm2835.c +@@ -382,7 +382,7 @@ static struct gpio_chip bcm2835_gpio_chip = { + .get = bcm2835_gpio_get, + .set = bcm2835_gpio_set, + .to_irq = bcm2835_gpio_to_irq, +- .base = -1, ++ .base = 0, + .ngpio = BCM2835_NUM_GPIOS, + .can_sleep = false, + }; + +From b2f0a5c45d74eb6c5a49e5e8065f6886375c42c5 Mon Sep 17 00:00:00 2001 +From: notro +Date: Sat, 27 Dec 2014 13:47:18 +0100 +Subject: [PATCH 79/87] pinctrl: remove bcm2708 driver + +There is no need for pinctrl-bcm2708 anymore with pinctrl-bcm2835 +working on ARCH_BCM2708. + +Signed-off-by: Noralf Tronnes +--- + drivers/pinctrl/Kconfig | 5 - + drivers/pinctrl/Makefile | 1 - + drivers/pinctrl/pinctrl-bcm2708.c | 762 -------------------------------------- + 3 files changed, 768 deletions(-) + delete mode 100644 drivers/pinctrl/pinctrl-bcm2708.c + +diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig +index dd631cc..c6a66de 100644 +--- a/drivers/pinctrl/Kconfig ++++ b/drivers/pinctrl/Kconfig +@@ -79,11 +79,6 @@ config PINCTRL_BAYTRAIL + + Requires ACPI device enumeration code to set up a platform device. + +-config PINCTRL_BCM2708 +- bool +- select PINMUX +- select PINCONF +- + config PINCTRL_BCM2835 + bool + select PINMUX +diff --git a/drivers/pinctrl/Makefile b/drivers/pinctrl/Makefile +index 12ae1bd..51f52d3 100644 +--- a/drivers/pinctrl/Makefile ++++ b/drivers/pinctrl/Makefile +@@ -14,7 +14,6 @@ obj-$(CONFIG_PINCTRL_AS3722) += pinctrl-as3722.o + obj-$(CONFIG_PINCTRL_BF54x) += pinctrl-adi2-bf54x.o + obj-$(CONFIG_PINCTRL_BF60x) += pinctrl-adi2-bf60x.o + obj-$(CONFIG_PINCTRL_AT91) += pinctrl-at91.o +-obj-$(CONFIG_PINCTRL_BCM2708) += pinctrl-bcm2708.o + obj-$(CONFIG_PINCTRL_BCM2835) += pinctrl-bcm2835.o + obj-$(CONFIG_PINCTRL_BAYTRAIL) += pinctrl-baytrail.o + obj-$(CONFIG_PINCTRL_BCM281XX) += pinctrl-bcm281xx.o +diff --git a/drivers/pinctrl/pinctrl-bcm2708.c b/drivers/pinctrl/pinctrl-bcm2708.c +deleted file mode 100644 +index f395e95..0000000 +--- a/drivers/pinctrl/pinctrl-bcm2708.c ++++ /dev/null +@@ -1,762 +0,0 @@ +-/* +- * Driver for Broadcom BCM2708 GPIO unit (pinctrl only) +- * +- * Copyright (C) 2012 Chris Boot, Simon Arlott, Stephen Warren +- * Copyright (C) 2014 Noralf Tronnes +- * +- * This driver is a verbatim copy of the pinctrl-bcm2835 driver, except for: +- * - changed 2835 to 2708 +- * - gpio_chip and IRQ part are removed +- * - Probing function is changed. +- * +- * Because armctrl sets up the gpio irqs, we use the bcm2708_gpio driver. +- * This hack is used to be able to support both DT and non-DT builds. +- * It's not possible to set trigger type and level flags for IRQs in the DT. +- * +- * This driver is inspired by: +- * pinctrl-nomadik.c, please see original file for copyright information +- * pinctrl-tegra.c, please see original file for copyright information +- * +- * 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. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- */ +- +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +- +-#define MODULE_NAME "pinctrl-bcm2708" +-#define BCM2708_NUM_GPIOS 54 +-#define BCM2708_NUM_BANKS 2 +- +-#define BCM2708_PIN_BITMAP_SZ \ +- DIV_ROUND_UP(BCM2708_NUM_GPIOS, sizeof(unsigned long) * 8) +- +-/* GPIO register offsets */ +-#define GPFSEL0 0x0 /* Function Select */ +-#define GPSET0 0x1c /* Pin Output Set */ +-#define GPCLR0 0x28 /* Pin Output Clear */ +-#define GPLEV0 0x34 /* Pin Level */ +-#define GPEDS0 0x40 /* Pin Event Detect Status */ +-#define GPREN0 0x4c /* Pin Rising Edge Detect Enable */ +-#define GPFEN0 0x58 /* Pin Falling Edge Detect Enable */ +-#define GPHEN0 0x64 /* Pin High Detect Enable */ +-#define GPLEN0 0x70 /* Pin Low Detect Enable */ +-#define GPAREN0 0x7c /* Pin Async Rising Edge Detect */ +-#define GPAFEN0 0x88 /* Pin Async Falling Edge Detect */ +-#define GPPUD 0x94 /* Pin Pull-up/down Enable */ +-#define GPPUDCLK0 0x98 /* Pin Pull-up/down Enable Clock */ +- +-#define FSEL_REG(p) (GPFSEL0 + (((p) / 10) * 4)) +-#define FSEL_SHIFT(p) (((p) % 10) * 3) +-#define GPIO_REG_OFFSET(p) ((p) / 32) +-#define GPIO_REG_SHIFT(p) ((p) % 32) +- +-enum bcm2708_pinconf_param { +- /* argument: bcm2708_pinconf_pull */ +- BCM2708_PINCONF_PARAM_PULL, +-}; +- +-enum bcm2708_pinconf_pull { +- BCM2708_PINCONFIG_PULL_NONE, +- BCM2708_PINCONFIG_PULL_DOWN, +- BCM2708_PINCONFIG_PULL_UP, +-}; +- +-#define BCM2708_PINCONF_PACK(_param_, _arg_) ((_param_) << 16 | (_arg_)) +-#define BCM2708_PINCONF_UNPACK_PARAM(_conf_) ((_conf_) >> 16) +-#define BCM2708_PINCONF_UNPACK_ARG(_conf_) ((_conf_) & 0xffff) +- +-struct bcm2708_gpio_irqdata { +- struct bcm2708_pinctrl *pc; +- int bank; +-}; +- +-struct bcm2708_pinctrl { +- struct device *dev; +- void __iomem *base; +- int irq[BCM2708_NUM_BANKS]; +- +- /* note: locking assumes each bank will have its own unsigned long */ +- unsigned long enabled_irq_map[BCM2708_NUM_BANKS]; +- unsigned int irq_type[BCM2708_NUM_GPIOS]; +- +- struct pinctrl_dev *pctl_dev; +- struct irq_domain *irq_domain; +- struct gpio_chip gpio_chip; +- struct pinctrl_gpio_range gpio_range; +- +- struct bcm2708_gpio_irqdata irq_data[BCM2708_NUM_BANKS]; +- spinlock_t irq_lock[BCM2708_NUM_BANKS]; +-}; +- +-/* pins are just named GPIO0..GPIO53 */ +-#define BCM2708_GPIO_PIN(a) PINCTRL_PIN(a, "gpio" #a) +-static struct pinctrl_pin_desc bcm2708_gpio_pins[] = { +- BCM2708_GPIO_PIN(0), +- BCM2708_GPIO_PIN(1), +- BCM2708_GPIO_PIN(2), +- BCM2708_GPIO_PIN(3), +- BCM2708_GPIO_PIN(4), +- BCM2708_GPIO_PIN(5), +- BCM2708_GPIO_PIN(6), +- BCM2708_GPIO_PIN(7), +- BCM2708_GPIO_PIN(8), +- BCM2708_GPIO_PIN(9), +- BCM2708_GPIO_PIN(10), +- BCM2708_GPIO_PIN(11), +- BCM2708_GPIO_PIN(12), +- BCM2708_GPIO_PIN(13), +- BCM2708_GPIO_PIN(14), +- BCM2708_GPIO_PIN(15), +- BCM2708_GPIO_PIN(16), +- BCM2708_GPIO_PIN(17), +- BCM2708_GPIO_PIN(18), +- BCM2708_GPIO_PIN(19), +- BCM2708_GPIO_PIN(20), +- BCM2708_GPIO_PIN(21), +- BCM2708_GPIO_PIN(22), +- BCM2708_GPIO_PIN(23), +- BCM2708_GPIO_PIN(24), +- BCM2708_GPIO_PIN(25), +- BCM2708_GPIO_PIN(26), +- BCM2708_GPIO_PIN(27), +- BCM2708_GPIO_PIN(28), +- BCM2708_GPIO_PIN(29), +- BCM2708_GPIO_PIN(30), +- BCM2708_GPIO_PIN(31), +- BCM2708_GPIO_PIN(32), +- BCM2708_GPIO_PIN(33), +- BCM2708_GPIO_PIN(34), +- BCM2708_GPIO_PIN(35), +- BCM2708_GPIO_PIN(36), +- BCM2708_GPIO_PIN(37), +- BCM2708_GPIO_PIN(38), +- BCM2708_GPIO_PIN(39), +- BCM2708_GPIO_PIN(40), +- BCM2708_GPIO_PIN(41), +- BCM2708_GPIO_PIN(42), +- BCM2708_GPIO_PIN(43), +- BCM2708_GPIO_PIN(44), +- BCM2708_GPIO_PIN(45), +- BCM2708_GPIO_PIN(46), +- BCM2708_GPIO_PIN(47), +- BCM2708_GPIO_PIN(48), +- BCM2708_GPIO_PIN(49), +- BCM2708_GPIO_PIN(50), +- BCM2708_GPIO_PIN(51), +- BCM2708_GPIO_PIN(52), +- BCM2708_GPIO_PIN(53), +-}; +- +-/* one pin per group */ +-static const char * const bcm2708_gpio_groups[] = { +- "gpio0", +- "gpio1", +- "gpio2", +- "gpio3", +- "gpio4", +- "gpio5", +- "gpio6", +- "gpio7", +- "gpio8", +- "gpio9", +- "gpio10", +- "gpio11", +- "gpio12", +- "gpio13", +- "gpio14", +- "gpio15", +- "gpio16", +- "gpio17", +- "gpio18", +- "gpio19", +- "gpio20", +- "gpio21", +- "gpio22", +- "gpio23", +- "gpio24", +- "gpio25", +- "gpio26", +- "gpio27", +- "gpio28", +- "gpio29", +- "gpio30", +- "gpio31", +- "gpio32", +- "gpio33", +- "gpio34", +- "gpio35", +- "gpio36", +- "gpio37", +- "gpio38", +- "gpio39", +- "gpio40", +- "gpio41", +- "gpio42", +- "gpio43", +- "gpio44", +- "gpio45", +- "gpio46", +- "gpio47", +- "gpio48", +- "gpio49", +- "gpio50", +- "gpio51", +- "gpio52", +- "gpio53", +-}; +- +-enum bcm2708_fsel { +- BCM2708_FSEL_GPIO_IN = 0, +- BCM2708_FSEL_GPIO_OUT = 1, +- BCM2708_FSEL_ALT0 = 4, +- BCM2708_FSEL_ALT1 = 5, +- BCM2708_FSEL_ALT2 = 6, +- BCM2708_FSEL_ALT3 = 7, +- BCM2708_FSEL_ALT4 = 3, +- BCM2708_FSEL_ALT5 = 2, +- BCM2708_FSEL_COUNT = 8, +- BCM2708_FSEL_MASK = 0x7, +-}; +- +-static const char * const bcm2708_functions[BCM2708_FSEL_COUNT] = { +- [BCM2708_FSEL_GPIO_IN] = "gpio_in", +- [BCM2708_FSEL_GPIO_OUT] = "gpio_out", +- [BCM2708_FSEL_ALT0] = "alt0", +- [BCM2708_FSEL_ALT1] = "alt1", +- [BCM2708_FSEL_ALT2] = "alt2", +- [BCM2708_FSEL_ALT3] = "alt3", +- [BCM2708_FSEL_ALT4] = "alt4", +- [BCM2708_FSEL_ALT5] = "alt5", +-}; +- +-static const char * const irq_type_names[] = { +- [IRQ_TYPE_NONE] = "none", +- [IRQ_TYPE_EDGE_RISING] = "edge-rising", +- [IRQ_TYPE_EDGE_FALLING] = "edge-falling", +- [IRQ_TYPE_EDGE_BOTH] = "edge-both", +- [IRQ_TYPE_LEVEL_HIGH] = "level-high", +- [IRQ_TYPE_LEVEL_LOW] = "level-low", +-}; +- +-static inline u32 bcm2708_gpio_rd(struct bcm2708_pinctrl *pc, unsigned reg) +-{ +- return readl(pc->base + reg); +-} +- +-static inline void bcm2708_gpio_wr(struct bcm2708_pinctrl *pc, unsigned reg, +- u32 val) +-{ +- writel(val, pc->base + reg); +-} +- +-static inline int bcm2708_gpio_get_bit(struct bcm2708_pinctrl *pc, unsigned reg, +- unsigned bit) +-{ +- reg += GPIO_REG_OFFSET(bit) * 4; +- return (bcm2708_gpio_rd(pc, reg) >> GPIO_REG_SHIFT(bit)) & 1; +-} +- +-/* note NOT a read/modify/write cycle */ +-static inline void bcm2708_gpio_set_bit(struct bcm2708_pinctrl *pc, +- unsigned reg, unsigned bit) +-{ +- reg += GPIO_REG_OFFSET(bit) * 4; +- bcm2708_gpio_wr(pc, reg, BIT(GPIO_REG_SHIFT(bit))); +-} +- +-static inline enum bcm2708_fsel bcm2708_pinctrl_fsel_get( +- struct bcm2708_pinctrl *pc, unsigned pin) +-{ +- u32 val = bcm2708_gpio_rd(pc, FSEL_REG(pin)); +- enum bcm2708_fsel status = (val >> FSEL_SHIFT(pin)) & BCM2708_FSEL_MASK; +- +- dev_dbg(pc->dev, "get %08x (%u => %s)\n", val, pin, +- bcm2708_functions[status]); +- +- return status; +-} +- +-static inline void bcm2708_pinctrl_fsel_set( +- struct bcm2708_pinctrl *pc, unsigned pin, +- enum bcm2708_fsel fsel) +-{ +- u32 val = bcm2708_gpio_rd(pc, FSEL_REG(pin)); +- enum bcm2708_fsel cur = (val >> FSEL_SHIFT(pin)) & BCM2708_FSEL_MASK; +- +- dev_dbg(pc->dev, "read %08x (%u => %s)\n", val, pin, +- bcm2708_functions[cur]); +- +- if (cur == fsel) +- return; +- +- if (cur != BCM2708_FSEL_GPIO_IN && fsel != BCM2708_FSEL_GPIO_IN) { +- /* always transition through GPIO_IN */ +- val &= ~(BCM2708_FSEL_MASK << FSEL_SHIFT(pin)); +- val |= BCM2708_FSEL_GPIO_IN << FSEL_SHIFT(pin); +- +- dev_dbg(pc->dev, "trans %08x (%u <= %s)\n", val, pin, +- bcm2708_functions[BCM2708_FSEL_GPIO_IN]); +- bcm2708_gpio_wr(pc, FSEL_REG(pin), val); +- } +- +- val &= ~(BCM2708_FSEL_MASK << FSEL_SHIFT(pin)); +- val |= fsel << FSEL_SHIFT(pin); +- +- dev_dbg(pc->dev, "write %08x (%u <= %s)\n", val, pin, +- bcm2708_functions[fsel]); +- bcm2708_gpio_wr(pc, FSEL_REG(pin), val); +-} +- +-static int bcm2708_pctl_get_groups_count(struct pinctrl_dev *pctldev) +-{ +- return ARRAY_SIZE(bcm2708_gpio_groups); +-} +- +-static const char *bcm2708_pctl_get_group_name(struct pinctrl_dev *pctldev, +- unsigned selector) +-{ +- return bcm2708_gpio_groups[selector]; +-} +- +-static int bcm2708_pctl_get_group_pins(struct pinctrl_dev *pctldev, +- unsigned selector, +- const unsigned **pins, +- unsigned *num_pins) +-{ +- *pins = &bcm2708_gpio_pins[selector].number; +- *num_pins = 1; +- +- return 0; +-} +- +-static void bcm2708_pctl_pin_dbg_show(struct pinctrl_dev *pctldev, +- struct seq_file *s, +- unsigned offset) +-{ +- struct bcm2708_pinctrl *pc = pinctrl_dev_get_drvdata(pctldev); +- enum bcm2708_fsel fsel = bcm2708_pinctrl_fsel_get(pc, offset); +- const char *fname = bcm2708_functions[fsel]; +- int value = bcm2708_gpio_get_bit(pc, GPLEV0, offset); +- int irq = irq_find_mapping(pc->irq_domain, offset); +- +- seq_printf(s, "function %s in %s; irq %d (%s)", +- fname, value ? "hi" : "lo", +- irq, irq_type_names[pc->irq_type[offset]]); +-} +- +-static void bcm2708_pctl_dt_free_map(struct pinctrl_dev *pctldev, +- struct pinctrl_map *maps, unsigned num_maps) +-{ +- int i; +- +- for (i = 0; i < num_maps; i++) +- if (maps[i].type == PIN_MAP_TYPE_CONFIGS_PIN) +- kfree(maps[i].data.configs.configs); +- +- kfree(maps); +-} +- +-static int bcm2708_pctl_dt_node_to_map_func(struct bcm2708_pinctrl *pc, +- struct device_node *np, u32 pin, u32 fnum, +- struct pinctrl_map **maps) +-{ +- struct pinctrl_map *map = *maps; +- +- if (fnum >= ARRAY_SIZE(bcm2708_functions)) { +- dev_err(pc->dev, "%s: invalid brcm,function %d\n", +- of_node_full_name(np), fnum); +- return -EINVAL; +- } +- +- map->type = PIN_MAP_TYPE_MUX_GROUP; +- map->data.mux.group = bcm2708_gpio_groups[pin]; +- map->data.mux.function = bcm2708_functions[fnum]; +- (*maps)++; +- +- return 0; +-} +- +-static int bcm2708_pctl_dt_node_to_map_pull(struct bcm2708_pinctrl *pc, +- struct device_node *np, u32 pin, u32 pull, +- struct pinctrl_map **maps) +-{ +- struct pinctrl_map *map = *maps; +- unsigned long *configs; +- +- if (pull > 2) { +- dev_err(pc->dev, "%s: invalid brcm,pull %d\n", +- of_node_full_name(np), pull); +- return -EINVAL; +- } +- +- configs = kzalloc(sizeof(*configs), GFP_KERNEL); +- if (!configs) +- return -ENOMEM; +- configs[0] = BCM2708_PINCONF_PACK(BCM2708_PINCONF_PARAM_PULL, pull); +- +- map->type = PIN_MAP_TYPE_CONFIGS_PIN; +- map->data.configs.group_or_pin = bcm2708_gpio_pins[pin].name; +- map->data.configs.configs = configs; +- map->data.configs.num_configs = 1; +- (*maps)++; +- +- return 0; +-} +- +-static int bcm2708_pctl_dt_node_to_map(struct pinctrl_dev *pctldev, +- struct device_node *np, +- struct pinctrl_map **map, unsigned *num_maps) +-{ +- struct bcm2708_pinctrl *pc = pinctrl_dev_get_drvdata(pctldev); +- struct property *pins, *funcs, *pulls; +- int num_pins, num_funcs, num_pulls, maps_per_pin; +- struct pinctrl_map *maps, *cur_map; +- int i, err; +- u32 pin, func, pull; +- +- pins = of_find_property(np, "brcm,pins", NULL); +- if (!pins) { +- dev_err(pc->dev, "%s: missing brcm,pins property\n", +- of_node_full_name(np)); +- return -EINVAL; +- } +- +- funcs = of_find_property(np, "brcm,function", NULL); +- pulls = of_find_property(np, "brcm,pull", NULL); +- +- if (!funcs && !pulls) { +- dev_err(pc->dev, +- "%s: neither brcm,function nor brcm,pull specified\n", +- of_node_full_name(np)); +- return -EINVAL; +- } +- +- num_pins = pins->length / 4; +- num_funcs = funcs ? (funcs->length / 4) : 0; +- num_pulls = pulls ? (pulls->length / 4) : 0; +- +- if (num_funcs > 1 && num_funcs != num_pins) { +- dev_err(pc->dev, +- "%s: brcm,function must have 1 or %d entries\n", +- of_node_full_name(np), num_pins); +- return -EINVAL; +- } +- +- if (num_pulls > 1 && num_pulls != num_pins) { +- dev_err(pc->dev, +- "%s: brcm,pull must have 1 or %d entries\n", +- of_node_full_name(np), num_pins); +- return -EINVAL; +- } +- +- maps_per_pin = 0; +- if (num_funcs) +- maps_per_pin++; +- if (num_pulls) +- maps_per_pin++; +- cur_map = maps = kzalloc(num_pins * maps_per_pin * sizeof(*maps), +- GFP_KERNEL); +- if (!maps) +- return -ENOMEM; +- +- for (i = 0; i < num_pins; i++) { +- err = of_property_read_u32_index(np, "brcm,pins", i, &pin); +- if (err) +- goto out; +- if (pin >= ARRAY_SIZE(bcm2708_gpio_pins)) { +- dev_err(pc->dev, "%s: invalid brcm,pins value %d\n", +- of_node_full_name(np), pin); +- err = -EINVAL; +- goto out; +- } +- +- if (num_funcs) { +- err = of_property_read_u32_index(np, "brcm,function", +- (num_funcs > 1) ? i : 0, &func); +- if (err) +- goto out; +- err = bcm2708_pctl_dt_node_to_map_func(pc, np, pin, +- func, &cur_map); +- if (err) +- goto out; +- } +- if (num_pulls) { +- err = of_property_read_u32_index(np, "brcm,pull", +- (num_funcs > 1) ? i : 0, &pull); +- if (err) +- goto out; +- err = bcm2708_pctl_dt_node_to_map_pull(pc, np, pin, +- pull, &cur_map); +- if (err) +- goto out; +- } +- } +- +- *map = maps; +- *num_maps = num_pins * maps_per_pin; +- +- return 0; +- +-out: +- kfree(maps); +- return err; +-} +- +-static const struct pinctrl_ops bcm2708_pctl_ops = { +- .get_groups_count = bcm2708_pctl_get_groups_count, +- .get_group_name = bcm2708_pctl_get_group_name, +- .get_group_pins = bcm2708_pctl_get_group_pins, +- .pin_dbg_show = bcm2708_pctl_pin_dbg_show, +- .dt_node_to_map = bcm2708_pctl_dt_node_to_map, +- .dt_free_map = bcm2708_pctl_dt_free_map, +-}; +- +-static int bcm2708_pmx_get_functions_count(struct pinctrl_dev *pctldev) +-{ +- return BCM2708_FSEL_COUNT; +-} +- +-static const char *bcm2708_pmx_get_function_name(struct pinctrl_dev *pctldev, +- unsigned selector) +-{ +- return bcm2708_functions[selector]; +-} +- +-static int bcm2708_pmx_get_function_groups(struct pinctrl_dev *pctldev, +- unsigned selector, +- const char * const **groups, +- unsigned * const num_groups) +-{ +- /* every pin can do every function */ +- *groups = bcm2708_gpio_groups; +- *num_groups = ARRAY_SIZE(bcm2708_gpio_groups); +- +- return 0; +-} +- +-static int bcm2708_pmx_set(struct pinctrl_dev *pctldev, +- unsigned func_selector, +- unsigned group_selector) +-{ +- struct bcm2708_pinctrl *pc = pinctrl_dev_get_drvdata(pctldev); +- +- bcm2708_pinctrl_fsel_set(pc, group_selector, func_selector); +- +- return 0; +-} +- +-static void bcm2708_pmx_gpio_disable_free(struct pinctrl_dev *pctldev, +- struct pinctrl_gpio_range *range, +- unsigned offset) +-{ +- struct bcm2708_pinctrl *pc = pinctrl_dev_get_drvdata(pctldev); +- +- /* disable by setting to GPIO_IN */ +- bcm2708_pinctrl_fsel_set(pc, offset, BCM2708_FSEL_GPIO_IN); +-} +- +-static int bcm2708_pmx_gpio_set_direction(struct pinctrl_dev *pctldev, +- struct pinctrl_gpio_range *range, +- unsigned offset, +- bool input) +-{ +- struct bcm2708_pinctrl *pc = pinctrl_dev_get_drvdata(pctldev); +- enum bcm2708_fsel fsel = input ? +- BCM2708_FSEL_GPIO_IN : BCM2708_FSEL_GPIO_OUT; +- +- bcm2708_pinctrl_fsel_set(pc, offset, fsel); +- +- return 0; +-} +- +-static const struct pinmux_ops bcm2708_pmx_ops = { +- .get_functions_count = bcm2708_pmx_get_functions_count, +- .get_function_name = bcm2708_pmx_get_function_name, +- .get_function_groups = bcm2708_pmx_get_function_groups, +- .set_mux = bcm2708_pmx_set, +- .gpio_disable_free = bcm2708_pmx_gpio_disable_free, +- .gpio_set_direction = bcm2708_pmx_gpio_set_direction, +-}; +- +-static int bcm2708_pinconf_get(struct pinctrl_dev *pctldev, +- unsigned pin, unsigned long *config) +-{ +- /* No way to read back config in HW */ +- return -ENOTSUPP; +-} +- +-static int bcm2708_pinconf_set(struct pinctrl_dev *pctldev, +- unsigned pin, unsigned long *configs, +- unsigned num_configs) +-{ +- struct bcm2708_pinctrl *pc = pinctrl_dev_get_drvdata(pctldev); +- enum bcm2708_pinconf_param param; +- u16 arg; +- u32 off, bit; +- int i; +- +- for (i = 0; i < num_configs; i++) { +- param = BCM2708_PINCONF_UNPACK_PARAM(configs[i]); +- arg = BCM2708_PINCONF_UNPACK_ARG(configs[i]); +- +- dev_dbg(pc->dev, "configure pin %u (%s) = %04X\n", pin, bcm2708_gpio_groups[pin], arg); +- if (param != BCM2708_PINCONF_PARAM_PULL) +- return -EINVAL; +- +- off = GPIO_REG_OFFSET(pin); +- bit = GPIO_REG_SHIFT(pin); +- +- bcm2708_gpio_wr(pc, GPPUD, arg & 3); +- /* +- * Docs say to wait 150 cycles, but not of what. We assume a +- * 1 MHz clock here, which is pretty slow... +- */ +- udelay(150); +- bcm2708_gpio_wr(pc, GPPUDCLK0 + (off * 4), BIT(bit)); +- udelay(150); +- bcm2708_gpio_wr(pc, GPPUDCLK0 + (off * 4), 0); +- } /* for each config */ +- +- return 0; +-} +- +-static const struct pinconf_ops bcm2708_pinconf_ops = { +- .pin_config_get = bcm2708_pinconf_get, +- .pin_config_set = bcm2708_pinconf_set, +-}; +- +-static struct pinctrl_desc bcm2708_pinctrl_desc = { +- .name = MODULE_NAME, +- .pins = bcm2708_gpio_pins, +- .npins = ARRAY_SIZE(bcm2708_gpio_pins), +- .pctlops = &bcm2708_pctl_ops, +- .pmxops = &bcm2708_pmx_ops, +- .confops = &bcm2708_pinconf_ops, +- .owner = THIS_MODULE, +-}; +- +-static struct pinctrl_gpio_range bcm2708_pinctrl_gpio_range = { +- .name = MODULE_NAME, +- .npins = BCM2708_NUM_GPIOS, +-}; +- +-/* bcm2708_gpio has base=0 */ +-static int bcm2708_pinctrl_gpiochip_find(struct gpio_chip *gc, void *data) +-{ +- pr_debug("%s: base = %d\n", __func__, gc->base); +- return gc->base == 0 ? 1 : 0; +-} +- +-static int bcm2708_pinctrl_probe(struct platform_device *pdev) +-{ +- struct device *dev = &pdev->dev; +- struct device_node *np = dev->of_node; +- struct bcm2708_pinctrl *pc; +- struct gpio_chip *gc; +- struct resource iomem; +- int err; +- BUILD_BUG_ON(ARRAY_SIZE(bcm2708_gpio_pins) != BCM2708_NUM_GPIOS); +- BUILD_BUG_ON(ARRAY_SIZE(bcm2708_gpio_groups) != BCM2708_NUM_GPIOS); +- +- /* use gpio_chip registered by the bcm2708_gpio driver */ +- gc = gpiochip_find(NULL, bcm2708_pinctrl_gpiochip_find); +- if (!gc) +- return -EPROBE_DEFER; +- +- gc->of_node = np; +- gc->of_gpio_n_cells = 2; +- gc->of_xlate = of_gpio_simple_xlate; +- +- pc = devm_kzalloc(dev, sizeof(*pc), GFP_KERNEL); +- if (!pc) +- return -ENOMEM; +- +- platform_set_drvdata(pdev, pc); +- pc->dev = dev; +- +- err = of_address_to_resource(np, 0, &iomem); +- if (err) { +- dev_err(dev, "could not get IO memory\n"); +- return err; +- } +- +- pc->base = devm_ioremap_resource(dev, &iomem); +- if (IS_ERR(pc->base)) +- return PTR_ERR(pc->base); +- +- pc->gpio_chip = *gc; +- +- pc->pctl_dev = pinctrl_register(&bcm2708_pinctrl_desc, dev, pc); +- if (!pc->pctl_dev) +- return -EINVAL; +- +- pc->gpio_range = bcm2708_pinctrl_gpio_range; +- pc->gpio_range.base = pc->gpio_chip.base; +- pc->gpio_range.gc = &pc->gpio_chip; +- pinctrl_add_gpio_range(pc->pctl_dev, &pc->gpio_range); +- +- return 0; +-} +- +-static int bcm2708_pinctrl_remove(struct platform_device *pdev) +-{ +- struct bcm2708_pinctrl *pc = platform_get_drvdata(pdev); +- +- pinctrl_unregister(pc->pctl_dev); +- gpiochip_remove(&pc->gpio_chip); +- +- return 0; +-} +- +-static struct of_device_id bcm2708_pinctrl_match[] = { +- { .compatible = "brcm,bcm2708-pinctrl" }, +- {} +-}; +-MODULE_DEVICE_TABLE(of, bcm2708_pinctrl_match); +- +-static struct platform_driver bcm2708_pinctrl_driver = { +- .probe = bcm2708_pinctrl_probe, +- .remove = bcm2708_pinctrl_remove, +- .driver = { +- .name = MODULE_NAME, +- .owner = THIS_MODULE, +- .of_match_table = bcm2708_pinctrl_match, +- }, +-}; +-module_platform_driver(bcm2708_pinctrl_driver); +- +-MODULE_AUTHOR("Chris Boot, Simon Arlott, Stephen Warren, Noralf Tronnes"); +-MODULE_DESCRIPTION("BCM2708 Pin control driver"); +-MODULE_LICENSE("GPL"); + +From b84d7687baa098135531e9df1c0ca4f58f9647ee Mon Sep 17 00:00:00 2001 +From: notro +Date: Sat, 27 Dec 2014 13:58:37 +0100 +Subject: [PATCH 80/87] BCM2708: armctrl: remove irq bank 3 + +irq bank 3 was needed by the pinctrl-bcm2708 and bcm2708_gpio +combination. It is no longer required. + +Signed-off-by: Noralf Tronnes +--- + arch/arm/mach-bcm2708/armctrl.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/arch/arm/mach-bcm2708/armctrl.c b/arch/arm/mach-bcm2708/armctrl.c +index 9734b0d..74bacb3 100644 +--- a/arch/arm/mach-bcm2708/armctrl.c ++++ b/arch/arm/mach-bcm2708/armctrl.c +@@ -84,7 +84,7 @@ static void armctrl_unmask_irq(struct irq_data *d) + #ifdef CONFIG_OF + + #define NR_IRQS_BANK0 21 +-#define NR_BANKS 3 + 1 /* bank 3 is used for GPIO interrupts */ ++#define NR_BANKS 3 + #define IRQS_PER_BANK 32 + + /* from drivers/irqchip/irq-bcm2835.c */ +@@ -108,10 +108,8 @@ static int armctrl_xlate(struct irq_domain *d, struct device_node *ctrlr, + *out_hwirq = ARM_IRQ0_BASE + intspec[1]; + else if (intspec[0] == 1) + *out_hwirq = ARM_IRQ1_BASE + intspec[1]; +- else if (intspec[0] == 2) +- *out_hwirq = ARM_IRQ2_BASE + intspec[1]; + else +- *out_hwirq = GPIO_IRQ_START + intspec[1]; ++ *out_hwirq = ARM_IRQ2_BASE + intspec[1]; + + /* reverse remap_irqs[] */ + switch (*out_hwirq) { + +From 73c3c557673da990e098bac2c13bc4668f1726e4 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Fri, 2 Jan 2015 17:27:33 +0000 +Subject: [PATCH 81/87] bcm2708-gpio: Revert the use of pinctrl_request_gpio + +In non-DT systems, pinctrl_request_gpio always fails causing +"requests probe deferral" messages. In DT systems, it isn't useful +because the reference counting is independent of the normal pinctrl +pin reservations. +--- + arch/arm/mach-bcm2708/bcm2708_gpio.c | 13 +------------ + 1 file changed, 1 insertion(+), 12 deletions(-) + +diff --git a/arch/arm/mach-bcm2708/bcm2708_gpio.c b/arch/arm/mach-bcm2708/bcm2708_gpio.c +index a094fc2..6ea9b90 100644 +--- a/arch/arm/mach-bcm2708/bcm2708_gpio.c ++++ b/arch/arm/mach-bcm2708/bcm2708_gpio.c +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + + #include + +@@ -90,16 +91,6 @@ static int bcm2708_set_function(struct gpio_chip *gc, unsigned offset, + return 0; + } + +-static int bcm2708_gpio_request(struct gpio_chip *chip, unsigned offset) +-{ +- return pinctrl_request_gpio(chip->base + offset); +-} +- +-static void bcm2708_gpio_free(struct gpio_chip *chip, unsigned offset) +-{ +- pinctrl_free_gpio(chip->base + offset); +-} +- + static int bcm2708_gpio_dir_in(struct gpio_chip *gc, unsigned offset) + { + return bcm2708_set_function(gc, offset, GPIO_FSEL_INPUT); +@@ -355,8 +346,6 @@ static int bcm2708_gpio_probe(struct platform_device *dev) + ucb->gc.ngpio = BCM2708_NR_GPIOS; + ucb->gc.owner = THIS_MODULE; + +- ucb->gc.request = bcm2708_gpio_request; +- ucb->gc.free = bcm2708_gpio_free; + ucb->gc.direction_input = bcm2708_gpio_dir_in; + ucb->gc.direction_output = bcm2708_gpio_dir_out; + ucb->gc.get = bcm2708_gpio_get; + +From 1ec8e2818a9288b5d4f46286c3d8627eb3718dee Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Tue, 6 Jan 2015 12:06:55 +0000 +Subject: [PATCH 82/87] Fix the activity LED in DT mode + +Add a "leds" node to the base DTBs, and a subnode for the activity +LED. You can change the LED function like this: + + dtparam=act_led_trigger=heartbeat + +Add aliases for the other main nodes (soc, intc). + +Issue: linux #757 +--- + arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 18 ++++++++++++++---- + arch/arm/boot/dts/bcm2708-rpi-b.dts | 18 ++++++++++++++---- + arch/arm/boot/dts/bcm2708.dtsi | 11 ++++++++++- + 3 files changed, 38 insertions(+), 9 deletions(-) + +diff --git a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts +index d9886c3..95f03ba 100644 +--- a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts ++++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts +@@ -7,11 +7,14 @@ + model = "Raspberry Pi Model B+"; + + aliases { ++ soc = &soc; + spi0 = &spi0; + i2c0 = &i2c0; + i2c1 = &i2c1; + i2s = &i2s; + gpio = &gpio; ++ intc = &intc; ++ leds = &leds; + sound = &sound; + }; + +@@ -80,12 +83,19 @@ + pinctrl-0 = <&i2s_pins>; + }; + ++&act_led { ++ gpios = <&gpio 47 0>; ++}; + + / { + __overrides__ { +- i2s = <&i2s>,"status"; +- spi = <&spi0>,"status"; +- i2c0 = <&i2c0>,"status"; +- i2c1 = <&i2c1>,"status"; ++ i2s = <&i2s>,"status"; ++ spi = <&spi0>,"status"; ++ i2c0 = <&i2c0>,"status"; ++ i2c1 = <&i2c1>,"status"; ++ ++ act_led_gpio = <&act_led>,"gpios:4"; ++ act_led_activelow = <&act_led>,"gpios:8"; ++ act_led_trigger = <&act_led>,"linux,default-trigger"; + }; + }; +diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts +index 167b22b..0631f45 100644 +--- a/arch/arm/boot/dts/bcm2708-rpi-b.dts ++++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts +@@ -7,11 +7,14 @@ + model = "Raspberry Pi Model B"; + + aliases { ++ soc = &soc; + spi0 = &spi0; + i2c0 = &i2c0; + i2c1 = &i2c1; + i2s = &i2s; + gpio = &gpio; ++ intc = &intc; ++ leds = &leds; + sound = &sound; + }; + +@@ -80,12 +83,19 @@ + pinctrl-0 = <&i2s_pins>; + }; + ++&act_led { ++ gpios = <&gpio 16 1>; ++}; + + / { + __overrides__ { +- i2s = <&i2s>,"status"; +- spi = <&spi0>,"status"; +- i2c0 = <&i2c0>,"status"; +- i2c1 = <&i2c1>,"status"; ++ i2s = <&i2s>,"status"; ++ spi = <&spi0>,"status"; ++ i2c0 = <&i2c0>,"status"; ++ i2c1 = <&i2c1>,"status"; ++ ++ act_led_gpio = <&act_led>,"gpios:4"; ++ act_led_activelow = <&act_led>,"gpios:8"; ++ act_led_trigger = <&act_led>,"linux,default-trigger"; + }; + }; +diff --git a/arch/arm/boot/dts/bcm2708.dtsi b/arch/arm/boot/dts/bcm2708.dtsi +index 6b36128..1b56cb5 100644 +--- a/arch/arm/boot/dts/bcm2708.dtsi ++++ b/arch/arm/boot/dts/bcm2708.dtsi +@@ -11,7 +11,7 @@ + bootargs = ""; + }; + +- soc { ++ soc: soc { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; +@@ -76,6 +76,15 @@ + #size-cells = <0>; + status = "disabled"; + }; ++ ++ leds: leds { ++ compatible = "gpio-leds"; ++ ++ act_led: act { ++ label = "ACT"; ++ linux,default-trigger = "mmc0"; ++ }; ++ }; + }; + + clocks { + +From 3d3c643305b17f7addb66329e45772e90d2276e0 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Wed, 7 Jan 2015 12:06:05 +0000 +Subject: [PATCH 84/87] lirc-rpi: Also support pinctrl-bcm2835 in non-DT mode + +--- + drivers/staging/media/lirc/lirc_rpi.c | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +diff --git a/drivers/staging/media/lirc/lirc_rpi.c b/drivers/staging/media/lirc/lirc_rpi.c +index b7d82ad..697c067 100644 +--- a/drivers/staging/media/lirc/lirc_rpi.c ++++ b/drivers/staging/media/lirc/lirc_rpi.c +@@ -344,12 +344,21 @@ static int init_port(void) + int i, nlow, nhigh, ret, irq; + struct device_node *node; + ++ node = lirc_rpi_dev->dev.of_node; ++ + gpiochip = gpiochip_find("bcm2708_gpio", is_right_chip); + +- if (!gpiochip) +- return -ENODEV; ++ /* ++ * Because of the lack of a setpull function, only support ++ * pinctrl-bcm2835 if using device tree. ++ */ ++ if (!gpiochip && node) ++ gpiochip = gpiochip_find("pinctrl-bcm2835", is_right_chip); + +- node = lirc_rpi_dev->dev.of_node; ++ if (!gpiochip) { ++ pr_err(LIRC_DRIVER_NAME ": gpio chip not found!\n"); ++ return -ENODEV; ++ } + + if (node) { + struct device_node *pins_node; + +From d2b6b478cffd72de43fabe859c5be37063434791 Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Wed, 7 Jan 2015 14:31:01 +0000 +Subject: [PATCH 85/87] gpio: Only clear the currently occurring interrupt. + Avoids losing interrupts + +See: linux #760 +--- + arch/arm/mach-bcm2708/bcm2708_gpio.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm/mach-bcm2708/bcm2708_gpio.c b/arch/arm/mach-bcm2708/bcm2708_gpio.c +index 6ea9b90..68f6ffd 100644 +--- a/arch/arm/mach-bcm2708/bcm2708_gpio.c ++++ b/arch/arm/mach-bcm2708/bcm2708_gpio.c +@@ -286,8 +286,8 @@ static irqreturn_t bcm2708_gpio_interrupt(int irq, void *dev_id) + for_each_set_bit(i, &edsr, 32) { + gpio = i + bank * 32; + generic_handle_irq(gpio_to_irq(gpio)); ++ writel(1< +Date: Thu, 8 Jan 2015 15:37:14 +0000 +Subject: [PATCH 86/87] lirc-rpi: Use the higher-level irq control functions + +This module used to access the irq_chip methods of the +gpio controller directly, rather than going through the +standard enable_irq/irq_set_irq_type functions. This +caused problems on pinctrl-bcm2835 which only implements +the irq_enable/disable methods and not irq_unmask/mask. +--- + drivers/staging/media/lirc/lirc_rpi.c | 52 ++++++++++------------------------- + 1 file changed, 15 insertions(+), 37 deletions(-) + +diff --git a/drivers/staging/media/lirc/lirc_rpi.c b/drivers/staging/media/lirc/lirc_rpi.c +index 697c067..126bf22 100644 +--- a/drivers/staging/media/lirc/lirc_rpi.c ++++ b/drivers/staging/media/lirc/lirc_rpi.c +@@ -79,8 +79,7 @@ static bool softcarrier = 1; + static bool invert = 0; + + struct gpio_chip *gpiochip; +-struct irq_chip *irqchip; +-struct irq_data *irqdata; ++static int irq_num; + + /* forward declarations */ + static long send_pulse(unsigned long length); +@@ -247,7 +246,7 @@ static irqreturn_t irq_handler(int i, void *blah, struct pt_regs *regs) + signal = gpiochip->get(gpiochip, gpio_in_pin); + + /* unmask the irq */ +- irqchip->irq_unmask(irqdata); ++ enable_irq(irq_num); + + if (sense != -1) { + /* get current time */ +@@ -341,7 +340,7 @@ static void read_pin_settings(struct device_node *node) + + static int init_port(void) + { +- int i, nlow, nhigh, ret, irq; ++ int i, nlow, nhigh, ret; + struct device_node *node; + + node = lirc_rpi_dev->dev.of_node; +@@ -413,16 +412,8 @@ static int init_port(void) + + gpiochip->set(gpiochip, gpio_out_pin, invert); + +- irq = gpiochip->to_irq(gpiochip, gpio_in_pin); +- dprintk("to_irq %d\n", irq); +- irqdata = irq_get_irq_data(irq); +- +- if (irqdata && irqdata->chip) { +- irqchip = irqdata->chip; +- } else { +- ret = -ENODEV; +- goto exit_gpio_free_in_pin; +- } ++ irq_num = gpiochip->to_irq(gpiochip, gpio_in_pin); ++ dprintk("to_irq %d\n", irq_num); + + /* if pin is high, then this must be an active low receiver. */ + if (sense == -1) { +@@ -454,7 +445,6 @@ static int init_port(void) + + return 0; + +- exit_gpio_free_in_pin: + gpio_free(gpio_in_pin); + + exit_gpio_free_out_pin: +@@ -468,12 +458,11 @@ static int init_port(void) + static int set_use_inc(void *data) + { + int result; +- unsigned long flags; + + /* initialize timestamp */ + do_gettimeofday(&lasttv); + +- result = request_irq(gpiochip->to_irq(gpiochip, gpio_in_pin), ++ result = request_irq(irq_num, + (irq_handler_t) irq_handler, 0, + LIRC_DRIVER_NAME, (void*) 0); + +@@ -481,7 +470,7 @@ static int set_use_inc(void *data) + case -EBUSY: + printk(KERN_ERR LIRC_DRIVER_NAME + ": IRQ %d is busy\n", +- gpiochip->to_irq(gpiochip, gpio_in_pin)); ++ irq_num); + return -EBUSY; + case -EINVAL: + printk(KERN_ERR LIRC_DRIVER_NAME +@@ -489,43 +478,32 @@ static int set_use_inc(void *data) + return -EINVAL; + default: + dprintk("Interrupt %d obtained\n", +- gpiochip->to_irq(gpiochip, gpio_in_pin)); ++ irq_num); + break; + }; + + /* initialize pulse/space widths */ + init_timing_params(duty_cycle, freq); + +- spin_lock_irqsave(&lock, flags); +- + /* GPIO Pin Falling/Rising Edge Detect Enable */ +- irqchip->irq_set_type(irqdata, +- IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING); ++ irq_set_irq_type(irq_num, IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING); + +- /* unmask the irq */ +- irqchip->irq_unmask(irqdata); +- +- spin_unlock_irqrestore(&lock, flags); ++ /* enable the irq */ ++ enable_irq(irq_num); + + return 0; + } + + static void set_use_dec(void *data) + { +- unsigned long flags; +- +- spin_lock_irqsave(&lock, flags); +- + /* GPIO Pin Falling/Rising Edge Detect Disable */ +- irqchip->irq_set_type(irqdata, 0); +- irqchip->irq_mask(irqdata); +- +- spin_unlock_irqrestore(&lock, flags); ++ irq_set_irq_type(irq_num, 0); ++ disable_irq(irq_num); + +- free_irq(gpiochip->to_irq(gpiochip, gpio_in_pin), (void *) 0); ++ free_irq(irq_num, (void *) 0); + + dprintk(KERN_INFO LIRC_DRIVER_NAME +- ": freed IRQ %d\n", gpiochip->to_irq(gpiochip, gpio_in_pin)); ++ ": freed IRQ %d\n", irq_num); + } + + static ssize_t lirc_write(struct file *file, const char *buf, + +From adf178c0c4247e3689403fa6e3045049e4151732 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Fri, 9 Jan 2015 15:35:10 +0000 +Subject: [PATCH 87/87] lirc-rpi: Correct the interrupt usage + +1) Correct the use of enable_irq (i.e. don't call it so often) +2) Correct the shutdown sequence. +3) Avoid a bcm2708_gpio driver quirk by setting the irq flags earlier +--- + drivers/staging/media/lirc/lirc_rpi.c | 20 ++++++-------------- + 1 file changed, 6 insertions(+), 14 deletions(-) + +diff --git a/drivers/staging/media/lirc/lirc_rpi.c b/drivers/staging/media/lirc/lirc_rpi.c +index 126bf22..cd66ca2 100644 +--- a/drivers/staging/media/lirc/lirc_rpi.c ++++ b/drivers/staging/media/lirc/lirc_rpi.c +@@ -245,9 +245,6 @@ static irqreturn_t irq_handler(int i, void *blah, struct pt_regs *regs) + /* use the GPIO signal level */ + signal = gpiochip->get(gpiochip, gpio_in_pin); + +- /* unmask the irq */ +- enable_irq(irq_num); +- + if (sense != -1) { + /* get current time */ + do_gettimeofday(&tv); +@@ -445,8 +442,6 @@ static int init_port(void) + + return 0; + +- gpio_free(gpio_in_pin); +- + exit_gpio_free_out_pin: + gpio_free(gpio_out_pin); + +@@ -463,7 +458,8 @@ static int set_use_inc(void *data) + do_gettimeofday(&lasttv); + + result = request_irq(irq_num, +- (irq_handler_t) irq_handler, 0, ++ (irq_handler_t) irq_handler, ++ IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING, + LIRC_DRIVER_NAME, (void*) 0); + + switch (result) { +@@ -485,12 +481,6 @@ static int set_use_inc(void *data) + /* initialize pulse/space widths */ + init_timing_params(duty_cycle, freq); + +- /* GPIO Pin Falling/Rising Edge Detect Enable */ +- irq_set_irq_type(irq_num, IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING); +- +- /* enable the irq */ +- enable_irq(irq_num); +- + return 0; + } + +@@ -678,7 +668,8 @@ static int __init lirc_rpi_init(void) + + static void lirc_rpi_exit(void) + { +- platform_device_unregister(lirc_rpi_dev); ++ if (!lirc_rpi_dev->dev.of_node) ++ platform_device_unregister(lirc_rpi_dev); + platform_driver_unregister(&lirc_rpi_driver); + lirc_buffer_free(&rbuf); + } +@@ -722,12 +713,13 @@ static int __init lirc_rpi_init_module(void) + + static void __exit lirc_rpi_exit_module(void) + { ++ lirc_unregister_driver(driver.minor); ++ + gpio_free(gpio_out_pin); + gpio_free(gpio_in_pin); + + lirc_rpi_exit(); + +- lirc_unregister_driver(driver.minor); + printk(KERN_INFO LIRC_DRIVER_NAME ": cleaned up module\n"); + } +