From c544d987d95729187f2a29bf4aad4829d1f4b27b Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Mon, 13 Apr 2015 02:02:26 +0000 Subject: [PATCH] Update to 4.0 svn path=/dists/trunk/linux/; revision=22505 --- debian/changelog | 4 +- .../btrfs-simplify-insert_orphan_item.patch | 42 -- ...-redundant-log-messages-from-drivers.patch | 129 ++-- ...vent-integer-overflow-in-ib_umem_get.patch | 38 -- ...-t-reduce-hop-limit-for-an-interface.patch | 43 -- ...kbuild-use-nostdinc-in-compile-tests.patch | 10 +- .../bugfix/m68k/ethernat-kconfig.patch | 27 - ...ive_backlight-quirk-for-samsung-510r.patch | 35 -- ...ight-quirk-for-samsung-730u3e-740u3e.patch | 34 -- ...native-backlight-on-samsung-series-9.patch | 46 -- ...reate-non-pagealigned-stolen-objects.patch | 52 -- ...tel-guard-against-stack-overflow-in-.patch | 32 - ...e-auto-loading-as-mitigation-against.patch | 13 +- debian/patches/debian/gitignore.patch | 7 +- ...i2o-disable-i2o_ext_adaptec-on-64bit.patch | 6 +- ...mory-cgroup-support-to-be-included-b.patch | 10 +- ...lying-uefi-firmware-platform-size-to.patch | 49 -- ...sable-changing-resolution-rate-scale.patch | 119 ---- ...sable-palm-detection-in-the-focaltec.patch | 38 -- ...sure-that-focaltech-reports-consiste.patch | 41 -- ...move-hardcoded-touchpad-size-from-th.patch | 38 -- ...pport-for-the-focaltech-ps-2-protoco.patch | 572 ------------------ ...ubieboard-add-axp209-regulator-nodes.patch | 81 --- ...able-axp209-support-on-A13-OLinuxIno.patch | 37 -- ...bieboard2-add-axp209-regulator-nodes.patch | 85 --- ...ubietruck-add-axp209-regulator-nodes.patch | 85 --- ...M-dts-sunxi-Add-dtsi-for-AXP209-PMIC.patch | 123 ---- ...d-simplefb-nodes-for-de_be0-lcd0-de_.patch | 154 ----- ...xup-after-backport-of-axp209-support.patch | 61 -- ...n7i-Add-dts-file-for-Bananapro-board.patch | 292 --------- ...-Add-support-for-the-UBNT-E200-board.patch | 16 - debian/patches/series | 26 - 32 files changed, 82 insertions(+), 2263 deletions(-) delete mode 100644 debian/patches/bugfix/all/btrfs-simplify-insert_orphan_item.patch delete mode 100644 debian/patches/bugfix/all/ib-core-prevent-integer-overflow-in-ib_umem_get.patch delete mode 100644 debian/patches/bugfix/all/ipv6-don-t-reduce-hop-limit-for-an-interface.patch delete mode 100644 debian/patches/bugfix/m68k/ethernat-kconfig.patch delete mode 100644 debian/patches/bugfix/x86/acpi-video-add-disable_native_backlight-quirk-for-samsung-510r.patch delete mode 100644 debian/patches/bugfix/x86/acpi-video-add-disable_native_backlight-quirk-for-samsung-730u3e-740u3e.patch delete mode 100644 debian/patches/bugfix/x86/acpi-video-disable-native-backlight-on-samsung-series-9.patch delete mode 100644 debian/patches/bugfix/x86/drm-i915-quietly-reject-attempts-to-create-non-pagealigned-stolen-objects.patch delete mode 100644 debian/patches/bugfix/x86/x86-microcode-intel-guard-against-stack-overflow-in-.patch delete mode 100644 debian/patches/features/all/efi-expose-underlying-uefi-firmware-platform-size-to.patch delete mode 100644 debian/patches/features/all/psmouse/input-psmouse-disable-changing-resolution-rate-scale.patch delete mode 100644 debian/patches/features/all/psmouse/input-psmouse-disable-palm-detection-in-the-focaltec.patch delete mode 100644 debian/patches/features/all/psmouse/input-psmouse-ensure-that-focaltech-reports-consiste.patch delete mode 100644 debian/patches/features/all/psmouse/input-psmouse-remove-hardcoded-touchpad-size-from-th.patch delete mode 100644 debian/patches/features/all/psmouse/input-psmouse-support-for-the-focaltech-ps-2-protoco.patch delete mode 100644 debian/patches/features/arm/ARM-dts-sun4i-cubieboard-add-axp209-regulator-nodes.patch delete mode 100644 debian/patches/features/arm/ARM-dts-sun5i-Enable-axp209-support-on-A13-OLinuxIno.patch delete mode 100644 debian/patches/features/arm/ARM-dts-sun7i-cubieboard2-add-axp209-regulator-nodes.patch delete mode 100644 debian/patches/features/arm/ARM-dts-sun7i-cubietruck-add-axp209-regulator-nodes.patch delete mode 100644 debian/patches/features/arm/ARM-dts-sunxi-Add-dtsi-for-AXP209-PMIC.patch delete mode 100644 debian/patches/features/arm/ARM-dts-sunxi-Add-simplefb-nodes-for-de_be0-lcd0-de_.patch delete mode 100644 debian/patches/features/arm/ARM-dts-sunxi-Fixup-after-backport-of-axp209-support.patch delete mode 100644 debian/patches/features/arm/dts-sun7i-Add-dts-file-for-Bananapro-board.patch diff --git a/debian/changelog b/debian/changelog index df2c61e2c..b27be6a2c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,6 @@ -linux (3.19.3-1~exp2) UNRELEASED; urgency=medium +linux (4.0-1~exp1) UNRELEASED; urgency=medium - * + * New upstream release: http://kernelnewbies.org/Linux_4.0 -- maximilian attems Sun, 29 Mar 2015 23:31:57 +0200 diff --git a/debian/patches/bugfix/all/btrfs-simplify-insert_orphan_item.patch b/debian/patches/bugfix/all/btrfs-simplify-insert_orphan_item.patch deleted file mode 100644 index 29f18ab56..000000000 --- a/debian/patches/bugfix/all/btrfs-simplify-insert_orphan_item.patch +++ /dev/null @@ -1,42 +0,0 @@ -From: David Sterba -Date: Fri, 2 Jan 2015 19:12:57 +0100 -Subject: btrfs: simplify insert_orphan_item -Origin: https://git.kernel.org/linus/9c4f61f01d269815bb7c37be3ede59c5587747c6 -Bug-Debian: https://bugs.debian.org/782362 - -We can search and add the orphan item in one go, -btrfs_insert_orphan_item will find out if the item already exists. - -Signed-off-by: David Sterba ---- - fs/btrfs/tree-log.c | 16 ++++------------ - 1 file changed, 4 insertions(+), 12 deletions(-) - ---- a/fs/btrfs/tree-log.c -+++ b/fs/btrfs/tree-log.c -@@ -1263,21 +1263,13 @@ out: - } - - static int insert_orphan_item(struct btrfs_trans_handle *trans, -- struct btrfs_root *root, u64 offset) -+ struct btrfs_root *root, u64 ino) - { - int ret; -- struct btrfs_path *path; - -- path = btrfs_alloc_path(); -- if (!path) -- return -ENOMEM; -- -- ret = btrfs_find_item(root, path, BTRFS_ORPHAN_OBJECTID, -- offset, BTRFS_ORPHAN_ITEM_KEY, NULL); -- if (ret > 0) -- ret = btrfs_insert_orphan_item(trans, root, offset); -- -- btrfs_free_path(path); -+ ret = btrfs_insert_orphan_item(trans, root, ino); -+ if (ret == -EEXIST) -+ ret = 0; - - return ret; - } diff --git a/debian/patches/bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch b/debian/patches/bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch index 0bb35e934..10b317eca 100644 --- a/debian/patches/bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch +++ b/debian/patches/bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch @@ -81,7 +81,7 @@ upstream submission. rec = (const struct ihex_binrec *)fw->data; --- a/drivers/atm/fore200e.c +++ b/drivers/atm/fore200e.c -@@ -2505,10 +2505,9 @@ static int fore200e_load_and_start_fw(st +@@ -2506,10 +2506,9 @@ static int fore200e_load_and_start_fw(st return err; sprintf(buf, "%s%s", fore200e->bus->proc_name, FW_EXT); @@ -96,7 +96,7 @@ upstream submission. fw_size = firmware->size / sizeof(u32); --- a/drivers/bluetooth/ath3k.c +++ b/drivers/bluetooth/ath3k.c -@@ -377,10 +377,8 @@ static int ath3k_load_patch(struct usb_d +@@ -393,10 +393,8 @@ static int ath3k_load_patch(struct usb_d le32_to_cpu(fw_version.rom_version)); ret = request_firmware(&firmware, filename, &udev->dev); @@ -108,7 +108,7 @@ upstream submission. pt_rom_version = get_unaligned_le32(firmware->data + firmware->size - 8); -@@ -440,10 +438,8 @@ static int ath3k_load_syscfg(struct usb_ +@@ -456,10 +454,8 @@ static int ath3k_load_syscfg(struct usb_ le32_to_cpu(fw_version.rom_version), clk_value, ".dfu"); ret = request_firmware(&firmware, filename, &udev->dev); @@ -168,7 +168,7 @@ upstream submission. --- a/drivers/bluetooth/btmrvl_sdio.c +++ b/drivers/bluetooth/btmrvl_sdio.c -@@ -328,8 +328,6 @@ static int btmrvl_sdio_download_helper(s +@@ -355,8 +355,6 @@ static int btmrvl_sdio_download_helper(s ret = request_firmware(&fw_helper, card->helper, &card->func->dev); if ((ret < 0) || !fw_helper) { @@ -177,7 +177,7 @@ upstream submission. ret = -ENOENT; goto done; } -@@ -428,8 +426,6 @@ static int btmrvl_sdio_download_fw_w_hel +@@ -455,8 +453,6 @@ static int btmrvl_sdio_download_fw_w_hel ret = request_firmware(&fw_firmware, card->firmware, &card->func->dev); if ((ret < 0) || !fw_firmware) { @@ -203,7 +203,7 @@ upstream submission. fw->size, fw_name); --- a/drivers/dma/imx-sdma.c +++ b/drivers/dma/imx-sdma.c -@@ -1287,11 +1287,8 @@ static void sdma_load_firmware(const str +@@ -1284,11 +1284,8 @@ static void sdma_load_firmware(const str const struct sdma_script_start_addrs *addr; unsigned short *ram_code; @@ -231,9 +231,9 @@ upstream submission. size = 0; where = 0; ---- a/drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c -+++ b/drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c -@@ -1496,10 +1496,8 @@ nvc0_graph_ctor_fw(struct nvc0_graph_pri +--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c +@@ -1507,10 +1507,8 @@ gf100_gr_ctor_fw(struct gf100_gr_priv *p if (ret) { snprintf(f, sizeof(f), "nouveau/%s", fwname); ret = request_firmware(&fw, f, nv_device_base(device)); @@ -262,7 +262,7 @@ upstream submission. printk(KERN_ERR --- a/drivers/gpu/drm/radeon/ni.c +++ b/drivers/gpu/drm/radeon/ni.c -@@ -811,10 +811,6 @@ int ni_init_microcode(struct radeon_devi +@@ -812,10 +812,6 @@ int ni_init_microcode(struct radeon_devi out: if (err) { @@ -275,7 +275,7 @@ upstream submission. release_firmware(rdev->me_fw); --- a/drivers/gpu/drm/radeon/r100.c +++ b/drivers/gpu/drm/radeon/r100.c -@@ -1029,10 +1029,7 @@ static int r100_cp_init_microcode(struct +@@ -1039,10 +1039,7 @@ static int r100_cp_init_microcode(struct } err = request_firmware(&rdev->me_fw, fw_name, rdev->dev); @@ -289,7 +289,7 @@ upstream submission. rdev->me_fw->size, fw_name); --- a/drivers/gpu/drm/radeon/r600.c +++ b/drivers/gpu/drm/radeon/r600.c -@@ -2518,10 +2518,6 @@ int r600_init_microcode(struct radeon_de +@@ -2519,10 +2519,6 @@ int r600_init_microcode(struct radeon_de out: if (err) { @@ -329,7 +329,7 @@ upstream submission. dev_priv->me_fw->size, fw_name); --- a/drivers/infiniband/hw/qib/qib_sd7220.c +++ b/drivers/infiniband/hw/qib/qib_sd7220.c -@@ -405,10 +405,8 @@ int qib_sd7220_init(struct qib_devdata * +@@ -406,10 +406,8 @@ int qib_sd7220_init(struct qib_devdata * } ret = request_firmware(&fw, SD7220_FW_NAME, &dd->pcidev->dev); @@ -343,7 +343,7 @@ upstream submission. ret = qib_ibsd_ucode_loaded(dd->pport, fw); --- a/drivers/input/touchscreen/atmel_mxt_ts.c +++ b/drivers/input/touchscreen/atmel_mxt_ts.c -@@ -1942,10 +1942,8 @@ static int mxt_load_fw(struct device *de +@@ -1892,10 +1892,8 @@ static int mxt_load_fw(struct device *de int ret; ret = request_firmware(&fw, fn, dev); @@ -742,7 +742,7 @@ upstream submission. GFP_KERNEL | GFP_DMA); --- a/drivers/media/pci/ttpci/av7110.c +++ b/drivers/media/pci/ttpci/av7110.c -@@ -1531,16 +1531,9 @@ static int get_firmware(struct av7110* a +@@ -1534,16 +1534,9 @@ static int get_firmware(struct av7110* a /* request the av7110 firmware, this will block until someone uploads it */ ret = request_firmware(&fw, "dvb-ttpci-01.fw", &av7110->dev->pci->dev); if (ret) { @@ -836,7 +836,7 @@ upstream submission. fw_data = (void *)fw_entry->data; --- a/drivers/media/pci/bt8xx/bttv-cards.c +++ b/drivers/media/pci/bt8xx/bttv-cards.c -@@ -3834,10 +3834,8 @@ static int pvr_boot(struct bttv *btv) +@@ -3912,10 +3912,8 @@ static int pvr_boot(struct bttv *btv) int rc; rc = request_firmware(&fw_entry, "hcwamc.rbf", &btv->c.pci->dev); @@ -961,7 +961,7 @@ upstream submission. printk(KERN_ERR "ERROR: Firmware size mismatch " --- a/drivers/media/pci/cx23885/cx23885-cards.c +++ b/drivers/media/pci/cx23885/cx23885-cards.c -@@ -1980,11 +1980,7 @@ void cx23885_card_setup(struct cx23885_d +@@ -2165,11 +2165,7 @@ void cx23885_card_setup(struct cx23885_d cinfo.rev, filename); ret = request_firmware(&fw, filename, &dev->pci->dev); @@ -1063,7 +1063,7 @@ upstream submission. --- a/drivers/media/usb/s2255/s2255drv.c +++ b/drivers/media/usb/s2255/s2255drv.c -@@ -2304,10 +2304,8 @@ static int s2255_probe(struct usb_interf +@@ -2299,10 +2299,8 @@ static int s2255_probe(struct usb_interf } /* load the first chunk */ if (request_firmware(&dev->fw_data->fw, @@ -1104,23 +1104,9 @@ upstream submission. printk(KERN_INFO "%s() firmware read %Zu bytes.\n", __func__, fw->size); ---- a/drivers/staging/media/tlg2300/pd-main.c -+++ b/drivers/staging/media/tlg2300/pd-main.c -@@ -219,10 +219,8 @@ static int firmware_download(struct usb_ - size_t max_packet_size; - - ret = request_firmware(&fw, firmware_name, &udev->dev); -- if (ret) { -- log("download err : %d", ret); -+ if (ret) - return ret; -- } - - fwlength = fw->size; - --- a/drivers/misc/ti-st/st_kim.c +++ b/drivers/misc/ti-st/st_kim.c -@@ -302,11 +302,8 @@ static long download_firmware(struct kim +@@ -308,11 +308,8 @@ static long download_firmware(struct kim request_firmware(&kim_gdata->fw_entry, bts_scr_name, &kim_gdata->kim_pdev->dev); if (unlikely((err != 0) || (kim_gdata->fw_entry->data == NULL) || @@ -1230,7 +1216,7 @@ upstream submission. if (bp->mips_firmware->size < sizeof(*mips_fw) || --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c -@@ -12953,11 +12953,8 @@ static int bnx2x_init_firmware(struct bn +@@ -12976,11 +12976,8 @@ static int bnx2x_init_firmware(struct bn BNX2X_DEV_INFO("Loading %s\n", fw_file_name); rc = request_firmware(&bp->firmware, fw_file_name, &bp->pdev->dev); @@ -1245,7 +1231,7 @@ upstream submission. if (rc) { --- a/drivers/net/ethernet/broadcom/tg3.c +++ b/drivers/net/ethernet/broadcom/tg3.c -@@ -11325,11 +11325,8 @@ static int tg3_request_firmware(struct t +@@ -11337,11 +11337,8 @@ static int tg3_request_firmware(struct t { const struct tg3_firmware_hdr *fw_hdr; @@ -1464,7 +1450,7 @@ upstream submission. --- a/drivers/net/wireless/atmel.c +++ b/drivers/net/wireless/atmel.c -@@ -3927,12 +3927,8 @@ static int reset_atmel_card(struct net_d +@@ -3917,12 +3917,8 @@ static int reset_atmel_card(struct net_d strcpy(priv->firmware_id, "atmel_at76c502.bin"); } err = request_firmware(&fw_entry, priv->firmware_id, priv->sys_dev); @@ -1480,7 +1466,7 @@ upstream submission. int success = 0; --- a/drivers/net/wireless/b43/main.c +++ b/drivers/net/wireless/b43/main.c -@@ -2215,19 +2215,8 @@ int b43_do_request_fw(struct b43_request +@@ -2253,19 +2253,8 @@ int b43_do_request_fw(struct b43_request } err = request_firmware(&ctx->blob, ctx->fwname, ctx->dev->dev->dev); @@ -1582,7 +1568,7 @@ upstream submission. else --- a/drivers/net/wireless/iwlwifi/iwl-drv.c +++ b/drivers/net/wireless/iwlwifi/iwl-drv.c -@@ -1096,13 +1096,8 @@ static void iwl_req_fw_callback(const st +@@ -1078,13 +1078,8 @@ static void iwl_req_fw_callback(const st if (!pieces) return; @@ -1610,7 +1596,7 @@ upstream submission. } --- a/drivers/net/wireless/mwifiex/main.c +++ b/drivers/net/wireless/mwifiex/main.c -@@ -394,11 +394,8 @@ static void mwifiex_fw_dpc(const struct +@@ -401,11 +401,8 @@ static void mwifiex_fw_dpc(const struct bool init_failed = false; struct wireless_dev *wdev; @@ -1625,7 +1611,7 @@ upstream submission. adapter->firmware = firmware; --- a/drivers/net/wireless/mwl8k.c +++ b/drivers/net/wireless/mwl8k.c -@@ -5708,16 +5708,12 @@ static int mwl8k_firmware_load_success(s +@@ -5711,16 +5711,12 @@ static int mwl8k_firmware_load_success(s static void mwl8k_fw_state_machine(const struct firmware *fw, void *context) { struct mwl8k_priv *priv = context; @@ -1643,7 +1629,7 @@ upstream submission. priv->fw_helper = fw; rc = mwl8k_request_fw(priv, priv->fw_pref, &priv->fw_ucode, true); -@@ -5752,11 +5748,8 @@ static void mwl8k_fw_state_machine(const +@@ -5755,11 +5751,8 @@ static void mwl8k_fw_state_machine(const break; case FW_STATE_LOADING_ALT: @@ -1656,7 +1642,7 @@ upstream submission. priv->fw_ucode = fw; rc = mwl8k_firmware_load_success(priv); if (rc) -@@ -5794,10 +5787,8 @@ retry: +@@ -5797,10 +5790,8 @@ retry: /* Ask userland hotplug daemon for the device firmware */ rc = mwl8k_request_firmware(priv, fw_image, nowait); @@ -1704,7 +1690,7 @@ upstream submission. --- a/drivers/net/wireless/orinoco/orinoco_usb.c +++ b/drivers/net/wireless/orinoco/orinoco_usb.c -@@ -1669,7 +1669,6 @@ static int ezusb_probe(struct usb_interf +@@ -1667,7 +1667,6 @@ static int ezusb_probe(struct usb_interf if (ezusb_firmware_download(upriv, &firmware) < 0) goto error; } else { @@ -1714,7 +1700,7 @@ upstream submission. --- a/drivers/net/wireless/p54/p54pci.c +++ b/drivers/net/wireless/p54/p54pci.c -@@ -496,7 +496,6 @@ static void p54p_firmware_step2(const st +@@ -499,7 +499,6 @@ static void p54p_firmware_step2(const st int err; if (!fw) { @@ -1779,7 +1765,7 @@ upstream submission. rt2x00_err(rt2x00dev, "Failed to read Firmware\n"); --- a/drivers/net/wireless/rtlwifi/core.c +++ b/drivers/net/wireless/rtlwifi/core.c -@@ -114,7 +114,6 @@ void rtl_fw_cb(const struct firmware *fi +@@ -115,7 +115,6 @@ static void rtl_fw_do_work(const struct if (!err) goto found_alt; } @@ -1825,7 +1811,7 @@ upstream submission. wl1251_error("nvs size is not multiple of 32 bits: %zu", --- a/drivers/net/wireless/ti/wlcore/main.c +++ b/drivers/net/wireless/ti/wlcore/main.c -@@ -749,10 +749,8 @@ static int wl12xx_fetch_firmware(struct +@@ -762,10 +762,8 @@ static int wl12xx_fetch_firmware(struct ret = request_firmware(&fw, fw_name, wl->dev); @@ -1870,7 +1856,7 @@ upstream submission. static inline u16 get_bcdDevice(const struct usb_device *udev) --- a/drivers/scsi/advansys.c +++ b/drivers/scsi/advansys.c -@@ -4298,8 +4298,6 @@ static ushort AscInitAsc1000Driver(ASC_D +@@ -4280,8 +4280,6 @@ static ushort AscInitAsc1000Driver(ASC_D err = request_firmware(&fw, fwname, asc_dvc->drv_ptr->dev); if (err) { @@ -1879,7 +1865,7 @@ upstream submission. asc_dvc->err_code |= ASC_IERR_MCODE_CHKSUM; return err; } -@@ -4631,8 +4629,6 @@ static int AdvInitAsc3550Driver(ADV_DVC_ +@@ -4613,8 +4611,6 @@ static int AdvInitAsc3550Driver(ADV_DVC_ err = request_firmware(&fw, fwname, asc_dvc->drv_ptr->dev); if (err) { @@ -1888,7 +1874,7 @@ upstream submission. asc_dvc->err_code = ASC_IERR_MCODE_CHKSUM; return err; } -@@ -5147,8 +5143,6 @@ static int AdvInitAsc38C0800Driver(ADV_D +@@ -5129,8 +5125,6 @@ static int AdvInitAsc38C0800Driver(ADV_D err = request_firmware(&fw, fwname, asc_dvc->drv_ptr->dev); if (err) { @@ -1897,7 +1883,7 @@ upstream submission. asc_dvc->err_code = ASC_IERR_MCODE_CHKSUM; return err; } -@@ -5649,8 +5643,6 @@ static int AdvInitAsc38C1600Driver(ADV_D +@@ -5631,8 +5625,6 @@ static int AdvInitAsc38C1600Driver(ADV_D err = request_firmware(&fw, fwname, asc_dvc->drv_ptr->dev); if (err) { @@ -1908,7 +1894,7 @@ upstream submission. } --- a/drivers/scsi/aic94xx/aic94xx_init.c +++ b/drivers/scsi/aic94xx/aic94xx_init.c -@@ -397,8 +397,6 @@ static ssize_t asd_store_update_bios(str +@@ -390,8 +390,6 @@ static ssize_t asd_store_update_bios(str filename_ptr, &asd_ha->pcidev->dev); if (err) { @@ -1944,7 +1930,7 @@ upstream submission. } --- a/drivers/scsi/ipr.c +++ b/drivers/scsi/ipr.c -@@ -3993,10 +3993,8 @@ static ssize_t ipr_store_update_fw(struc +@@ -3995,10 +3995,8 @@ static ssize_t ipr_store_update_fw(struc len = snprintf(fname, 99, "%s", buf); fname[len-1] = '\0'; @@ -1971,7 +1957,7 @@ upstream submission. } --- a/drivers/scsi/qla1280.c +++ b/drivers/scsi/qla1280.c -@@ -1553,8 +1553,6 @@ qla1280_request_firmware(struct scsi_qla +@@ -1552,8 +1552,6 @@ qla1280_request_firmware(struct scsi_qla err = request_firmware(&fw, fwname, &ha->pdev->dev); if (err) { @@ -1982,7 +1968,7 @@ upstream submission. } --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c -@@ -5365,8 +5365,6 @@ qla2x00_load_risc(scsi_qla_host_t *vha, +@@ -5363,8 +5363,6 @@ qla2x00_load_risc(scsi_qla_host_t *vha, /* Load firmware blob. */ blob = qla2x00_request_firmware(vha); if (!blob) { @@ -1991,7 +1977,7 @@ upstream submission. ql_log(ql_log_info, vha, 0x0084, "Firmware images can be retrieved from: "QLA_FW_URL ".\n"); return QLA_FUNCTION_FAILED; -@@ -5468,8 +5466,6 @@ qla24xx_load_risc_blob(scsi_qla_host_t * +@@ -5466,8 +5464,6 @@ qla24xx_load_risc_blob(scsi_qla_host_t * /* Load firmware blob. */ blob = qla2x00_request_firmware(vha); if (!blob) { @@ -2017,7 +2003,7 @@ upstream submission. if (qla82xx_validate_firmware_blob(vha, --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c -@@ -5428,8 +5428,6 @@ qla2x00_request_firmware(scsi_qla_host_t +@@ -5356,8 +5356,6 @@ qla2x00_request_firmware(scsi_qla_host_t goto out; if (request_firmware(&blob->fw, blob->name, &ha->pdev->dev)) { @@ -2043,7 +2029,7 @@ upstream submission. fw->size, fwname); --- a/drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c +++ b/drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c -@@ -2152,16 +2152,12 @@ struct net_device *init_ft1000_card(stru +@@ -2131,16 +2131,12 @@ struct net_device *init_ft1000_card(stru info->AsicID = ft1000_read_reg(dev, FT1000_REG_ASIC_ID); if (info->AsicID == ELECTRABUZZ_ID) { pr_debug("ELECTRABUZZ ASIC\n"); @@ -2136,18 +2122,19 @@ upstream submission. if (0 != ret) { --- a/drivers/staging/media/lirc/lirc_zilog.c +++ b/drivers/staging/media/lirc/lirc_zilog.c -@@ -759,8 +759,6 @@ static int fw_load(struct IR_tx *tx) +@@ -762,9 +762,6 @@ static int fw_load(struct IR_tx *tx) /* Request codeset data file */ ret = request_firmware(&fw_entry, "haup-ir-blaster.bin", tx->ir->l.dev); if (ret != 0) { -- dev_err(tx->ir->l.dev, "firmware haup-ir-blaster.bin not available (%d)\n", -- ret); +- dev_err(tx->ir->l.dev, +- "firmware haup-ir-blaster.bin not available (%d)\n", +- ret); ret = ret < 0 ? ret : -EFAULT; goto out; } --- a/drivers/staging/rtl8192u/r819xU_firmware.c +++ b/drivers/staging/rtl8192u/r819xU_firmware.c -@@ -241,10 +241,8 @@ bool init_firmware(struct net_device *de +@@ -243,10 +243,8 @@ bool init_firmware(struct net_device *de */ if (rst_opt == OPT_SYSTEM_RESET) { rc = request_firmware(&fw_entry, fw_name[init_step],&priv->udev->dev); @@ -2476,7 +2463,7 @@ upstream submission. release_firmware(fw_p); --- a/drivers/video/fbdev/broadsheetfb.c +++ b/drivers/video/fbdev/broadsheetfb.c -@@ -741,10 +741,8 @@ static ssize_t broadsheet_loadstore_wave +@@ -743,10 +743,8 @@ static ssize_t broadsheet_loadstore_wave return -EINVAL; err = request_firmware(&fw_entry, "broadsheet.wbf", dev); @@ -2538,7 +2525,7 @@ upstream submission. if (snd_msnd_upload_host(chip, init_fw->data, init_fw->size) < 0) { --- a/sound/isa/sscape.c +++ b/sound/isa/sscape.c -@@ -543,10 +543,8 @@ static int sscape_upload_bootblock(struc +@@ -544,10 +544,8 @@ static int sscape_upload_bootblock(struc int ret; ret = request_firmware(&init_fw, "scope.cod", card->dev); @@ -2550,7 +2537,7 @@ upstream submission. ret = upload_dma_data(sscape, init_fw->data, init_fw->size); release_firmware(init_fw); -@@ -583,11 +581,8 @@ static int sscape_upload_microcode(struc +@@ -584,11 +582,8 @@ static int sscape_upload_microcode(struc snprintf(name, sizeof(name), "sndscape.co%d", version); err = request_firmware(&init_fw, name, card->dev); @@ -2579,7 +2566,7 @@ upstream submission. buf = firmware->data; --- a/sound/pci/asihpi/hpidspcd.c +++ b/sound/pci/asihpi/hpidspcd.c -@@ -49,8 +49,6 @@ short hpi_dsp_code_open(u32 adapter, voi +@@ -46,8 +46,6 @@ short hpi_dsp_code_open(u32 adapter, voi err = request_firmware(&firmware, fw_name, &dev->dev); if (err || !firmware) { @@ -2621,7 +2608,7 @@ upstream submission. filename, emu->firmware->size); --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c -@@ -1662,10 +1662,8 @@ static void azx_firmware_cb(const struct +@@ -1636,10 +1636,8 @@ static void azx_firmware_cb(const struct struct azx *chip = card->private_data; struct pci_dev *pci = chip->pci; @@ -2635,7 +2622,7 @@ upstream submission. if (!chip->disabled) { --- a/sound/pci/korg1212/korg1212.c +++ b/sound/pci/korg1212/korg1212.c -@@ -2346,7 +2346,6 @@ static int snd_korg1212_create(struct sn +@@ -2330,7 +2330,6 @@ static int snd_korg1212_create(struct sn err = request_firmware(&dsp_code, "korg/k1212.dsp", &pci->dev); if (err < 0) { release_firmware(dsp_code); @@ -2645,7 +2632,7 @@ upstream submission. } --- a/sound/pci/mixart/mixart_hwdep.c +++ b/sound/pci/mixart/mixart_hwdep.c -@@ -570,11 +570,8 @@ int snd_mixart_setup_firmware(struct mix +@@ -571,11 +571,8 @@ int snd_mixart_setup_firmware(struct mix for (i = 0; i < 3; i++) { sprintf(path, "mixart/%s", fw_files[i]); @@ -2676,7 +2663,7 @@ upstream submission. release_firmware(fw_entry); --- a/sound/pci/riptide/riptide.c +++ b/sound/pci/riptide/riptide.c -@@ -1245,11 +1245,8 @@ static int try_to_load_firmware(struct c +@@ -1231,11 +1231,8 @@ static int try_to_load_firmware(struct c if (!chip->fw_entry) { err = request_firmware(&chip->fw_entry, "riptide.hex", &chip->pci->dev); @@ -2691,7 +2678,7 @@ upstream submission. if (err) { --- a/sound/pci/rme9652/hdsp.c +++ b/sound/pci/rme9652/hdsp.c -@@ -5167,11 +5167,8 @@ static int hdsp_request_fw_loader(struct +@@ -5102,11 +5102,8 @@ static int hdsp_request_fw_loader(struct return -EINVAL; } @@ -2740,7 +2727,7 @@ upstream submission. } --- a/sound/pci/cs46xx/cs46xx_lib.c +++ b/sound/pci/cs46xx/cs46xx_lib.c -@@ -3284,11 +3284,8 @@ int snd_cs46xx_start_dsp(struct snd_cs46 +@@ -3253,11 +3253,8 @@ int snd_cs46xx_start_dsp(struct snd_cs46 #ifdef CONFIG_SND_CS46XX_NEW_DSP for (i = 0; i < CS46XX_DSP_MODULES; i++) { err = load_firmware(chip, &chip->modules[i], module_names[i]); diff --git a/debian/patches/bugfix/all/ib-core-prevent-integer-overflow-in-ib_umem_get.patch b/debian/patches/bugfix/all/ib-core-prevent-integer-overflow-in-ib_umem_get.patch deleted file mode 100644 index 99ac0f3cf..000000000 --- a/debian/patches/bugfix/all/ib-core-prevent-integer-overflow-in-ib_umem_get.patch +++ /dev/null @@ -1,38 +0,0 @@ -From: Shachar Raindel -Date: Sun, 04 Jan 2015 18:30:32 +0200 -Subject: IB/core: Prevent integer overflow in ib_umem_get address arithmetic -Origin: https://marc.info/?l=oss-security&m=142672196502144&w=2 - -Properly verify that the resulting page aligned end address is larger -than both the start address and the length of the memory area -requested. - -Both the start and length arguments for ib_umem_get are controlled by -the user. A misbehaving user can provide values which will cause an -integer overflow when calculating the page aligned end address. - -This overflow can cause also miscalculation of the number of pages -mapped, and additional logic issues. - -Signed-off-by: Shachar Raindel -Signed-off-by: Jack Morgenstein -Signed-off-by: Or Gerlitz ---- - ---- a/drivers/infiniband/core/umem.c -+++ b/drivers/infiniband/core/umem.c -@@ -94,6 +94,14 @@ struct ib_umem *ib_umem_get(struct ib_uc - if (dmasync) - dma_set_attr(DMA_ATTR_WRITE_BARRIER, &attrs); - -+ /* -+ * If the combination of the addr and size requested for this memory -+ * region causes an integer overflow, return error. -+ */ -+ if ((PAGE_ALIGN(addr + size) <= size) || -+ (PAGE_ALIGN(addr + size) <= addr)) -+ return ERR_PTR(-EINVAL); -+ - if (!can_do_mlock()) - return ERR_PTR(-EPERM); - diff --git a/debian/patches/bugfix/all/ipv6-don-t-reduce-hop-limit-for-an-interface.patch b/debian/patches/bugfix/all/ipv6-don-t-reduce-hop-limit-for-an-interface.patch deleted file mode 100644 index c07ca3532..000000000 --- a/debian/patches/bugfix/all/ipv6-don-t-reduce-hop-limit-for-an-interface.patch +++ /dev/null @@ -1,43 +0,0 @@ -From: "D.S. Ljungmark" -Date: Wed, 25 Mar 2015 09:28:15 +0100 -Subject: ipv6: Don't reduce hop limit for an interface -Origin: https://git.kernel.org/linus/6fd99094de2b83d1d4c8457f2c83483b2828e75a - -A local route may have a lower hop_limit set than global routes do. - -RFC 3756, Section 4.2.7, "Parameter Spoofing" - -> 1. The attacker includes a Current Hop Limit of one or another small -> number which the attacker knows will cause legitimate packets to -> be dropped before they reach their destination. - -> As an example, one possible approach to mitigate this threat is to -> ignore very small hop limits. The nodes could implement a -> configurable minimum hop limit, and ignore attempts to set it below -> said limit. - -Signed-off-by: D.S. Ljungmark -Acked-by: Hannes Frederic Sowa -Signed-off-by: David S. Miller ---- - net/ipv6/ndisc.c | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - ---- a/net/ipv6/ndisc.c -+++ b/net/ipv6/ndisc.c -@@ -1190,7 +1190,14 @@ static void ndisc_router_discovery(struc - if (rt) - rt6_set_expires(rt, jiffies + (HZ * lifetime)); - if (ra_msg->icmph.icmp6_hop_limit) { -- in6_dev->cnf.hop_limit = ra_msg->icmph.icmp6_hop_limit; -+ /* Only set hop_limit on the interface if it is higher than -+ * the current hop_limit. -+ */ -+ if (in6_dev->cnf.hop_limit < ra_msg->icmph.icmp6_hop_limit) { -+ in6_dev->cnf.hop_limit = ra_msg->icmph.icmp6_hop_limit; -+ } else { -+ ND_PRINTK(2, warn, "RA: Got route advertisement with lower hop_limit than current\n"); -+ } - if (rt) - dst_metric_set(&rt->dst, RTAX_HOPLIMIT, - ra_msg->icmph.icmp6_hop_limit); diff --git a/debian/patches/bugfix/all/kbuild-use-nostdinc-in-compile-tests.patch b/debian/patches/bugfix/all/kbuild-use-nostdinc-in-compile-tests.patch index ed27a84da..74230571e 100644 --- a/debian/patches/bugfix/all/kbuild-use-nostdinc-in-compile-tests.patch +++ b/debian/patches/bugfix/all/kbuild-use-nostdinc-in-compile-tests.patch @@ -30,7 +30,7 @@ the kernel. # cc-option-align # Prefix align with either -falign or -malign -@@ -126,16 +126,17 @@ cc-option-align = $(subst -functions=0,, +@@ -126,14 +126,15 @@ cc-option-align = $(subst -functions=0,, # cc-disable-warning # Usage: cflags-y += $(call cc-disable-warning,unused-but-set-variable) cc-disable-warning = $(call try-run,\ @@ -38,20 +38,18 @@ the kernel. + $(CC) $(NOSTDINC_FLAGS) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) -W$(strip $(1)) -c -x c /dev/null -o "$$TMP",-Wno-$(strip $(1))) # cc-version - # Usage gcc-ver := $(call cc-version) -cc-version = $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh $(CC)) +cc-version = $(shell $(CONFIG_SHELL) \ + $(srctree)/scripts/gcc-version.sh $(CC) $(NOSTDINC_FLAGS)) # cc-fullversion - # Usage gcc-ver := $(call cc-fullversion) cc-fullversion = $(shell $(CONFIG_SHELL) \ - $(srctree)/scripts/gcc-version.sh -p $(CC)) + $(srctree)/scripts/gcc-version.sh -p $(CC) $(NOSTDINC_FLAGS)) # cc-ifversion # Usage: EXTRA_CFLAGS += $(call cc-ifversion, -lt, 0402, -O1) -@@ -149,7 +150,7 @@ cc-ldoption = $(call try-run,\ +@@ -147,7 +148,7 @@ cc-ldoption = $(call try-run,\ # ld-option # Usage: LDFLAGS += $(call ld-option, -X) ld-option = $(call try-run,\ @@ -62,7 +60,7 @@ the kernel. # Usage: KBUILD_ARFLAGS := $(call ar-option,D) --- a/Makefile +++ b/Makefile -@@ -624,6 +624,8 @@ else +@@ -621,6 +621,8 @@ else KBUILD_CFLAGS += -O2 endif @@ -71,7 +69,7 @@ the kernel. # Tell gcc to never replace conditional load with a non-conditional one KBUILD_CFLAGS += $(call cc-option,--param=allow-store-data-races=0) -@@ -750,7 +752,7 @@ KBUILD_CFLAGS += $(call cc-option, -fno- +@@ -751,7 +753,7 @@ KBUILD_CFLAGS += $(call cc-option, -fno- endif # arch Makefile may override CC so keep this after arch Makefile is included diff --git a/debian/patches/bugfix/m68k/ethernat-kconfig.patch b/debian/patches/bugfix/m68k/ethernat-kconfig.patch deleted file mode 100644 index db673472f..000000000 --- a/debian/patches/bugfix/m68k/ethernat-kconfig.patch +++ /dev/null @@ -1,27 +0,0 @@ -Author: Michael Schmitz -Description: Make SMC91X driver selectable for ATARI_ETHERNAT boards -Origin: https://git.kernel.org/cgit/linux/kernel/git/geert/linux-m68k.git/commit/?id=edee09224891c259071238d5a8d2be5e3ca7f09c - -[bwh: Forward-ported to 3.19] ---- a/drivers/net/ethernet/smsc/Kconfig -+++ b/drivers/net/ethernet/smsc/Kconfig -@@ -6,7 +6,8 @@ config NET_VENDOR_SMSC - bool "SMC (SMSC)/Western Digital devices" - default y - depends on ARM || ISA || MAC || ARM64 || MIPS || M32R || SUPERH || \ -- BLACKFIN || MN10300 || COLDFIRE || XTENSA || NIOS2 || PCI || PCMCIA -+ BLACKFIN || MN10300 || COLDFIRE || XTENSA || NIOS2 || PCI || \ -+ PCMCIA || ATARI_ETHERNAT - ---help--- - If you have a network (Ethernet) card belonging to this class, say Y - and read the Ethernet-HOWTO, available from -@@ -39,7 +40,8 @@ config SMC91X - select CRC32 - select MII - depends on (ARM || M32R || SUPERH || MIPS || BLACKFIN || \ -- MN10300 || COLDFIRE || ARM64 || XTENSA || NIOS2) && (!OF || GPIOLIB) -+ MN10300 || COLDFIRE || ARM64 || XTENSA || NIOS2 || \ -+ ATARI_ETHERNAT) && (!OF || GPIOLIB) - ---help--- - This is a driver for SMC's 91x series of Ethernet chipsets, - including the SMC91C94 and the SMC91C111. Say Y if you want it diff --git a/debian/patches/bugfix/x86/acpi-video-add-disable_native_backlight-quirk-for-samsung-510r.patch b/debian/patches/bugfix/x86/acpi-video-add-disable_native_backlight-quirk-for-samsung-510r.patch deleted file mode 100644 index b76698b5e..000000000 --- a/debian/patches/bugfix/x86/acpi-video-add-disable_native_backlight-quirk-for-samsung-510r.patch +++ /dev/null @@ -1,35 +0,0 @@ -From: Hans de Goede -Date: Sat, 7 Feb 2015 09:53:53 +0100 -Subject: ACPI / video: Add disable_native_backlight quirk for Samsung 510R -Origin: https://git.kernel.org/linus/e77a16355a29230b99bafe55834a8252e55308ec - -Backlight control through the native intel interface does not work properly -on the Samsung 510R, where as using the acpi_video interface does work, add -a quirk for this. - -Link: https://bugzilla.redhat.com/show_bug.cgi?id=1186097 -Cc: All applicable -Signed-off-by: Hans de Goede -Signed-off-by: Rafael J. Wysocki ---- - drivers/acpi/video.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - ---- a/drivers/acpi/video.c -+++ b/drivers/acpi/video.c -@@ -712,6 +712,15 @@ static struct dmi_system_id video_dmi_ta - }, - }, - { -+ /* https://bugzilla.redhat.com/show_bug.cgi?id=1186097 */ -+ .callback = video_disable_native_backlight, -+ .ident = "SAMSUNG 3570R/370R/470R/450R/510R/4450RV", -+ .matches = { -+ DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), -+ DMI_MATCH(DMI_PRODUCT_NAME, "3570R/370R/470R/450R/510R/4450RV"), -+ }, -+ }, -+ { - /* https://bugzilla.redhat.com/show_bug.cgi?id=1094948 */ - .callback = video_disable_native_backlight, - .ident = "SAMSUNG 730U3E/740U3E", diff --git a/debian/patches/bugfix/x86/acpi-video-add-disable_native_backlight-quirk-for-samsung-730u3e-740u3e.patch b/debian/patches/bugfix/x86/acpi-video-add-disable_native_backlight-quirk-for-samsung-730u3e-740u3e.patch deleted file mode 100644 index f47242159..000000000 --- a/debian/patches/bugfix/x86/acpi-video-add-disable_native_backlight-quirk-for-samsung-730u3e-740u3e.patch +++ /dev/null @@ -1,34 +0,0 @@ -From: Hans de Goede -Date: Fri, 9 Jan 2015 16:22:57 +0100 -Subject: ACPI / video: Add disable_native_backlight quirk for Samsung - 730U3E/740U3E -Origin: https://git.kernel.org/linus/3295d73002f4be341069a000aec4b8d7e5ea8d2c - -The Samsung 730U3E/740U3E has integrated ATI Radeon graphics, and backlight -control does not work properly when using the native interfaces. - -Link: https://bugzilla.redhat.com/show_bug.cgi?id=1094948 -Signed-off-by: Hans de Goede -Signed-off-by: Rafael J. Wysocki ---- - drivers/acpi/video.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - ---- a/drivers/acpi/video.c -+++ b/drivers/acpi/video.c -@@ -711,6 +711,15 @@ static struct dmi_system_id video_dmi_ta - DMI_MATCH(DMI_PRODUCT_NAME, "370R4E/370R4V/370R5E/3570RE/370R5V"), - }, - }, -+ { -+ /* https://bugzilla.redhat.com/show_bug.cgi?id=1094948 */ -+ .callback = video_disable_native_backlight, -+ .ident = "SAMSUNG 730U3E/740U3E", -+ .matches = { -+ DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), -+ DMI_MATCH(DMI_PRODUCT_NAME, "730U3E/740U3E"), -+ }, -+ }, - - { - /* https://bugzilla.redhat.com/show_bug.cgi?id=1163574 */ diff --git a/debian/patches/bugfix/x86/acpi-video-disable-native-backlight-on-samsung-series-9.patch b/debian/patches/bugfix/x86/acpi-video-disable-native-backlight-on-samsung-series-9.patch deleted file mode 100644 index 28b4282be..000000000 --- a/debian/patches/bugfix/x86/acpi-video-disable-native-backlight-on-samsung-series-9.patch +++ /dev/null @@ -1,46 +0,0 @@ -From: Jens Reyer -Date: Tue, 17 Feb 2015 19:07:29 +0100 -Subject: ACPI / video: Disable native backlight on Samsung Series 9 laptops -Origin: https://git.kernel.org/linus/3120d03cf64d7f9fd71231827af2c1550aa4caa7 - -Add video_disable_native_backlight quirk for SAMSUNG 900X3C/900X3D/ -900X3E/900X4C/900X4D laptops. - -The native intel backlight controls do not work correctly on SAMSUNG -Series 9 (900X3C/900X3D/900X3E/900X4C/900X4D) laptops: -One machine has an completely dimmed (= black) display after boot at the -GDM login screen and brightness controls work only between 0 and 5% -(= no effect). -Another machine has the same brightness control issues if an external -HDMI monitor is or gets connected, although the initial brightness is -ok. -After login to Gnome both machines always work fine. - -Tested on both machines. - -Link: https://bugs.freedesktop.org/show_bug.cgi?id=87286 -Link: https://bugs.debian.org/772440 -Signed-off-by: Jens Reyer -Signed-off-by: Rafael J. Wysocki ---- - drivers/acpi/video.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - ---- a/drivers/acpi/video.c -+++ b/drivers/acpi/video.c -@@ -729,6 +729,15 @@ static struct dmi_system_id video_dmi_ta - DMI_MATCH(DMI_PRODUCT_NAME, "730U3E/740U3E"), - }, - }, -+ { -+ /* https://bugs.freedesktop.org/show_bug.cgi?id=87286 */ -+ .callback = video_disable_native_backlight, -+ .ident = "SAMSUNG 900X3C/900X3D/900X3E/900X4C/900X4D", -+ .matches = { -+ DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), -+ DMI_MATCH(DMI_PRODUCT_NAME, "900X3C/900X3D/900X3E/900X4C/900X4D"), -+ }, -+ }, - - { - /* https://bugzilla.redhat.com/show_bug.cgi?id=1163574 */ diff --git a/debian/patches/bugfix/x86/drm-i915-quietly-reject-attempts-to-create-non-pagealigned-stolen-objects.patch b/debian/patches/bugfix/x86/drm-i915-quietly-reject-attempts-to-create-non-pagealigned-stolen-objects.patch deleted file mode 100644 index ebefab35c..000000000 --- a/debian/patches/bugfix/x86/drm-i915-quietly-reject-attempts-to-create-non-pagealigned-stolen-objects.patch +++ /dev/null @@ -1,52 +0,0 @@ -Subject: drm/i915: Quietly reject attempts to create non-pagealigned stolen - objects -From: Chris Wilson -Date: Wed, 10 Dec 2014 08:17:11 +0000 -Origin: http://patchwork.freedesktop.org/patch/38659/ -Bug: https://bugs.freedesktop.org/show_bug.cgi?id=86883 -Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=763155 -Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=764528 -Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=768027 -Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=771227 - -This added as a BUG_ON as it considered that no one would ever request -an unaligned object. However, it turns out that some BIOSes will -allocate a scanout that is offset from 0 and not aligned to a page -boundary, and we were passing this through and hitting the BUG_ON during -boot. - -Quietly reject such a request to reserve the unaligned stolen object and -let the boot continue, restoring previous behaviour (i.e. no BIOS -framebuffer preservation). - -Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=86883 -Signed-off-by: Chris Wilson -Cc: stable@vger.kernel.org -Tested-By: PRC QA PRTS (Patch Regression Test System Contact: shuang.he@intel.com) -Tested-by: Johannes W molb.org> ---- -drivers/gpu/drm/i915/i915_gem_stolen.c | 10 ++++++---- - 1 file changed, 6 insertions(+), 4 deletions(-) - ---- a/drivers/gpu/drm/i915/i915_gem_stolen.c -+++ b/drivers/gpu/drm/i915/i915_gem_stolen.c -@@ -431,13 +431,15 @@ i915_gem_object_create_stolen_for_preall - DRM_DEBUG_KMS("creating preallocated stolen object: stolen_offset=%x, gtt_offset=%x, size=%x\n", - stolen_offset, gtt_offset, size); - -- /* KISS and expect everything to be page-aligned */ -- BUG_ON(stolen_offset & 4095); -- BUG_ON(size & 4095); -- - if (WARN_ON(size == 0)) - return NULL; - -+ /* KISS and expect everything to be GTT page-aligned */ -+ if ((stolen_offset | size) & 4095) { -+ DRM_DEBUG_KMS("request for unaligned stolen object, denied\n"); -+ return NULL; -+ } -+ - stolen = kzalloc(sizeof(*stolen), GFP_KERNEL); - if (!stolen) - return NULL; diff --git a/debian/patches/bugfix/x86/x86-microcode-intel-guard-against-stack-overflow-in-.patch b/debian/patches/bugfix/x86/x86-microcode-intel-guard-against-stack-overflow-in-.patch deleted file mode 100644 index fb53206cd..000000000 --- a/debian/patches/bugfix/x86/x86-microcode-intel-guard-against-stack-overflow-in-.patch +++ /dev/null @@ -1,32 +0,0 @@ -From: Quentin Casasnovas -Date: Tue, 3 Feb 2015 13:00:22 +0100 -Subject: x86/microcode/intel: Guard against stack overflow in the loader -Origin: https://git.kernel.org/linus/f84598bd7c851f8b0bf8cd0d7c3be0d73c432ff4 - -mc_saved_tmp is a static array allocated on the stack, we need to make -sure mc_saved_count stays within its bounds, otherwise we're overflowing -the stack in _save_mc(). A specially crafted microcode header could lead -to a kernel crash or potentially kernel execution. - -Signed-off-by: Quentin Casasnovas -Cc: "H. Peter Anvin" -Cc: Fenghua Yu -Link: http://lkml.kernel.org/r/1422964824-22056-1-git-send-email-quentin.casasnovas@oracle.com -Signed-off-by: Borislav Petkov ---- - arch/x86/kernel/cpu/microcode/intel_early.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/arch/x86/kernel/cpu/microcode/intel_early.c b/arch/x86/kernel/cpu/microcode/intel_early.c -index ec9df6f..5e109a3 100644 ---- a/arch/x86/kernel/cpu/microcode/intel_early.c -+++ b/arch/x86/kernel/cpu/microcode/intel_early.c -@@ -321,7 +321,7 @@ get_matching_model_microcode(int cpu, unsigned long start, - unsigned int mc_saved_count = mc_saved_data->mc_saved_count; - int i; - -- while (leftover) { -+ while (leftover && mc_saved_count < ARRAY_SIZE(mc_saved_tmp)) { - mc_header = (struct microcode_header_intel *)ucode_ptr; - - mc_size = get_totalsize(mc_header); diff --git a/debian/patches/debian/af_802154-Disable-auto-loading-as-mitigation-against.patch b/debian/patches/debian/af_802154-Disable-auto-loading-as-mitigation-against.patch index 6f9bb4b2d..3b33f845a 100644 --- a/debian/patches/debian/af_802154-Disable-auto-loading-as-mitigation-against.patch +++ b/debian/patches/debian/af_802154-Disable-auto-loading-as-mitigation-against.patch @@ -16,19 +16,14 @@ maintenance. Therefore disable auto-loading. Signed-off-by: Ben Hutchings --- - net/ieee802154/af_ieee802154.c | 2 +- + net/ieee802154/socket.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) -diff --git a/net/ieee802154/af_ieee802154.c b/net/ieee802154/af_ieee802154.c -index cd949d5..8f49dd5 100644 ---- a/net/ieee802154/af_ieee802154.c -+++ b/net/ieee802154/af_ieee802154.c -@@ -363,4 +363,4 @@ module_init(af_ieee802154_init); +--- a/net/ieee802154/socket.c ++++ b/net/ieee802154/socket.c +@@ -1122,4 +1122,4 @@ module_init(af_ieee802154_init); module_exit(af_ieee802154_remove); MODULE_LICENSE("GPL"); -MODULE_ALIAS_NETPROTO(PF_IEEE802154); +/* MODULE_ALIAS_NETPROTO(PF_IEEE802154); */ --- -1.7.2.3 - diff --git a/debian/patches/debian/gitignore.patch b/debian/patches/debian/gitignore.patch index 22547eac3..2dc995449 100644 --- a/debian/patches/debian/gitignore.patch +++ b/debian/patches/debian/gitignore.patch @@ -5,7 +5,7 @@ Forwarded: not-needed --- a/.gitignore +++ b/.gitignore -@@ -47,17 +47,6 @@ +@@ -49,22 +49,11 @@ Module.symvers /Module.markers # @@ -14,6 +14,11 @@ Forwarded: not-needed -/debian/ - -# + # tar directory (make tar*-pkg) + # + /tar-install/ + + # -# git files that we don't want to ignore even it they are dot-files -# -!.gitignore diff --git a/debian/patches/debian/i2o-disable-i2o_ext_adaptec-on-64bit.patch b/debian/patches/debian/i2o-disable-i2o_ext_adaptec-on-64bit.patch index fe1f55f56..3a2f8420d 100644 --- a/debian/patches/debian/i2o-disable-i2o_ext_adaptec-on-64bit.patch +++ b/debian/patches/debian/i2o-disable-i2o_ext_adaptec-on-64bit.patch @@ -15,9 +15,9 @@ In file included from /tmp/buildd/linux-3.16.2/drivers/message/i2o/config-osm.c: ((void __user *)sg[j].addr_bus, sg_list[j].virt, ^ ---- a/drivers/message/i2o/Kconfig -+++ b/drivers/message/i2o/Kconfig -@@ -37,6 +37,7 @@ config I2O_LCT_NOTIFY_ON_CHANGES +--- a/drivers/staging/i2o/Kconfig ++++ b/drivers/staging/i2o/Kconfig +@@ -36,6 +36,7 @@ config I2O_LCT_NOTIFY_ON_CHANGES config I2O_EXT_ADAPTEC bool "Enable Adaptec extensions" diff --git a/debian/patches/features/all/cgroups-Allow-memory-cgroup-support-to-be-included-b.patch b/debian/patches/features/all/cgroups-Allow-memory-cgroup-support-to-be-included-b.patch index 7af408a46..b2a6af631 100644 --- a/debian/patches/features/all/cgroups-Allow-memory-cgroup-support-to-be-included-b.patch +++ b/debian/patches/features/all/cgroups-Allow-memory-cgroup-support-to-be-included-b.patch @@ -32,7 +32,7 @@ Signed-off-by: Ben Hutchings a single hierarchy --- a/init/Kconfig +++ b/init/Kconfig -@@ -983,6 +983,14 @@ config MEMCG +@@ -990,6 +990,14 @@ config MEMCG Provides a memory resource controller that manages both anonymous memory and page cache. (See Documentation/cgroups/memory.txt) @@ -49,7 +49,7 @@ Signed-off-by: Ben Hutchings depends on MEMCG && SWAP --- a/kernel/cgroup.c +++ b/kernel/cgroup.c -@@ -5366,7 +5366,7 @@ out_free: +@@ -5370,7 +5370,7 @@ out_free: kfree(pathbuf); } @@ -58,7 +58,7 @@ Signed-off-by: Ben Hutchings { struct cgroup_subsys *ss; char *token; -@@ -5378,17 +5378,29 @@ static int __init cgroup_disable(char *s +@@ -5382,17 +5382,29 @@ static int __init cgroup_disable(char *s for_each_subsys(ss, i) { if (!strcmp(token, ss->name)) { @@ -93,8 +93,8 @@ Signed-off-by: Ben Hutchings printk("cgroup: using legacy files on the default hierarchy\n"); --- a/mm/memcontrol.c +++ b/mm/memcontrol.c -@@ -5387,6 +5387,9 @@ static void mem_cgroup_bind(struct cgrou - } +@@ -5379,6 +5379,9 @@ static struct cftype memory_files[] = { + }; struct cgroup_subsys memory_cgrp_subsys = { +#ifdef CONFIG_MEMCG_DISABLED diff --git a/debian/patches/features/all/efi-expose-underlying-uefi-firmware-platform-size-to.patch b/debian/patches/features/all/efi-expose-underlying-uefi-firmware-platform-size-to.patch deleted file mode 100644 index e85d69280..000000000 --- a/debian/patches/features/all/efi-expose-underlying-uefi-firmware-platform-size-to.patch +++ /dev/null @@ -1,49 +0,0 @@ -From: Steve McIntyre -Date: Fri, 9 Jan 2015 15:29:53 +0000 -Subject: efi: Expose underlying UEFI firmware platform size to userland -Origin: https://git.kernel.org/cgit/linux/kernel/git/mfleming/efi.git//commit?id=2859dff97e54db4795b8b7d9606cb8efcec722ff - -In some cases (e.g. Intel Bay Trail machines), the kernel will happily -run in 64-bit even if the underlying UEFI firmware platform is -32-bit. That's great, but it's difficult for userland utilities like -grub-install to do the right thing in such a situation. - -The kernel already knows about the size of the firmware via -efi_enabled(EFI_64BIT). Add an extra sysfs interface -/sys/firmware/efi/fw_platform_size to expose that information to -userland for low-level utilities to use. - -Signed-off-by: Steve McIntyre -Cc: Matthew Garrett -Signed-off-by: Matt Fleming ---- - drivers/firmware/efi/efi.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - ---- a/drivers/firmware/efi/efi.c -+++ b/drivers/firmware/efi/efi.c -@@ -90,15 +90,24 @@ EFI_ATTR_SHOW(fw_vendor); - EFI_ATTR_SHOW(runtime); - EFI_ATTR_SHOW(config_table); - -+static ssize_t fw_platform_size_show(struct kobject *kobj, -+ struct kobj_attribute *attr, char *buf) -+{ -+ return sprintf(buf, "%d\n", efi_enabled(EFI_64BIT) ? 64 : 32); -+} -+ - static struct kobj_attribute efi_attr_fw_vendor = __ATTR_RO(fw_vendor); - static struct kobj_attribute efi_attr_runtime = __ATTR_RO(runtime); - static struct kobj_attribute efi_attr_config_table = __ATTR_RO(config_table); -+static struct kobj_attribute efi_attr_fw_platform_size = -+ __ATTR_RO(fw_platform_size); - - static struct attribute *efi_subsys_attrs[] = { - &efi_attr_systab.attr, - &efi_attr_fw_vendor.attr, - &efi_attr_runtime.attr, - &efi_attr_config_table.attr, -+ &efi_attr_fw_platform_size.attr, - NULL, - }; - diff --git a/debian/patches/features/all/psmouse/input-psmouse-disable-changing-resolution-rate-scale.patch b/debian/patches/features/all/psmouse/input-psmouse-disable-changing-resolution-rate-scale.patch deleted file mode 100644 index dc896eba9..000000000 --- a/debian/patches/features/all/psmouse/input-psmouse-disable-changing-resolution-rate-scale.patch +++ /dev/null @@ -1,119 +0,0 @@ -From: Mathias Gottschlag -Date: Sat, 7 Mar 2015 13:32:10 -0800 -Subject: [5/6] Input: psmouse - disable changing resolution/rate/scale for - FocalTech -Origin: https://git.kernel.org/linus/4ec212f003d2430b0b2748b8a3008255f39cfe13 - -These PS/2 commands make some touchpads stop responding, so this commit -adds some dummy functions to replace the generic implementation. Because -scale changes were not encapsulated in a method of struct psmouse yet, this -commit adds a method set_scale to psmouse. - -Signed-off-by: Mathias Gottschlag -Signed-off-by: Dmitry Torokhov ---- - drivers/input/mouse/focaltech.c | 25 +++++++++++++++++++++++++ - drivers/input/mouse/psmouse-base.c | 14 +++++++++++++- - drivers/input/mouse/psmouse.h | 6 ++++++ - 3 files changed, 44 insertions(+), 1 deletion(-) - ---- a/drivers/input/mouse/focaltech.c -+++ b/drivers/input/mouse/focaltech.c -@@ -386,6 +386,23 @@ static int focaltech_read_size(struct ps - - return 0; - } -+ -+void focaltech_set_resolution(struct psmouse *psmouse, unsigned int resolution) -+{ -+ /* not supported yet */ -+} -+ -+static void focaltech_set_rate(struct psmouse *psmouse, unsigned int rate) -+{ -+ /* not supported yet */ -+} -+ -+static void focaltech_set_scale(struct psmouse *psmouse, -+ enum psmouse_scale scale) -+{ -+ /* not supported yet */ -+} -+ - int focaltech_init(struct psmouse *psmouse) - { - struct focaltech_data *priv; -@@ -420,6 +437,14 @@ int focaltech_init(struct psmouse *psmou - psmouse->cleanup = focaltech_reset; - /* resync is not supported yet */ - psmouse->resync_time = 0; -+ /* -+ * rate/resolution/scale changes are not supported yet, and -+ * the generic implementations of these functions seem to -+ * confuse some touchpads -+ */ -+ psmouse->set_resolution = focaltech_set_resolution; -+ psmouse->set_rate = focaltech_set_rate; -+ psmouse->set_scale = focaltech_set_scale; - - return 0; - ---- a/drivers/input/mouse/psmouse-base.c -+++ b/drivers/input/mouse/psmouse-base.c -@@ -454,6 +454,17 @@ static void psmouse_set_rate(struct psmo - } - - /* -+ * Here we set the mouse scaling. -+ */ -+ -+static void psmouse_set_scale(struct psmouse *psmouse, enum psmouse_scale scale) -+{ -+ ps2_command(&psmouse->ps2dev, NULL, -+ scale == PSMOUSE_SCALE21 ? PSMOUSE_CMD_SETSCALE21 : -+ PSMOUSE_CMD_SETSCALE11); -+} -+ -+/* - * psmouse_poll() - default poll handler. Everyone except for ALPS uses it. - */ - -@@ -687,6 +698,7 @@ static void psmouse_apply_defaults(struc - - psmouse->set_rate = psmouse_set_rate; - psmouse->set_resolution = psmouse_set_resolution; -+ psmouse->set_scale = psmouse_set_scale; - psmouse->poll = psmouse_poll; - psmouse->protocol_handler = psmouse_process_byte; - psmouse->pktsize = 3; -@@ -1158,7 +1170,7 @@ static void psmouse_initialize(struct ps - if (psmouse_max_proto != PSMOUSE_PS2) { - psmouse->set_rate(psmouse, psmouse->rate); - psmouse->set_resolution(psmouse, psmouse->resolution); -- ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_SETSCALE11); -+ psmouse->set_scale(psmouse, PSMOUSE_SCALE11); - } - } - ---- a/drivers/input/mouse/psmouse.h -+++ b/drivers/input/mouse/psmouse.h -@@ -36,6 +36,11 @@ typedef enum { - PSMOUSE_FULL_PACKET - } psmouse_ret_t; - -+enum psmouse_scale { -+ PSMOUSE_SCALE11, -+ PSMOUSE_SCALE21 -+}; -+ - struct psmouse { - void *private; - struct input_dev *dev; -@@ -67,6 +72,7 @@ struct psmouse { - psmouse_ret_t (*protocol_handler)(struct psmouse *psmouse); - void (*set_rate)(struct psmouse *psmouse, unsigned int rate); - void (*set_resolution)(struct psmouse *psmouse, unsigned int resolution); -+ void (*set_scale)(struct psmouse *psmouse, enum psmouse_scale scale); - - int (*reconnect)(struct psmouse *psmouse); - void (*disconnect)(struct psmouse *psmouse); diff --git a/debian/patches/features/all/psmouse/input-psmouse-disable-palm-detection-in-the-focaltec.patch b/debian/patches/features/all/psmouse/input-psmouse-disable-palm-detection-in-the-focaltec.patch deleted file mode 100644 index 86820deca..000000000 --- a/debian/patches/features/all/psmouse/input-psmouse-disable-palm-detection-in-the-focaltec.patch +++ /dev/null @@ -1,38 +0,0 @@ -From: Mathias Gottschlag -Date: Sat, 7 Mar 2015 13:38:52 -0800 -Subject: [6/6] Input: psmouse - disable "palm detection" in the focaltech - driver -Origin: https://git.kernel.org/linus/4eb8d6e7e5aa14572bc389e554aad9869188cdcd - -Apparently, the threshold for large contact area seems to be rather low on -some devices, causing the touchpad to frequently freeze during normal -usage. Because we do now know how we are supposed to use the value in -question, this commit just drops the related code completely. - -Signed-off-by: Mathias Gottschlag -Signed-off-by: Dmitry Torokhov ---- - drivers/input/mouse/focaltech.c | 10 ---------- - 1 file changed, 10 deletions(-) - -diff --git a/drivers/input/mouse/focaltech.c b/drivers/input/mouse/focaltech.c -index 891a271..23d2594 100644 ---- a/drivers/input/mouse/focaltech.c -+++ b/drivers/input/mouse/focaltech.c -@@ -185,16 +185,6 @@ static void focaltech_process_abs_packet(struct psmouse *psmouse, - - state->pressed = (packet[0] >> 4) & 1; - -- /* -- * packet[5] contains some kind of tool size in the most -- * significant nibble. 0xff is a special value (latching) that -- * signals a large contact area. -- */ -- if (packet[5] == 0xff) { -- state->fingers[finger].valid = false; -- return; -- } -- - state->fingers[finger].x = ((packet[1] & 0xf) << 8) | packet[2]; - state->fingers[finger].y = (packet[3] << 8) | packet[4]; - state->fingers[finger].valid = true; diff --git a/debian/patches/features/all/psmouse/input-psmouse-ensure-that-focaltech-reports-consiste.patch b/debian/patches/features/all/psmouse/input-psmouse-ensure-that-focaltech-reports-consiste.patch deleted file mode 100644 index a0b5a7ec0..000000000 --- a/debian/patches/features/all/psmouse/input-psmouse-ensure-that-focaltech-reports-consiste.patch +++ /dev/null @@ -1,41 +0,0 @@ -From: Mathias Gottschlag -Date: Sat, 7 Mar 2015 13:27:08 -0800 -Subject: [4/6] Input: psmouse - ensure that focaltech reports consistent - coordinates -Origin: https://git.kernel.org/linus/679d83ea9390636ded518f533af0cefbade317c7 - -We don't know whether x_max or y_max really hold the maximum possible -coordinates, and we don't know for sure whether we correctly interpret the -coordinates sent by the touchpad, so we clamp the reported values to -prevent confusion in userspace code. - -Signed-off-by: Mathias Gottschlag -Signed-off-by: Dmitry Torokhov ---- - drivers/input/mouse/focaltech.c | 12 ++++++++++-- - 1 file changed, 10 insertions(+), 2 deletions(-) - -diff --git a/drivers/input/mouse/focaltech.c b/drivers/input/mouse/focaltech.c -index e8fafe8..c66e0e0 100644 ---- a/drivers/input/mouse/focaltech.c -+++ b/drivers/input/mouse/focaltech.c -@@ -126,9 +126,17 @@ static void focaltech_report_state(struct psmouse *psmouse) - input_mt_slot(dev, i); - input_mt_report_slot_state(dev, MT_TOOL_FINGER, active); - if (active) { -- input_report_abs(dev, ABS_MT_POSITION_X, finger->x); -+ unsigned int clamped_x, clamped_y; -+ /* -+ * The touchpad might report invalid data, so we clamp -+ * the resulting values so that we do not confuse -+ * userspace. -+ */ -+ clamped_x = clamp(finger->x, 0U, priv->x_max); -+ clamped_y = clamp(finger->y, 0U, priv->y_max); -+ input_report_abs(dev, ABS_MT_POSITION_X, clamped_x); - input_report_abs(dev, ABS_MT_POSITION_Y, -- priv->y_max - finger->y); -+ priv->y_max - clamped_y); - } - } - input_mt_report_pointer_emulation(dev, true); diff --git a/debian/patches/features/all/psmouse/input-psmouse-remove-hardcoded-touchpad-size-from-th.patch b/debian/patches/features/all/psmouse/input-psmouse-remove-hardcoded-touchpad-size-from-th.patch deleted file mode 100644 index 55fc46ba8..000000000 --- a/debian/patches/features/all/psmouse/input-psmouse-remove-hardcoded-touchpad-size-from-th.patch +++ /dev/null @@ -1,38 +0,0 @@ -From: Mathias Gottschlag -Date: Sat, 7 Mar 2015 13:26:31 -0800 -Subject: [3/6] Input: psmouse - remove hardcoded touchpad size from the - focaltech driver -Origin: https://git.kernel.org/linus/3e9845251926723319fb60c9e546fe42d3d11687 - -The size has in most cases already been fetched from the touchpad, the -hardcoded values should have been removed. - -Signed-off-by: Mathias Gottschlag -Signed-off-by: Dmitry Torokhov ---- - drivers/input/mouse/focaltech.c | 5 +---- - 1 file changed, 1 insertion(+), 4 deletions(-) - -diff --git a/drivers/input/mouse/focaltech.c b/drivers/input/mouse/focaltech.c -index 757f78a..e8fafe8 100644 ---- a/drivers/input/mouse/focaltech.c -+++ b/drivers/input/mouse/focaltech.c -@@ -67,9 +67,6 @@ static void focaltech_reset(struct psmouse *psmouse) - - #define FOC_MAX_FINGERS 5 - --#define FOC_MAX_X 2431 --#define FOC_MAX_Y 1663 -- - /* - * Current state of a single finger on the touchpad. - */ -@@ -131,7 +128,7 @@ static void focaltech_report_state(struct psmouse *psmouse) - if (active) { - input_report_abs(dev, ABS_MT_POSITION_X, finger->x); - input_report_abs(dev, ABS_MT_POSITION_Y, -- FOC_MAX_Y - finger->y); -+ priv->y_max - finger->y); - } - } - input_mt_report_pointer_emulation(dev, true); diff --git a/debian/patches/features/all/psmouse/input-psmouse-support-for-the-focaltech-ps-2-protoco.patch b/debian/patches/features/all/psmouse/input-psmouse-support-for-the-focaltech-ps-2-protoco.patch deleted file mode 100644 index 5af42e8fb..000000000 --- a/debian/patches/features/all/psmouse/input-psmouse-support-for-the-focaltech-ps-2-protoco.patch +++ /dev/null @@ -1,572 +0,0 @@ -From: Mathias Gottschlag -Date: Mon, 29 Dec 2014 09:26:35 -0800 -Subject: [2/6] Input: psmouse - support for the FocalTech PS/2 protocol - extensions -Origin: https://git.kernel.org/linus/05be1d079ec0b3691783e4384b1ada82149ff7d2 - -Most of the protocol for these touchpads has been reverse engineered. This -commit adds a basic multitouch-capable driver. - -A lot of the protocol is still unknown. Especially, we don't know how to -identify the device yet apart from the PNP ID. - -The previous workaround for these devices has been left in place in case -the driver is not compiled into the kernel or in case some other device -with the same PNP ID is not recognized by the driver yet still has the same -problems with the device probing code. - -Signed-off-by: Mathias Gottschlag -Reviewed-by: Hans de Goede -Signed-off-by: Dmitry Torokhov ---- - drivers/input/mouse/Kconfig | 10 + - drivers/input/mouse/focaltech.c | 408 ++++++++++++++++++++++++++++++++++++- - drivers/input/mouse/focaltech.h | 2 + - drivers/input/mouse/psmouse-base.c | 32 ++- - drivers/input/mouse/psmouse.h | 1 + - 5 files changed, 436 insertions(+), 17 deletions(-) - ---- a/drivers/input/mouse/Kconfig -+++ b/drivers/input/mouse/Kconfig -@@ -146,6 +146,16 @@ config MOUSE_PS2_OLPC - - If unsure, say N. - -+config MOUSE_PS2_FOCALTECH -+ bool "FocalTech PS/2 mouse protocol extension" if EXPERT -+ default y -+ depends on MOUSE_PS2 -+ help -+ Say Y here if you have a FocalTech PS/2 TouchPad connected to -+ your system. -+ -+ If unsure, say Y. -+ - config MOUSE_SERIAL - tristate "Serial mouse" - select SERIO ---- a/drivers/input/mouse/focaltech.c -+++ b/drivers/input/mouse/focaltech.c -@@ -2,6 +2,7 @@ - * Focaltech TouchPad PS/2 mouse driver - * - * Copyright (c) 2014 Red Hat Inc. -+ * Copyright (c) 2014 Mathias Gottschlag - * - * 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 -@@ -13,15 +14,14 @@ - * Hans de Goede - */ - --/* -- * The Focaltech PS/2 touchpad protocol is unknown. This drivers deals with -- * detection only, to avoid further detection attempts confusing the touchpad -- * this way it at least works in PS/2 mouse compatibility mode. -- */ - - #include - #include -+#include -+#include -+#include - #include "psmouse.h" -+#include "focaltech.h" - - static const char * const focaltech_pnp_ids[] = { - "FLT0101", -@@ -30,6 +30,12 @@ static const char * const focaltech_pnp_ - NULL - }; - -+/* -+ * Even if the kernel is built without support for Focaltech PS/2 touchpads (or -+ * when the real driver fails to recognize the device), we still have to detect -+ * them in order to avoid further detection attempts confusing the touchpad. -+ * This way it at least works in PS/2 mouse compatibility mode. -+ */ - int focaltech_detect(struct psmouse *psmouse, bool set_properties) - { - if (!psmouse_matches_pnp_id(psmouse, focaltech_pnp_ids)) -@@ -37,16 +43,404 @@ int focaltech_detect(struct psmouse *psm - - if (set_properties) { - psmouse->vendor = "FocalTech"; -- psmouse->name = "FocalTech Touchpad in mouse emulation mode"; -+ psmouse->name = "FocalTech Touchpad"; - } - - return 0; - } - --int focaltech_init(struct psmouse *psmouse) -+static void focaltech_reset(struct psmouse *psmouse) - { - ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_RESET_DIS); - psmouse_reset(psmouse); -+} -+ -+#ifdef CONFIG_MOUSE_PS2_FOCALTECH -+ -+/* -+ * Packet types - the numbers are not consecutive, so we might be missing -+ * something here. -+ */ -+#define FOC_TOUCH 0x3 /* bitmap of active fingers */ -+#define FOC_ABS 0x6 /* absolute position of one finger */ -+#define FOC_REL 0x9 /* relative position of 1-2 fingers */ -+ -+#define FOC_MAX_FINGERS 5 -+ -+#define FOC_MAX_X 2431 -+#define FOC_MAX_Y 1663 -+ -+/* -+ * Current state of a single finger on the touchpad. -+ */ -+struct focaltech_finger_state { -+ /* The touchpad has generated a touch event for the finger */ -+ bool active; -+ -+ /* -+ * The touchpad has sent position data for the finger. The -+ * flag is 0 when the finger is not active, and there is a -+ * time between the first touch event for the finger and the -+ * following absolute position packet for the finger where the -+ * touchpad has declared the finger to be valid, but we do not -+ * have any valid position yet. -+ */ -+ bool valid; -+ -+ /* -+ * Absolute position (from the bottom left corner) of the -+ * finger. -+ */ -+ unsigned int x; -+ unsigned int y; -+}; -+ -+/* -+ * Description of the current state of the touchpad hardware. -+ */ -+struct focaltech_hw_state { -+ /* -+ * The touchpad tracks the positions of the fingers for us, -+ * the array indices correspond to the finger indices returned -+ * in the report packages. -+ */ -+ struct focaltech_finger_state fingers[FOC_MAX_FINGERS]; -+ -+ /* True if the clickpad has been pressed. */ -+ bool pressed; -+}; -+ -+struct focaltech_data { -+ unsigned int x_max, y_max; -+ struct focaltech_hw_state state; -+}; -+ -+static void focaltech_report_state(struct psmouse *psmouse) -+{ -+ struct focaltech_data *priv = psmouse->private; -+ struct focaltech_hw_state *state = &priv->state; -+ struct input_dev *dev = psmouse->dev; -+ int i; -+ -+ for (i = 0; i < FOC_MAX_FINGERS; i++) { -+ struct focaltech_finger_state *finger = &state->fingers[i]; -+ bool active = finger->active && finger->valid; -+ -+ input_mt_slot(dev, i); -+ input_mt_report_slot_state(dev, MT_TOOL_FINGER, active); -+ if (active) { -+ input_report_abs(dev, ABS_MT_POSITION_X, finger->x); -+ input_report_abs(dev, ABS_MT_POSITION_Y, -+ FOC_MAX_Y - finger->y); -+ } -+ } -+ input_mt_report_pointer_emulation(dev, true); -+ -+ input_report_key(psmouse->dev, BTN_LEFT, state->pressed); -+ input_sync(psmouse->dev); -+} -+ -+static void focaltech_process_touch_packet(struct psmouse *psmouse, -+ unsigned char *packet) -+{ -+ struct focaltech_data *priv = psmouse->private; -+ struct focaltech_hw_state *state = &priv->state; -+ unsigned char fingers = packet[1]; -+ int i; -+ -+ state->pressed = (packet[0] >> 4) & 1; -+ -+ /* the second byte contains a bitmap of all fingers touching the pad */ -+ for (i = 0; i < FOC_MAX_FINGERS; i++) { -+ state->fingers[i].active = fingers & 0x1; -+ if (!state->fingers[i].active) { -+ /* -+ * Even when the finger becomes active again, we still -+ * will have to wait for the first valid position. -+ */ -+ state->fingers[i].valid = false; -+ } -+ fingers >>= 1; -+ } -+} -+ -+static void focaltech_process_abs_packet(struct psmouse *psmouse, -+ unsigned char *packet) -+{ -+ struct focaltech_data *priv = psmouse->private; -+ struct focaltech_hw_state *state = &priv->state; -+ unsigned int finger; -+ -+ finger = (packet[1] >> 4) - 1; -+ if (finger >= FOC_MAX_FINGERS) { -+ psmouse_err(psmouse, "Invalid finger in abs packet: %d\n", -+ finger); -+ return; -+ } -+ -+ state->pressed = (packet[0] >> 4) & 1; -+ -+ /* -+ * packet[5] contains some kind of tool size in the most -+ * significant nibble. 0xff is a special value (latching) that -+ * signals a large contact area. -+ */ -+ if (packet[5] == 0xff) { -+ state->fingers[finger].valid = false; -+ return; -+ } -+ -+ state->fingers[finger].x = ((packet[1] & 0xf) << 8) | packet[2]; -+ state->fingers[finger].y = (packet[3] << 8) | packet[4]; -+ state->fingers[finger].valid = true; -+} -+ -+static void focaltech_process_rel_packet(struct psmouse *psmouse, -+ unsigned char *packet) -+{ -+ struct focaltech_data *priv = psmouse->private; -+ struct focaltech_hw_state *state = &priv->state; -+ int finger1, finger2; -+ -+ state->pressed = packet[0] >> 7; -+ finger1 = ((packet[0] >> 4) & 0x7) - 1; -+ if (finger1 < FOC_MAX_FINGERS) { -+ state->fingers[finger1].x += (char)packet[1]; -+ state->fingers[finger1].y += (char)packet[2]; -+ } else { -+ psmouse_err(psmouse, "First finger in rel packet invalid: %d\n", -+ finger1); -+ } -+ -+ /* -+ * If there is an odd number of fingers, the last relative -+ * packet only contains one finger. In this case, the second -+ * finger index in the packet is 0 (we subtract 1 in the lines -+ * above to create array indices, so the finger will overflow -+ * and be above FOC_MAX_FINGERS). -+ */ -+ finger2 = ((packet[3] >> 4) & 0x7) - 1; -+ if (finger2 < FOC_MAX_FINGERS) { -+ state->fingers[finger2].x += (char)packet[4]; -+ state->fingers[finger2].y += (char)packet[5]; -+ } -+} -+ -+static void focaltech_process_packet(struct psmouse *psmouse) -+{ -+ unsigned char *packet = psmouse->packet; -+ -+ switch (packet[0] & 0xf) { -+ case FOC_TOUCH: -+ focaltech_process_touch_packet(psmouse, packet); -+ break; -+ -+ case FOC_ABS: -+ focaltech_process_abs_packet(psmouse, packet); -+ break; -+ -+ case FOC_REL: -+ focaltech_process_rel_packet(psmouse, packet); -+ break; -+ -+ default: -+ psmouse_err(psmouse, "Unknown packet type: %02x\n", packet[0]); -+ break; -+ } -+ -+ focaltech_report_state(psmouse); -+} -+ -+static psmouse_ret_t focaltech_process_byte(struct psmouse *psmouse) -+{ -+ if (psmouse->pktcnt >= 6) { /* Full packet received */ -+ focaltech_process_packet(psmouse); -+ return PSMOUSE_FULL_PACKET; -+ } -+ -+ /* -+ * We might want to do some validation of the data here, but -+ * we do not know the protocol well enough -+ */ -+ return PSMOUSE_GOOD_DATA; -+} -+ -+static int focaltech_switch_protocol(struct psmouse *psmouse) -+{ -+ struct ps2dev *ps2dev = &psmouse->ps2dev; -+ unsigned char param[3]; -+ -+ param[0] = 0; -+ if (ps2_command(ps2dev, param, 0x10f8)) -+ return -EIO; -+ -+ if (ps2_command(ps2dev, param, 0x10f8)) -+ return -EIO; -+ -+ if (ps2_command(ps2dev, param, 0x10f8)) -+ return -EIO; -+ -+ param[0] = 1; -+ if (ps2_command(ps2dev, param, 0x10f8)) -+ return -EIO; -+ -+ if (ps2_command(ps2dev, param, PSMOUSE_CMD_SETSCALE11)) -+ return -EIO; -+ -+ if (ps2_command(ps2dev, param, PSMOUSE_CMD_ENABLE)) -+ return -EIO; -+ -+ return 0; -+} -+ -+static void focaltech_disconnect(struct psmouse *psmouse) -+{ -+ focaltech_reset(psmouse); -+ kfree(psmouse->private); -+ psmouse->private = NULL; -+} -+ -+static int focaltech_reconnect(struct psmouse *psmouse) -+{ -+ int error; -+ -+ focaltech_reset(psmouse); -+ -+ error = focaltech_switch_protocol(psmouse); -+ if (error) { -+ psmouse_err(psmouse, "Unable to initialize the device\n"); -+ return error; -+ } -+ -+ return 0; -+} -+ -+static void focaltech_set_input_params(struct psmouse *psmouse) -+{ -+ struct input_dev *dev = psmouse->dev; -+ struct focaltech_data *priv = psmouse->private; -+ -+ /* -+ * Undo part of setup done for us by psmouse core since touchpad -+ * is not a relative device. -+ */ -+ __clear_bit(EV_REL, dev->evbit); -+ __clear_bit(REL_X, dev->relbit); -+ __clear_bit(REL_Y, dev->relbit); -+ __clear_bit(BTN_RIGHT, dev->keybit); -+ __clear_bit(BTN_MIDDLE, dev->keybit); -+ -+ /* -+ * Now set up our capabilities. -+ */ -+ __set_bit(EV_ABS, dev->evbit); -+ input_set_abs_params(dev, ABS_MT_POSITION_X, 0, priv->x_max, 0, 0); -+ input_set_abs_params(dev, ABS_MT_POSITION_Y, 0, priv->y_max, 0, 0); -+ input_mt_init_slots(dev, 5, INPUT_MT_POINTER); -+ __set_bit(INPUT_PROP_BUTTONPAD, dev->propbit); -+} -+ -+static int focaltech_read_register(struct ps2dev *ps2dev, int reg, -+ unsigned char *param) -+{ -+ if (ps2_command(ps2dev, param, PSMOUSE_CMD_SETSCALE11)) -+ return -EIO; -+ -+ param[0] = 0; -+ if (ps2_command(ps2dev, param, PSMOUSE_CMD_SETRES)) -+ return -EIO; -+ -+ if (ps2_command(ps2dev, param, PSMOUSE_CMD_SETRES)) -+ return -EIO; -+ -+ if (ps2_command(ps2dev, param, PSMOUSE_CMD_SETRES)) -+ return -EIO; -+ -+ param[0] = reg; -+ if (ps2_command(ps2dev, param, PSMOUSE_CMD_SETRES)) -+ return -EIO; -+ -+ if (ps2_command(ps2dev, param, PSMOUSE_CMD_GETINFO)) -+ return -EIO; -+ -+ return 0; -+} -+ -+static int focaltech_read_size(struct psmouse *psmouse) -+{ -+ struct ps2dev *ps2dev = &psmouse->ps2dev; -+ struct focaltech_data *priv = psmouse->private; -+ char param[3]; -+ -+ if (focaltech_read_register(ps2dev, 2, param)) -+ return -EIO; -+ -+ /* not sure whether this is 100% correct */ -+ priv->x_max = (unsigned char)param[1] * 128; -+ priv->y_max = (unsigned char)param[2] * 128; -+ -+ return 0; -+} -+int focaltech_init(struct psmouse *psmouse) -+{ -+ struct focaltech_data *priv; -+ int error; -+ -+ psmouse->private = priv = kzalloc(sizeof(struct focaltech_data), -+ GFP_KERNEL); -+ if (!priv) -+ return -ENOMEM; -+ -+ focaltech_reset(psmouse); -+ -+ error = focaltech_read_size(psmouse); -+ if (error) { -+ psmouse_err(psmouse, -+ "Unable to read the size of the touchpad\n"); -+ goto fail; -+ } -+ -+ error = focaltech_switch_protocol(psmouse); -+ if (error) { -+ psmouse_err(psmouse, "Unable to initialize the device\n"); -+ goto fail; -+ } -+ -+ focaltech_set_input_params(psmouse); -+ -+ psmouse->protocol_handler = focaltech_process_byte; -+ psmouse->pktsize = 6; -+ psmouse->disconnect = focaltech_disconnect; -+ psmouse->reconnect = focaltech_reconnect; -+ psmouse->cleanup = focaltech_reset; -+ /* resync is not supported yet */ -+ psmouse->resync_time = 0; - - return 0; -+ -+fail: -+ focaltech_reset(psmouse); -+ kfree(priv); -+ return error; - } -+ -+bool focaltech_supported(void) -+{ -+ return true; -+} -+ -+#else /* CONFIG_MOUSE_PS2_FOCALTECH */ -+ -+int focaltech_init(struct psmouse *psmouse) -+{ -+ focaltech_reset(psmouse); -+ -+ return 0; -+} -+ -+bool focaltech_supported(void) -+{ -+ return false; -+} -+ -+#endif /* CONFIG_MOUSE_PS2_FOCALTECH */ ---- a/drivers/input/mouse/focaltech.h -+++ b/drivers/input/mouse/focaltech.h -@@ -2,6 +2,7 @@ - * Focaltech TouchPad PS/2 mouse driver - * - * Copyright (c) 2014 Red Hat Inc. -+ * Copyright (c) 2014 Mathias Gottschlag - * - * 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 -@@ -18,5 +19,6 @@ - - int focaltech_detect(struct psmouse *psmouse, bool set_properties); - int focaltech_init(struct psmouse *psmouse); -+bool focaltech_supported(void); - - #endif ---- a/drivers/input/mouse/psmouse-base.c -+++ b/drivers/input/mouse/psmouse-base.c -@@ -723,16 +723,19 @@ static int psmouse_extensions(struct psm - - /* Always check for focaltech, this is safe as it uses pnp-id matching */ - if (psmouse_do_detect(focaltech_detect, psmouse, set_properties) == 0) { -- if (!set_properties || focaltech_init(psmouse) == 0) { -- /* -- * Not supported yet, use bare protocol. -- * Note that we need to also restrict -- * psmouse_max_proto so that psmouse_initialize() -- * does not try to reset rate and resolution, -- * because even that upsets the device. -- */ -- psmouse_max_proto = PSMOUSE_PS2; -- return PSMOUSE_PS2; -+ if (max_proto > PSMOUSE_IMEX) { -+ if (!set_properties || focaltech_init(psmouse) == 0) { -+ if (focaltech_supported()) -+ return PSMOUSE_FOCALTECH; -+ /* -+ * Note that we need to also restrict -+ * psmouse_max_proto so that psmouse_initialize() -+ * does not try to reset rate and resolution, -+ * because even that upsets the device. -+ */ -+ psmouse_max_proto = PSMOUSE_PS2; -+ return PSMOUSE_PS2; -+ } - } - } - -@@ -1061,6 +1064,15 @@ static const struct psmouse_protocol psm - .alias = "cortps", - .detect = cortron_detect, - }, -+#ifdef CONFIG_MOUSE_PS2_FOCALTECH -+ { -+ .type = PSMOUSE_FOCALTECH, -+ .name = "FocalTechPS/2", -+ .alias = "focaltech", -+ .detect = focaltech_detect, -+ .init = focaltech_init, -+ }, -+#endif - { - .type = PSMOUSE_AUTO, - .name = "auto", ---- a/drivers/input/mouse/psmouse.h -+++ b/drivers/input/mouse/psmouse.h -@@ -96,6 +96,7 @@ enum psmouse_type { - PSMOUSE_FSP, - PSMOUSE_SYNAPTICS_RELATIVE, - PSMOUSE_CYPRESS, -+ PSMOUSE_FOCALTECH, - PSMOUSE_AUTO /* This one should always be last */ - }; - diff --git a/debian/patches/features/arm/ARM-dts-sun4i-cubieboard-add-axp209-regulator-nodes.patch b/debian/patches/features/arm/ARM-dts-sun4i-cubieboard-add-axp209-regulator-nodes.patch deleted file mode 100644 index fab31efb5..000000000 --- a/debian/patches/features/arm/ARM-dts-sun4i-cubieboard-add-axp209-regulator-nodes.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 84d678e330f80376456c764fe1f9c27d9b79610c Mon Sep 17 00:00:00 2001 -From: Chen-Yu Tsai -Date: Mon, 12 Jan 2015 12:34:09 +0800 -Subject: [PATCH 6/7] ARM: dts: sun4i: cubieboard: add axp209 regulator nodes -Origin: https://git.kernel.org/linus/ce124f7a18c5ebc9dc93aaec15aaef779c8708ae - -This patch adds the regulator nodes for the axp209 by including -the axp209 dtsi. As the inputs of these regulators are from the -axp209's PS output, which is basically just a mux over the 2 -inputs, it is considered to be unregulated. Thus we do not provide -input supply properties for them. - -The regulator names and constraints are based on the board -schematics and the SoC datasheet. - -DCDC2 is used as the cpu power supply. This patch also references -it from the cpu node. - -Also get rid of axp209 properties already set in axp209.dtsi. - -Signed-off-by: Chen-Yu Tsai -Signed-off-by: Maxime Ripard ---- - arch/arm/boot/dts/sun4i-a10-cubieboard.dts | 35 ++++++++++++++++++++++++++---- - 1 file changed, 31 insertions(+), 4 deletions(-) - -diff --git a/arch/arm/boot/dts/sun4i-a10-cubieboard.dts b/arch/arm/boot/dts/sun4i-a10-cubieboard.dts -index 539b693..5543b76 100644 ---- a/arch/arm/boot/dts/sun4i-a10-cubieboard.dts -+++ b/arch/arm/boot/dts/sun4i-a10-cubieboard.dts -@@ -92,12 +92,8 @@ - status = "okay"; - - axp209: pmic@34 { -- compatible = "x-powers,axp209"; - reg = <0x34>; - interrupts = <0>; -- -- interrupt-controller; -- #interrupt-cells = <1>; - }; - }; - -@@ -137,3 +133,34 @@ - status = "okay"; - }; - }; -+ -+#include "axp209.dtsi" -+ -+&cpu0 { -+ cpu-supply = <®_dcdc2>; -+}; -+ -+®_dcdc2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1450000>; -+ regulator-name = "vdd-cpu"; -+}; -+ -+®_dcdc3 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-int-dll"; -+}; -+ -+®_ldo1 { -+ regulator-name = "vdd-rtc"; -+}; -+ -+®_ldo2 { -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "avcc"; -+}; --- -2.1.4 - diff --git a/debian/patches/features/arm/ARM-dts-sun5i-Enable-axp209-support-on-A13-OLinuxIno.patch b/debian/patches/features/arm/ARM-dts-sun5i-Enable-axp209-support-on-A13-OLinuxIno.patch deleted file mode 100644 index 1f5810771..000000000 --- a/debian/patches/features/arm/ARM-dts-sun5i-Enable-axp209-support-on-A13-OLinuxIno.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 3e4ab009b2f03bf5153320a52c0c18e0f631a7fa Mon Sep 17 00:00:00 2001 -From: Hans de Goede -Date: Sun, 25 Jan 2015 15:36:08 +0100 -Subject: [PATCH 7/7] ARM: dts: sun5i: Enable axp209 support on A13-OLinuxIno -Origin: https://git.kernel.org/linus/c121f45e6291e00c71b919ce4a439e0b6e829668 - -The (non micro) A13-OLinuxIno has an axp203 pmic, enable support for this. - -Signed-off-by: Hans de Goede -Signed-off-by: Maxime Ripard ---- - arch/arm/boot/dts/sun5i-a13-olinuxino.dts | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/arch/arm/boot/dts/sun5i-a13-olinuxino.dts b/arch/arm/boot/dts/sun5i-a13-olinuxino.dts -index 429994e..59261aa 100644 ---- a/arch/arm/boot/dts/sun5i-a13-olinuxino.dts -+++ b/arch/arm/boot/dts/sun5i-a13-olinuxino.dts -@@ -76,6 +76,15 @@ - pinctrl-names = "default"; - pinctrl-0 = <&i2c0_pins_a>; - status = "okay"; -+ -+ axp209: pmic@34 { -+ compatible = "x-powers,axp209"; -+ reg = <0x34>; -+ interrupts = <0>; -+ -+ interrupt-controller; -+ #interrupt-cells = <1>; -+ }; - }; - - i2c1: i2c@01c2b000 { --- -2.1.4 - diff --git a/debian/patches/features/arm/ARM-dts-sun7i-cubieboard2-add-axp209-regulator-nodes.patch b/debian/patches/features/arm/ARM-dts-sun7i-cubieboard2-add-axp209-regulator-nodes.patch deleted file mode 100644 index 34720022e..000000000 --- a/debian/patches/features/arm/ARM-dts-sun7i-cubieboard2-add-axp209-regulator-nodes.patch +++ /dev/null @@ -1,85 +0,0 @@ -From 078a04de9f3a4ad1021ec647040b87381c9e5776 Mon Sep 17 00:00:00 2001 -From: Chen-Yu Tsai -Date: Mon, 12 Jan 2015 12:34:04 +0800 -Subject: [PATCH 4/7] ARM: dts: sun7i: cubieboard2: add axp209 regulator nodes -Origin: https://git.kernel.org/linus/ae265c801ffdbd58e4c7a83efc8dc08932de1f74 - -This patch adds the regulator nodes for the axp209 by including -the axp209 dtsi. As the inputs of these regulators are from the -axp209's PS output, which is basically just a mux over the 2 -inputs, it is considered to be unregulated. Thus we do not provide -input supply properties for them. - -The regulator names and constraints are based on the board -schematics and the SoC datasheet. - -DCDC2 is used as the cpu power supply. This patch also references -it from the cpu node. - -Also get rid of axp209 properties already set in axp209.dtsi. - -Signed-off-by: Chen-Yu Tsai -Signed-off-by: Maxime Ripard - -Conflicts: - arch/arm/boot/dts/sun7i-a20-cubieboard2.dts ---- - arch/arm/boot/dts/sun7i-a20-cubieboard2.dts | 35 +++++++++++++++++++++++++---- - 1 file changed, 31 insertions(+), 4 deletions(-) - -diff --git a/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts b/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts -index d4648cf..7ce74a1 100644 ---- a/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts -+++ b/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts -@@ -78,13 +78,9 @@ - status = "okay"; - - axp209: pmic@34 { -- compatible = "x-powers,axp209"; - reg = <0x34>; - interrupt-parent = <&nmi_intc>; - interrupts = <0 8>; -- -- interrupt-controller; -- #interrupt-cells = <1>; - }; - }; - -@@ -135,3 +131,34 @@ - status = "okay"; - }; - }; -+ -+#include "axp209.dtsi" -+ -+&cpu0 { -+ cpu-supply = <®_dcdc2>; -+}; -+ -+®_dcdc2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1450000>; -+ regulator-name = "vdd-cpu"; -+}; -+ -+®_dcdc3 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-int-dll"; -+}; -+ -+®_ldo1 { -+ regulator-name = "vdd-rtc"; -+}; -+ -+®_ldo2 { -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "avcc"; -+}; --- -2.1.4 - diff --git a/debian/patches/features/arm/ARM-dts-sun7i-cubietruck-add-axp209-regulator-nodes.patch b/debian/patches/features/arm/ARM-dts-sun7i-cubietruck-add-axp209-regulator-nodes.patch deleted file mode 100644 index 3aeb417b7..000000000 --- a/debian/patches/features/arm/ARM-dts-sun7i-cubietruck-add-axp209-regulator-nodes.patch +++ /dev/null @@ -1,85 +0,0 @@ -From 319a5005396069f7c1829cafccbbe918166ec51a Mon Sep 17 00:00:00 2001 -From: Chen-Yu Tsai -Date: Mon, 12 Jan 2015 12:34:05 +0800 -Subject: [PATCH 5/7] ARM: dts: sun7i: cubietruck: add axp209 regulator nodes -Origin: https://git.kernel.org/linus/0d4e29343ce6317cf5cf073346c3e66ad82d61a1 - -This patch adds the regulator nodes for the axp209 by including -the axp209 dtsi. As the inputs of these regulators are from the -axp209's PS output, which is basically just a mux over the 2 -inputs, it is considered to be unregulated. Thus we do not provide -input supply properties for them. - -The regulator names and constraints are based on the board -schematics and the SoC datasheet. - -DCDC2 is used as the cpu power supply. This patch also references -it from the cpu node. - -Also get rid of axp209 properties already set in axp209.dtsi. - -Signed-off-by: Chen-Yu Tsai -Signed-off-by: Maxime Ripard - -Conflicts: - arch/arm/boot/dts/sun7i-a20-cubietruck.dts ---- - arch/arm/boot/dts/sun7i-a20-cubietruck.dts | 35 ++++++++++++++++++++++++++---- - 1 file changed, 31 insertions(+), 4 deletions(-) - -diff --git a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts -index 96aee60..eb93cdd 100644 ---- a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts -+++ b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts -@@ -112,13 +112,9 @@ - status = "okay"; - - axp209: pmic@34 { -- compatible = "x-powers,axp209"; - reg = <0x34>; - interrupt-parent = <&nmi_intc>; - interrupts = <0 8>; -- -- interrupt-controller; -- #interrupt-cells = <1>; - }; - }; - -@@ -198,3 +194,34 @@ - gpio = <&pio 7 9 0>; - }; - }; -+ -+#include "axp209.dtsi" -+ -+&cpu0 { -+ cpu-supply = <®_dcdc2>; -+}; -+ -+®_dcdc2 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1450000>; -+ regulator-name = "vdd-cpu"; -+}; -+ -+®_dcdc3 { -+ regulator-always-on; -+ regulator-min-microvolt = <1000000>; -+ regulator-max-microvolt = <1400000>; -+ regulator-name = "vdd-int-dll"; -+}; -+ -+®_ldo1 { -+ regulator-name = "vdd-rtc"; -+}; -+ -+®_ldo2 { -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "avcc"; -+}; --- -2.1.4 - diff --git a/debian/patches/features/arm/ARM-dts-sunxi-Add-dtsi-for-AXP209-PMIC.patch b/debian/patches/features/arm/ARM-dts-sunxi-Add-dtsi-for-AXP209-PMIC.patch deleted file mode 100644 index 4d9d8d898..000000000 --- a/debian/patches/features/arm/ARM-dts-sunxi-Add-dtsi-for-AXP209-PMIC.patch +++ /dev/null @@ -1,123 +0,0 @@ -From f3fb8c8611d470e40cb3460ede6f339e810d6f19 Mon Sep 17 00:00:00 2001 -From: Chen-Yu Tsai -Date: Mon, 12 Jan 2015 12:34:02 +0800 -Subject: [PATCH 3/7] ARM: dts: sunxi: Add dtsi for AXP209 PMIC -Origin: https://git.kernel.org/linus/ddfd0232ede34e673fe338d1e5a7ec7aa022aa99 - -The AXP209 PMIC is used with some Allwinner SoCs. This patch adds -a dtsi file listing all the regulator nodes. The regulators are -initialized based on their device node names. - -Signed-off-by: Chen-Yu Tsai -Signed-off-by: Maxime Ripard ---- - arch/arm/boot/dts/axp209.dtsi | 97 +++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 97 insertions(+) - create mode 100644 arch/arm/boot/dts/axp209.dtsi - -diff --git a/arch/arm/boot/dts/axp209.dtsi b/arch/arm/boot/dts/axp209.dtsi -new file mode 100644 -index 0000000..c20cf53 ---- /dev/null -+++ b/arch/arm/boot/dts/axp209.dtsi -@@ -0,0 +1,97 @@ -+/* -+ * Copyright 2015 Chen-Yu Tsai -+ * -+ * Chen-Yu Tsai -+ * -+ * This file is dual-licensed: you can use it either under the terms -+ * of the GPL or the X11 license, at your option. Note that this dual -+ * licensing only applies to this file, and not this project as a -+ * whole. -+ * -+ * a) This file 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 file 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 file; if not, write to the Free -+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, -+ * MA 02110-1301 USA -+ * -+ * Or, alternatively, -+ * -+ * b) Permission is hereby granted, free of charge, to any person -+ * obtaining a copy of this software and associated documentation -+ * files (the "Software"), to deal in the Software without -+ * restriction, including without limitation the rights to use, -+ * copy, modify, merge, publish, distribute, sublicense, and/or -+ * sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following -+ * conditions: -+ * -+ * The above copyright notice and this permission notice shall be -+ * included in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ * OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+/* -+ * AXP202/209 Integrated Power Management Chip -+ * http://www.x-powers.com/product/AXP20X.php -+ * http://dl.linux-sunxi.org/AXP/AXP209%20Datasheet%20v1.0_cn.pdf -+ */ -+ -+&axp209 { -+ compatible = "x-powers,axp209"; -+ interrupt-controller; -+ #interrupt-cells = <1>; -+ -+ regulators { -+ /* Default work frequency for buck regulators */ -+ x-powers,dcdc-freq = <1500>; -+ -+ reg_dcdc2: dcdc2 { -+ regulator-name = "dcdc2"; -+ }; -+ -+ reg_dcdc3: dcdc3 { -+ regulator-name = "dcdc3"; -+ }; -+ -+ reg_ldo1: ldo1 { -+ /* LDO1 is a fixed output regulator */ -+ regulator-always-on; -+ regulator-min-microvolt = <1300000>; -+ regulator-max-microvolt = <1300000>; -+ regulator-name = "ldo1"; -+ }; -+ -+ reg_ldo2: ldo2 { -+ regulator-name = "ldo2"; -+ }; -+ -+ reg_ldo3: ldo3 { -+ regulator-name = "ldo3"; -+ }; -+ -+ reg_ldo4: ldo4 { -+ regulator-name = "ldo4"; -+ }; -+ -+ reg_ldo5: ldo5 { -+ regulator-name = "ldo5"; -+ }; -+ }; -+}; --- -2.1.4 - diff --git a/debian/patches/features/arm/ARM-dts-sunxi-Add-simplefb-nodes-for-de_be0-lcd0-de_.patch b/debian/patches/features/arm/ARM-dts-sunxi-Add-simplefb-nodes-for-de_be0-lcd0-de_.patch deleted file mode 100644 index 91c377524..000000000 --- a/debian/patches/features/arm/ARM-dts-sunxi-Add-simplefb-nodes-for-de_be0-lcd0-de_.patch +++ /dev/null @@ -1,154 +0,0 @@ -From: Hans de Goede -Date: Mon, 19 Jan 2015 14:05:12 +0100 -Subject: ARM: dts: sunxi: Add simplefb nodes for de_be0-lcd0, de_be0-lcd0-tve0 - pipelines -Origin: https://git.kernel.org/linus/fd18c7eac03540654abdbfedd52e6dfb3718b489 - -Add simplefb nodes for "[de_fe0-]de_be0-lcd0" and "[de_fe0-]de_be0-lcd0-tve0" -display pipelines for when u-boot has set up a pipeline to drive a LCD panel / -VGA output rather then the HDMI output. - -Signed-off-by: Hans de Goede -Signed-off-by: Maxime Ripard ---- - arch/arm/boot/dts/sun4i-a10.dtsi | 18 ++++++++++++++++++ - arch/arm/boot/dts/sun5i-a10s.dtsi | 8 ++++++++ - arch/arm/boot/dts/sun5i-a13.dtsi | 14 ++++++++++++++ - arch/arm/boot/dts/sun6i-a31.dtsi | 8 ++++++++ - arch/arm/boot/dts/sun7i-a20.dtsi | 17 +++++++++++++++++ - arch/arm/boot/dts/sun8i-a23.dtsi | 14 ++++++++++++++ - 6 files changed, 79 insertions(+) - ---- a/arch/arm/boot/dts/sun4i-a10.dtsi -+++ b/arch/arm/boot/dts/sun4i-a10.dtsi -@@ -39,6 +39,24 @@ - <&ahb_gates 44>, <&ahb_gates 46>; - status = "disabled"; - }; -+ -+ framebuffer@2 { -+ compatible = "allwinner,simple-framebuffer", -+ "simple-framebuffer"; -+ allwinner,pipeline = "de_fe0-de_be0-lcd0"; -+ clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 44>, -+ <&ahb_gates 46>; -+ status = "disabled"; -+ }; -+ -+ framebuffer@3 { -+ compatible = "allwinner,simple-framebuffer", -+ "simple-framebuffer"; -+ allwinner,pipeline = "de_fe0-de_be0-lcd0-tve0"; -+ clocks = <&pll5 1>, <&ahb_gates 34>, <&ahb_gates 36>, -+ <&ahb_gates 44>, <&ahb_gates 46>; -+ status = "disabled"; -+ }; - }; - - cpus { ---- a/arch/arm/boot/dts/sun5i-a10s.dtsi -+++ b/arch/arm/boot/dts/sun5i-a10s.dtsi -@@ -32,6 +32,14 @@ - <&ahb_gates 44>; - status = "disabled"; - }; -+ -+ framebuffer@1 { -+ compatible = "allwinner,simple-framebuffer", -+ "simple-framebuffer"; -+ allwinner,pipeline = "de_be0-lcd0"; -+ clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 44>; -+ status = "disabled"; -+ }; - }; - - cpus { ---- a/arch/arm/boot/dts/sun5i-a13.dtsi -+++ b/arch/arm/boot/dts/sun5i-a13.dtsi -@@ -16,6 +16,20 @@ - / { - interrupt-parent = <&intc>; - -+ chosen { -+ #address-cells = <1>; -+ #size-cells = <1>; -+ ranges; -+ -+ framebuffer@0 { -+ compatible = "allwinner,simple-framebuffer", -+ "simple-framebuffer"; -+ allwinner,pipeline = "de_be0-lcd0"; -+ clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 44>; -+ status = "disabled"; -+ }; -+ }; -+ - cpus { - #address-cells = <1>; - #size-cells = <0>; ---- a/arch/arm/boot/dts/sun6i-a31.dtsi -+++ b/arch/arm/boot/dts/sun6i-a31.dtsi -@@ -67,6 +67,14 @@ - clocks = <&pll6 0>; - status = "disabled"; - }; -+ -+ framebuffer@1 { -+ compatible = "allwinner,simple-framebuffer", -+ "simple-framebuffer"; -+ allwinner,pipeline = "de_be0-lcd0"; -+ clocks = <&pll6 0>; -+ status = "disabled"; -+ }; - }; - - cpus { ---- a/arch/arm/boot/dts/sun7i-a20.dtsi -+++ b/arch/arm/boot/dts/sun7i-a20.dtsi -@@ -68,6 +68,23 @@ - <&ahb_gates 44>; - status = "disabled"; - }; -+ -+ framebuffer@1 { -+ compatible = "allwinner,simple-framebuffer", -+ "simple-framebuffer"; -+ allwinner,pipeline = "de_be0-lcd0"; -+ clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 44>; -+ status = "disabled"; -+ }; -+ -+ framebuffer@2 { -+ compatible = "allwinner,simple-framebuffer", -+ "simple-framebuffer"; -+ allwinner,pipeline = "de_be0-lcd0-tve0"; -+ clocks = <&pll5 1>, <&ahb_gates 34>, <&ahb_gates 36>, -+ <&ahb_gates 44>; -+ status = "disabled"; -+ }; - }; - - cpus { ---- a/arch/arm/boot/dts/sun8i-a23.dtsi -+++ b/arch/arm/boot/dts/sun8i-a23.dtsi -@@ -52,6 +52,20 @@ - / { - interrupt-parent = <&gic>; - -+ chosen { -+ #address-cells = <1>; -+ #size-cells = <1>; -+ ranges; -+ -+ framebuffer@0 { -+ compatible = "allwinner,simple-framebuffer", -+ "simple-framebuffer"; -+ allwinner,pipeline = "de_be0-lcd0"; -+ clocks = <&pll6 0>; -+ status = "disabled"; -+ }; -+ }; -+ - cpus { - #address-cells = <1>; - #size-cells = <0>; diff --git a/debian/patches/features/arm/ARM-dts-sunxi-Fixup-after-backport-of-axp209-support.patch b/debian/patches/features/arm/ARM-dts-sunxi-Fixup-after-backport-of-axp209-support.patch deleted file mode 100644 index 2ea9415e2..000000000 --- a/debian/patches/features/arm/ARM-dts-sunxi-Fixup-after-backport-of-axp209-support.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 0737d5a36d9bbb22d9a156055116e710940be98b Mon Sep 17 00:00:00 2001 -From: Ian Campbell -Date: Fri, 3 Apr 2015 10:26:04 +0100 -Subject: [PATCH] ARM: dts: sunxi: Fixup after backport of axp209 support -Forwarded: not-needed - -By adding cpu0 label to cpu@0. - -Upstream this was added by "ARM: dts: sun4i: Add cpu clock reference and -operating points to dtsi" (and similar for sun5i, sun7i) which we have not -backported. - -Signed-off-by: Ian Campbell ---- - arch/arm/boot/dts/sun4i-a10.dtsi | 2 +- - arch/arm/boot/dts/sun5i-a13.dtsi | 2 +- - arch/arm/boot/dts/sun7i-a20.dtsi | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/arch/arm/boot/dts/sun4i-a10.dtsi b/arch/arm/boot/dts/sun4i-a10.dtsi -index eae8bfd..ad2ef45 100644 ---- a/arch/arm/boot/dts/sun4i-a10.dtsi -+++ b/arch/arm/boot/dts/sun4i-a10.dtsi -@@ -70,7 +70,7 @@ - cpus { - #address-cells = <1>; - #size-cells = <0>; -- cpu@0 { -+ cpu0: cpu@0 { - device_type = "cpu"; - compatible = "arm,cortex-a8"; - reg = <0x0>; -diff --git a/arch/arm/boot/dts/sun5i-a13.dtsi b/arch/arm/boot/dts/sun5i-a13.dtsi -index a194c1e..23bfb8f 100644 ---- a/arch/arm/boot/dts/sun5i-a13.dtsi -+++ b/arch/arm/boot/dts/sun5i-a13.dtsi -@@ -38,7 +38,7 @@ - cpus { - #address-cells = <1>; - #size-cells = <0>; -- cpu@0 { -+ cpu0: cpu@0 { - device_type = "cpu"; - compatible = "arm,cortex-a8"; - reg = <0x0>; -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index 7d47914..648051c 100644 ---- a/arch/arm/boot/dts/sun7i-a20.dtsi -+++ b/arch/arm/boot/dts/sun7i-a20.dtsi -@@ -63,7 +63,7 @@ - #address-cells = <1>; - #size-cells = <0>; - -- cpu@0 { -+ cpu0: cpu@0 { - compatible = "arm,cortex-a7"; - device_type = "cpu"; - reg = <0>; --- -2.1.4 - diff --git a/debian/patches/features/arm/dts-sun7i-Add-dts-file-for-Bananapro-board.patch b/debian/patches/features/arm/dts-sun7i-Add-dts-file-for-Bananapro-board.patch deleted file mode 100644 index 0c831cec1..000000000 --- a/debian/patches/features/arm/dts-sun7i-Add-dts-file-for-Bananapro-board.patch +++ /dev/null @@ -1,292 +0,0 @@ -From 10662a33dcd97f27004779df7e9188c124bc7076 Mon Sep 17 00:00:00 2001 -From: Hans de Goede -Date: Sun, 18 Jan 2015 13:08:19 +0100 -Subject: ARM: dts: sun7i: Add dts file for Bananapro board -Origin: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/patch/?id=10662a33dcd97f27004779df7e9188c124bc7076 - -Add support for the new Bananapro A20 development board from lemaker.org. -This board features 1G RAM, 2 USB A receptacles, 1 micro USB receptacle for -OTG, 1 micro USB receptacle for power, HDMI, sata, Gbit ethernet, ir receiver, -3.5 mm jack for a/v out, on board microphone, 40 gpio pins and sdio wifi. - -Signed-off-by: Hans de Goede -Signed-off-by: Maxime Ripard -[Karsten Merker: replace SUN4I_PINCTRL_10_MA, SUN4I_PINCTRL_NO_PULL and -SUN4I_PINCTRL_PULL_UP with their corresponding values as these symbols are not -yet defined in 3.16.] - ---- a/arch/arm/boot/dts/Makefile -+++ b/arch/arm/boot/dts/Makefile -@@ -464,6 +464,7 @@ dtb-$(CONFIG_MACH_SUN6I) += \ - sun6i-a31-m9.dtb - dtb-$(CONFIG_MACH_SUN7I) += \ - sun7i-a20-bananapi.dtb \ -+ sun7i-a20-bananapro.dtb \ - sun7i-a20-cubieboard2.dtb \ - sun7i-a20-cubietruck.dtb \ - sun7i-a20-hummingbird.dtb \ ---- /dev/null -+++ b/arch/arm/boot/dts/sun7i-a20-bananapro.dts -@@ -0,0 +1,262 @@ -+/* -+ * Copyright 2015 Hans de Goede -+ * -+ * This file is dual-licensed: you can use it either under the terms -+ * of the GPL or the X11 license, at your option. Note that this dual -+ * licensing only applies to this file, and not this project as a -+ * whole. -+ * -+ * a) This file 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 file 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 file; if not, write to the Free -+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, -+ * MA 02110-1301 USA -+ * -+ * Or, alternatively, -+ * -+ * b) Permission is hereby granted, free of charge, to any person -+ * obtaining a copy of this software and associated documentation -+ * files (the "Software"), to deal in the Software without -+ * restriction, including without limitation the rights to use, -+ * copy, modify, merge, publish, distribute, sublicense, and/or -+ * sell copies of the Software, and to permit persons to whom the -+ * Software is furnished to do so, subject to the following -+ * conditions: -+ * -+ * The above copyright notice and this permission notice shall be -+ * included in all copies or substantial portions of the Software. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ * OTHER DEALINGS IN THE SOFTWARE. -+ */ -+ -+/dts-v1/; -+#include "sun7i-a20.dtsi" -+#include "sunxi-common-regulators.dtsi" -+#include -+#include -+ -+/ { -+ model = "LeMaker Banana Pro"; -+ compatible = "lemaker,bananapro", "allwinner,sun7i-a20"; -+ -+ leds { -+ compatible = "gpio-leds"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&led_pins_bananapro>; -+ -+ blue { -+ label = "bananapro:blue:usr"; -+ gpios = <&pio 6 2 GPIO_ACTIVE_HIGH>; -+ }; -+ -+ green { -+ label = "bananapro:green:usr"; -+ gpios = <&pio 7 24 GPIO_ACTIVE_HIGH>; -+ }; -+ }; -+ -+ reg_gmac_3v3: gmac-3v3 { -+ compatible = "regulator-fixed"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&gmac_power_pin_bananapro>; -+ regulator-name = "gmac-3v3"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ startup-delay-us = <100000>; -+ enable-active-high; -+ gpio = <&pio 7 23 GPIO_ACTIVE_HIGH>; -+ }; -+ -+ reg_vmmc3: vmmc3 { -+ compatible = "regulator-fixed"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&vmmc3_pin_bananapro>; -+ regulator-name = "vmmc3"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ enable-active-high; -+ gpio = <&pio 7 22 GPIO_ACTIVE_HIGH>; -+ }; -+}; -+ -+&ahci { -+ status = "okay"; -+}; -+ -+&ehci0 { -+ status = "okay"; -+}; -+ -+&ehci1 { -+ status = "okay"; -+}; -+ -+&gmac { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&gmac_pins_rgmii_a>; -+ phy = <&phy1>; -+ phy-mode = "rgmii"; -+ phy-supply = <®_gmac_3v3>; -+ status = "okay"; -+ -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+}; -+ -+&i2c0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c0_pins_a>; -+ status = "okay"; -+ -+ axp209: pmic@34 { -+ compatible = "x-powers,axp209"; -+ reg = <0x34>; -+ interrupt-parent = <&nmi_intc>; -+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ -+ interrupt-controller; -+ #interrupt-cells = <1>; -+ }; -+}; -+ -+&i2c2 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c2_pins_a>; -+ status = "okay"; -+}; -+ -+&ir0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&ir0_pins_a>; -+ status = "okay"; -+}; -+ -+&mmc0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_bananapro>; -+ vmmc-supply = <®_vcc3v3>; -+ bus-width = <4>; -+ cd-gpios = <&pio 7 10 GPIO_ACTIVE_HIGH>; /* PH10 */ -+ cd-inverted; -+ status = "okay"; -+}; -+ -+&mmc3 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc3_pins_a>; -+ vmmc-supply = <®_vmmc3>; -+ bus-width = <4>; -+ non-removable; -+ status = "okay"; -+}; -+ -+&ohci0 { -+ status = "okay"; -+}; -+ -+&ohci1 { -+ status = "okay"; -+}; -+ -+&pio { -+ gmac_power_pin_bananapro: gmac_power_pin@0 { -+ allwinner,pins = "PH23"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = <0>; -+ allwinner,pull = <0>; -+ }; -+ -+ led_pins_bananapro: led_pins@0 { -+ allwinner,pins = "PH24", "PG2"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = <0>; -+ allwinner,pull = <0>; -+ }; -+ -+ mmc0_cd_pin_bananapro: mmc0_cd_pin@0 { -+ allwinner,pins = "PH10"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = <0>; -+ allwinner,pull = <1>; -+ }; -+ -+ usb1_vbus_pin_bananapro: usb1_vbus_pin@0 { -+ allwinner,pins = "PH0"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = <0>; -+ allwinner,pull = <0>; -+ }; -+ -+ usb2_vbus_pin_bananapro: usb2_vbus_pin@0 { -+ allwinner,pins = "PH1"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = <0>; -+ allwinner,pull = <0>; -+ }; -+ -+ vmmc3_pin_bananapro: vmmc3_pin@0 { -+ allwinner,pins = "PH22"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = <0>; -+ allwinner,pull = <0>; -+ }; -+}; -+ -+®_usb1_vbus { -+ pinctrl-0 = <&usb1_vbus_pin_bananapro>; -+ gpio = <&pio 7 0 GPIO_ACTIVE_HIGH>; /* PH0 */ -+ status = "okay"; -+}; -+ -+®_usb2_vbus { -+ pinctrl-0 = <&usb2_vbus_pin_bananapro>; -+ gpio = <&pio 7 1 GPIO_ACTIVE_HIGH>; /* PH1 */ -+ status = "okay"; -+}; -+ -+&spi0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&spi0_pins_a>; -+ status = "okay"; -+}; -+ -+&uart0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart0_pins_a>; -+ status = "okay"; -+}; -+ -+&uart2 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart2_pins_a>; -+ status = "okay"; -+}; -+ -+&uart7 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart7_pins_a>; -+ status = "okay"; -+}; -+ -+&usbphy { -+ usb1_vbus-supply = <®_usb1_vbus>; -+ usb2_vbus-supply = <®_usb2_vbus>; -+ status = "okay"; -+}; diff --git a/debian/patches/features/mips/MIPS-octeon-Add-support-for-the-UBNT-E200-board.patch b/debian/patches/features/mips/MIPS-octeon-Add-support-for-the-UBNT-E200-board.patch index 12db228db..3487d4248 100644 --- a/debian/patches/features/mips/MIPS-octeon-Add-support-for-the-UBNT-E200-board.patch +++ b/debian/patches/features/mips/MIPS-octeon-Add-support-for-the-UBNT-E200-board.patch @@ -50,19 +50,3 @@ Signed-off-by: Markos Chandras ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_DSR1000N) ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_PRIVATE_MAX) } ---- a/arch/mips/include/asm/octeon/octeon-model.h -+++ b/arch/mips/include/asm/octeon/octeon-model.h -@@ -105,10 +105,13 @@ - #define OCTEON_CN63XX_PASS2_X (OCTEON_CN63XX_PASS2_0 | OM_IGNORE_MINOR_REVISION) - - #define OCTEON_CN61XX_PASS1_0 0x000d9300 -+#define OCTEON_CN61XX_PASS1_1 0x000d9301 - - #define OCTEON_CN61XX (OCTEON_CN61XX_PASS1_0 | OM_IGNORE_REVISION) - #define OCTEON_CN61XX_PASS1_X (OCTEON_CN61XX_PASS1_0 | OM_IGNORE_MINOR_REVISION) - -+#define OCTEON_UBNT_E200 (OCTEON_CN61XX_PASS1_1 | OM_IGNORE_REVISION) -+ - /* - * CN5XXX models with new revision encoding - */ diff --git a/debian/patches/series b/debian/patches/series index 3f8ef35e7..610558d3e 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -39,14 +39,8 @@ debian/qxl-disable-modeset-by-default.patch # Arch bug fixes bugfix/mips/disable-advansys.patch -bugfix/m68k/ethernat-kconfig.patch bugfix/arm64/arm64-add-missing-dts-entry-for-X-Gene-platform.patch bugfix/arm64/arm64-removed-using-of-the-mask-attribute-in-the-dts.patch -bugfix/x86/acpi-video-add-disable_native_backlight-quirk-for-samsung-730u3e-740u3e.patch -bugfix/x86/acpi-video-add-disable_native_backlight-quirk-for-samsung-510r.patch -bugfix/x86/acpi-video-disable-native-backlight-on-samsung-series-9.patch -bugfix/x86/drm-i915-quietly-reject-attempts-to-create-non-pagealigned-stolen-objects.patch -bugfix/x86/x86-microcode-intel-guard-against-stack-overflow-in-.patch # Arch features features/mips/MIPS-increase-MAX-PHYSMEM-BITS-on-Loongson-3-only.patch @@ -55,14 +49,6 @@ features/mips/MIPS-octeon-Add-support-for-the-UBNT-E200-board.patch features/x86/x86-memtest-WARN-if-bad-RAM-found.patch features/x86/x86-make-x32-syscall-support-conditional.patch features/arm/deb-pkg-add-automatic-support-for-armhf-architecture.patch -features/arm/dts-sun7i-Add-dts-file-for-Bananapro-board.patch -features/arm/ARM-dts-sunxi-Add-simplefb-nodes-for-de_be0-lcd0-de_.patch -features/arm/ARM-dts-sunxi-Add-dtsi-for-AXP209-PMIC.patch -features/arm/ARM-dts-sun7i-cubieboard2-add-axp209-regulator-nodes.patch -features/arm/ARM-dts-sun7i-cubietruck-add-axp209-regulator-nodes.patch -features/arm/ARM-dts-sun4i-cubieboard-add-axp209-regulator-nodes.patch -features/arm/ARM-dts-sun5i-Enable-axp209-support-on-A13-OLinuxIno.patch -features/arm/ARM-dts-sunxi-Fixup-after-backport-of-axp209-support.patch # Miscellaneous bug fixes bugfix/all/misc-bmp085-Enable-building-as-a-module.patch @@ -73,20 +59,8 @@ bugfix/all/aic94xx-remove-broken-fallback-for-missing-ctrl-a.patch bugfix/all/rtsx_usb_ms-use-msleep_interruptible-in-polling-loop.patch bugfix/all/net-mv643xx-disable-tso-by-default.patch bugfix/all/vfs-read-file_handle-only-once-in-handle_to_path.patch -bugfix/all/ib-core-prevent-integer-overflow-in-ib_umem_get.patch bugfix/all/ext4-allocate-entire-range-in-zero-range.patch -bugfix/all/ipv6-don-t-reduce-hop-limit-for-an-interface.patch debian/emmc-don-t-initialize-partitions-on-rpmb-flagged-areas.patch # Miscellaneous features features/all/efi-autoload-efi-pstore.patch -features/all/efi-expose-underlying-uefi-firmware-platform-size-to.patch - -# Add FocalTech support to psmouse -features/all/psmouse/input-psmouse-support-for-the-focaltech-ps-2-protoco.patch -features/all/psmouse/input-psmouse-remove-hardcoded-touchpad-size-from-th.patch -features/all/psmouse/input-psmouse-ensure-that-focaltech-reports-consiste.patch -features/all/psmouse/input-psmouse-disable-changing-resolution-rate-scale.patch -features/all/psmouse/input-psmouse-disable-palm-detection-in-the-focaltec.patch - -bugfix/all/btrfs-simplify-insert_orphan_item.patch