]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.9-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 8 Aug 2017 16:16:27 +0000 (09:16 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 8 Aug 2017 16:16:27 +0000 (09:16 -0700)
added patches:
media-lirc-lirc_get_rec_resolution-should-return-microseconds.patch
mmc-core-use-device_property_read-instead-of-of_property_read.patch
mmc-dw_mmc-use-device_property_read-instead-of-of_property_read.patch

queue-4.9/media-lirc-lirc_get_rec_resolution-should-return-microseconds.patch [new file with mode: 0644]
queue-4.9/mmc-core-use-device_property_read-instead-of-of_property_read.patch [new file with mode: 0644]
queue-4.9/mmc-dw_mmc-use-device_property_read-instead-of-of_property_read.patch [new file with mode: 0644]
queue-4.9/series

diff --git a/queue-4.9/media-lirc-lirc_get_rec_resolution-should-return-microseconds.patch b/queue-4.9/media-lirc-lirc_get_rec_resolution-should-return-microseconds.patch
new file mode 100644 (file)
index 0000000..3372da5
--- /dev/null
@@ -0,0 +1,36 @@
+From 9f5039ba440e499d85c29b1ddbc3cbc9dc90e44b Mon Sep 17 00:00:00 2001
+From: Sean Young <sean@mess.org>
+Date: Fri, 7 Jul 2017 18:49:18 -0300
+Subject: media: lirc: LIRC_GET_REC_RESOLUTION should return microseconds
+
+From: Sean Young <sean@mess.org>
+
+commit 9f5039ba440e499d85c29b1ddbc3cbc9dc90e44b upstream.
+
+Since commit e8f4818895b3 ("[media] lirc: advertise
+LIRC_CAN_GET_REC_RESOLUTION and improve") lircd uses the ioctl
+LIRC_GET_REC_RESOLUTION to determine the shortest pulse or space that
+the hardware can detect. This breaks decoding in lirc because lircd
+expects the answer in microseconds, but nanoseconds is returned.
+
+Reported-by: Derek <user.vdr@gmail.com>
+Tested-by: Derek <user.vdr@gmail.com>
+Signed-off-by: Sean Young <sean@mess.org>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/media/rc/ir-lirc-codec.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/media/rc/ir-lirc-codec.c
++++ b/drivers/media/rc/ir-lirc-codec.c
+@@ -254,7 +254,7 @@ static long ir_lirc_ioctl(struct file *f
+               return 0;
+       case LIRC_GET_REC_RESOLUTION:
+-              val = dev->rx_resolution;
++              val = dev->rx_resolution / 1000;
+               break;
+       case LIRC_SET_WIDEBAND_RECEIVER:
diff --git a/queue-4.9/mmc-core-use-device_property_read-instead-of-of_property_read.patch b/queue-4.9/mmc-core-use-device_property_read-instead-of-of_property_read.patch
new file mode 100644 (file)
index 0000000..00a472b
--- /dev/null
@@ -0,0 +1,169 @@
+From 73a47a9bb3e2c4a9c553c72456e63ab991b1a4d9 Mon Sep 17 00:00:00 2001
+From: David Woods <dwoods@mellanox.com>
+Date: Fri, 26 May 2017 17:53:21 -0400
+Subject: mmc: core: Use device_property_read instead of of_property_read
+
+From: David Woods <dwoods@mellanox.com>
+
+commit 73a47a9bb3e2c4a9c553c72456e63ab991b1a4d9 upstream.
+
+Using the device_property interfaces allows mmc drivers to work
+on platforms which run on either device tree or ACPI.
+
+Signed-off-by: David Woods <dwoods@mellanox.com>
+Reviewed-by: Chris Metcalf <cmetcalf@mellanox.com>
+Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/mmc/core/host.c |   70 +++++++++++++++++++++++-------------------------
+ 1 file changed, 34 insertions(+), 36 deletions(-)
+
+--- a/drivers/mmc/core/host.c
++++ b/drivers/mmc/core/host.c
+@@ -179,19 +179,17 @@ static void mmc_retune_timer(unsigned lo
+  */
+ int mmc_of_parse(struct mmc_host *host)
+ {
+-      struct device_node *np;
++      struct device *dev = host->parent;
+       u32 bus_width;
+       int ret;
+       bool cd_cap_invert, cd_gpio_invert = false;
+       bool ro_cap_invert, ro_gpio_invert = false;
+-      if (!host->parent || !host->parent->of_node)
++      if (!dev || !dev_fwnode(dev))
+               return 0;
+-      np = host->parent->of_node;
+-
+       /* "bus-width" is translated to MMC_CAP_*_BIT_DATA flags */
+-      if (of_property_read_u32(np, "bus-width", &bus_width) < 0) {
++      if (device_property_read_u32(dev, "bus-width", &bus_width) < 0) {
+               dev_dbg(host->parent,
+                       "\"bus-width\" property is missing, assuming 1 bit.\n");
+               bus_width = 1;
+@@ -213,7 +211,7 @@ int mmc_of_parse(struct mmc_host *host)
+       }
+       /* f_max is obtained from the optional "max-frequency" property */
+-      of_property_read_u32(np, "max-frequency", &host->f_max);
++      device_property_read_u32(dev, "max-frequency", &host->f_max);
+       /*
+        * Configure CD and WP pins. They are both by default active low to
+@@ -228,12 +226,12 @@ int mmc_of_parse(struct mmc_host *host)
+        */
+       /* Parse Card Detection */
+-      if (of_property_read_bool(np, "non-removable")) {
++      if (device_property_read_bool(dev, "non-removable")) {
+               host->caps |= MMC_CAP_NONREMOVABLE;
+       } else {
+-              cd_cap_invert = of_property_read_bool(np, "cd-inverted");
++              cd_cap_invert = device_property_read_bool(dev, "cd-inverted");
+-              if (of_property_read_bool(np, "broken-cd"))
++              if (device_property_read_bool(dev, "broken-cd"))
+                       host->caps |= MMC_CAP_NEEDS_POLL;
+               ret = mmc_gpiod_request_cd(host, "cd", 0, true,
+@@ -259,7 +257,7 @@ int mmc_of_parse(struct mmc_host *host)
+       }
+       /* Parse Write Protection */
+-      ro_cap_invert = of_property_read_bool(np, "wp-inverted");
++      ro_cap_invert = device_property_read_bool(dev, "wp-inverted");
+       ret = mmc_gpiod_request_ro(host, "wp", 0, false, 0, &ro_gpio_invert);
+       if (!ret)
+@@ -267,62 +265,62 @@ int mmc_of_parse(struct mmc_host *host)
+       else if (ret != -ENOENT && ret != -ENOSYS)
+               return ret;
+-      if (of_property_read_bool(np, "disable-wp"))
++      if (device_property_read_bool(dev, "disable-wp"))
+               host->caps2 |= MMC_CAP2_NO_WRITE_PROTECT;
+       /* See the comment on CD inversion above */
+       if (ro_cap_invert ^ ro_gpio_invert)
+               host->caps2 |= MMC_CAP2_RO_ACTIVE_HIGH;
+-      if (of_property_read_bool(np, "cap-sd-highspeed"))
++      if (device_property_read_bool(dev, "cap-sd-highspeed"))
+               host->caps |= MMC_CAP_SD_HIGHSPEED;
+-      if (of_property_read_bool(np, "cap-mmc-highspeed"))
++      if (device_property_read_bool(dev, "cap-mmc-highspeed"))
+               host->caps |= MMC_CAP_MMC_HIGHSPEED;
+-      if (of_property_read_bool(np, "sd-uhs-sdr12"))
++      if (device_property_read_bool(dev, "sd-uhs-sdr12"))
+               host->caps |= MMC_CAP_UHS_SDR12;
+-      if (of_property_read_bool(np, "sd-uhs-sdr25"))
++      if (device_property_read_bool(dev, "sd-uhs-sdr25"))
+               host->caps |= MMC_CAP_UHS_SDR25;
+-      if (of_property_read_bool(np, "sd-uhs-sdr50"))
++      if (device_property_read_bool(dev, "sd-uhs-sdr50"))
+               host->caps |= MMC_CAP_UHS_SDR50;
+-      if (of_property_read_bool(np, "sd-uhs-sdr104"))
++      if (device_property_read_bool(dev, "sd-uhs-sdr104"))
+               host->caps |= MMC_CAP_UHS_SDR104;
+-      if (of_property_read_bool(np, "sd-uhs-ddr50"))
++      if (device_property_read_bool(dev, "sd-uhs-ddr50"))
+               host->caps |= MMC_CAP_UHS_DDR50;
+-      if (of_property_read_bool(np, "cap-power-off-card"))
++      if (device_property_read_bool(dev, "cap-power-off-card"))
+               host->caps |= MMC_CAP_POWER_OFF_CARD;
+-      if (of_property_read_bool(np, "cap-mmc-hw-reset"))
++      if (device_property_read_bool(dev, "cap-mmc-hw-reset"))
+               host->caps |= MMC_CAP_HW_RESET;
+-      if (of_property_read_bool(np, "cap-sdio-irq"))
++      if (device_property_read_bool(dev, "cap-sdio-irq"))
+               host->caps |= MMC_CAP_SDIO_IRQ;
+-      if (of_property_read_bool(np, "full-pwr-cycle"))
++      if (device_property_read_bool(dev, "full-pwr-cycle"))
+               host->caps2 |= MMC_CAP2_FULL_PWR_CYCLE;
+-      if (of_property_read_bool(np, "keep-power-in-suspend"))
++      if (device_property_read_bool(dev, "keep-power-in-suspend"))
+               host->pm_caps |= MMC_PM_KEEP_POWER;
+-      if (of_property_read_bool(np, "wakeup-source") ||
+-          of_property_read_bool(np, "enable-sdio-wakeup")) /* legacy */
++      if (device_property_read_bool(dev, "wakeup-source") ||
++          device_property_read_bool(dev, "enable-sdio-wakeup")) /* legacy */
+               host->pm_caps |= MMC_PM_WAKE_SDIO_IRQ;
+-      if (of_property_read_bool(np, "mmc-ddr-1_8v"))
++      if (device_property_read_bool(dev, "mmc-ddr-1_8v"))
+               host->caps |= MMC_CAP_1_8V_DDR;
+-      if (of_property_read_bool(np, "mmc-ddr-1_2v"))
++      if (device_property_read_bool(dev, "mmc-ddr-1_2v"))
+               host->caps |= MMC_CAP_1_2V_DDR;
+-      if (of_property_read_bool(np, "mmc-hs200-1_8v"))
++      if (device_property_read_bool(dev, "mmc-hs200-1_8v"))
+               host->caps2 |= MMC_CAP2_HS200_1_8V_SDR;
+-      if (of_property_read_bool(np, "mmc-hs200-1_2v"))
++      if (device_property_read_bool(dev, "mmc-hs200-1_2v"))
+               host->caps2 |= MMC_CAP2_HS200_1_2V_SDR;
+-      if (of_property_read_bool(np, "mmc-hs400-1_8v"))
++      if (device_property_read_bool(dev, "mmc-hs400-1_8v"))
+               host->caps2 |= MMC_CAP2_HS400_1_8V | MMC_CAP2_HS200_1_8V_SDR;
+-      if (of_property_read_bool(np, "mmc-hs400-1_2v"))
++      if (device_property_read_bool(dev, "mmc-hs400-1_2v"))
+               host->caps2 |= MMC_CAP2_HS400_1_2V | MMC_CAP2_HS200_1_2V_SDR;
+-      if (of_property_read_bool(np, "mmc-hs400-enhanced-strobe"))
++      if (device_property_read_bool(dev, "mmc-hs400-enhanced-strobe"))
+               host->caps2 |= MMC_CAP2_HS400_ES;
+-      if (of_property_read_bool(np, "no-sdio"))
++      if (device_property_read_bool(dev, "no-sdio"))
+               host->caps2 |= MMC_CAP2_NO_SDIO;
+-      if (of_property_read_bool(np, "no-sd"))
++      if (device_property_read_bool(dev, "no-sd"))
+               host->caps2 |= MMC_CAP2_NO_SD;
+-      if (of_property_read_bool(np, "no-mmc"))
++      if (device_property_read_bool(dev, "no-mmc"))
+               host->caps2 |= MMC_CAP2_NO_MMC;
+-      host->dsr_req = !of_property_read_u32(np, "dsr", &host->dsr);
++      host->dsr_req = !device_property_read_u32(dev, "dsr", &host->dsr);
+       if (host->dsr_req && (host->dsr & ~0xffff)) {
+               dev_err(host->parent,
+                       "device tree specified broken value for DSR: 0x%x, ignoring\n",
diff --git a/queue-4.9/mmc-dw_mmc-use-device_property_read-instead-of-of_property_read.patch b/queue-4.9/mmc-dw_mmc-use-device_property_read-instead-of-of_property_read.patch
new file mode 100644 (file)
index 0000000..e9bf18e
--- /dev/null
@@ -0,0 +1,84 @@
+From 852ff5fea9eb6a9799f1881d6df2cd69a9e6eed5 Mon Sep 17 00:00:00 2001
+From: David Woods <dwoods@mellanox.com>
+Date: Fri, 26 May 2017 17:53:20 -0400
+Subject: mmc: dw_mmc: Use device_property_read instead of of_property_read
+
+From: David Woods <dwoods@mellanox.com>
+
+commit 852ff5fea9eb6a9799f1881d6df2cd69a9e6eed5 upstream.
+
+Using the device_property interfaces allows the dw_mmc driver to work
+on platforms which run on either device tree or ACPI.
+
+Signed-off-by: David Woods <dwoods@mellanox.com>
+Reviewed-by: Chris Metcalf <cmetcalf@mellanox.com>
+Acked-by: Jaehoon Chung <jh80.chung@samsung.com>
+Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/mmc/host/dw_mmc.c |   20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+--- a/drivers/mmc/host/dw_mmc.c
++++ b/drivers/mmc/host/dw_mmc.c
+@@ -2610,8 +2610,8 @@ static int dw_mci_init_slot(struct dw_mc
+       host->slot[id] = slot;
+       mmc->ops = &dw_mci_ops;
+-      if (of_property_read_u32_array(host->dev->of_node,
+-                                     "clock-freq-min-max", freq, 2)) {
++      if (device_property_read_u32_array(host->dev, "clock-freq-min-max",
++                                         freq, 2)) {
+               mmc->f_min = DW_MCI_FREQ_MIN;
+               mmc->f_max = DW_MCI_FREQ_MAX;
+       } else {
+@@ -2709,7 +2709,6 @@ static void dw_mci_init_dma(struct dw_mc
+ {
+       int addr_config;
+       struct device *dev = host->dev;
+-      struct device_node *np = dev->of_node;
+       /*
+       * Check tansfer mode from HCON[17:16]
+@@ -2770,8 +2769,9 @@ static void dw_mci_init_dma(struct dw_mc
+               dev_info(host->dev, "Using internal DMA controller.\n");
+       } else {
+               /* TRANS_MODE_EDMAC: check dma bindings again */
+-              if ((of_property_count_strings(np, "dma-names") < 0) ||
+-                  (!of_find_property(np, "dmas", NULL))) {
++              if ((device_property_read_string_array(dev, "dma-names",
++                                                     NULL, 0) < 0) ||
++                  !device_property_present(dev, "dmas")) {
+                       goto no_dma;
+               }
+               host->dma_ops = &dw_mci_edmac_ops;
+@@ -2931,7 +2931,6 @@ static struct dw_mci_board *dw_mci_parse
+ {
+       struct dw_mci_board *pdata;
+       struct device *dev = host->dev;
+-      struct device_node *np = dev->of_node;
+       const struct dw_mci_drv_data *drv_data = host->drv_data;
+       int ret;
+       u32 clock_frequency;
+@@ -2948,15 +2947,16 @@ static struct dw_mci_board *dw_mci_parse
+       }
+       /* find out number of slots supported */
+-      of_property_read_u32(np, "num-slots", &pdata->num_slots);
++      device_property_read_u32(dev, "num-slots", &pdata->num_slots);
+-      if (of_property_read_u32(np, "fifo-depth", &pdata->fifo_depth))
++      if (device_property_read_u32(dev, "fifo-depth", &pdata->fifo_depth))
+               dev_info(dev,
+                        "fifo-depth property not found, using value of FIFOTH register as default\n");
+-      of_property_read_u32(np, "card-detect-delay", &pdata->detect_delay_ms);
++      device_property_read_u32(dev, "card-detect-delay",
++                               &pdata->detect_delay_ms);
+-      if (!of_property_read_u32(np, "clock-frequency", &clock_frequency))
++      if (!device_property_read_u32(dev, "clock-frequency", &clock_frequency))
+               pdata->bus_hz = clock_frequency;
+       if (drv_data && drv_data->parse_dt) {
index ecf82bcc2d93df03967d5f8cb997dda14c1f13de..bac4cb3671c6d94098f4b2a998ec32f2333a4072 100644 (file)
@@ -27,3 +27,6 @@ arm-dts-armada-38x-fix-irq-type-for-pca955.patch
 arm-dts-tango4-request-rgmii-rx-and-tx-clock-delays.patch
 media-platform-davinci-return-einval-for-vpfe_cmd_s_ccdc_raw_params-ioctl.patch
 iscsi-target-fix-initial-login-pdu-asynchronous-socket-close-oops.patch
+mmc-dw_mmc-use-device_property_read-instead-of-of_property_read.patch
+mmc-core-use-device_property_read-instead-of-of_property_read.patch
+media-lirc-lirc_get_rec_resolution-should-return-microseconds.patch