1. 24 11月, 2019 5 次提交
  2. 21 11月, 2019 1 次提交
  3. 29 10月, 2019 1 次提交
  4. 12 10月, 2019 2 次提交
    • R
      mmc: sdhci-of-esdhc: set DMA snooping based on DMA coherence · 7ed2867c
      Russell King 提交于
      commit 121bd08b029e03404c451bb237729cdff76eafed upstream.
      
      We must not unconditionally set the DMA snoop bit; if the DMA API is
      assuming that the device is not DMA coherent, and the device snoops the
      CPU caches, the device can see stale cache lines brought in by
      speculative prefetch.
      
      This leads to the device seeing stale data, potentially resulting in
      corrupted data transfers.  Commonly, this results in a descriptor fetch
      error such as:
      
      mmc0: ADMA error
      mmc0: sdhci: ============ SDHCI REGISTER DUMP ===========
      mmc0: sdhci: Sys addr:  0x00000000 | Version:  0x00002202
      mmc0: sdhci: Blk size:  0x00000008 | Blk cnt:  0x00000001
      mmc0: sdhci: Argument:  0x00000000 | Trn mode: 0x00000013
      mmc0: sdhci: Present:   0x01f50008 | Host ctl: 0x00000038
      mmc0: sdhci: Power:     0x00000003 | Blk gap:  0x00000000
      mmc0: sdhci: Wake-up:   0x00000000 | Clock:    0x000040d8
      mmc0: sdhci: Timeout:   0x00000003 | Int stat: 0x00000001
      mmc0: sdhci: Int enab:  0x037f108f | Sig enab: 0x037f108b
      mmc0: sdhci: ACmd stat: 0x00000000 | Slot int: 0x00002202
      mmc0: sdhci: Caps:      0x35fa0000 | Caps_1:   0x0000af00
      mmc0: sdhci: Cmd:       0x0000333a | Max curr: 0x00000000
      mmc0: sdhci: Resp[0]:   0x00000920 | Resp[1]:  0x001d8a33
      mmc0: sdhci: Resp[2]:   0x325b5900 | Resp[3]:  0x3f400e00
      mmc0: sdhci: Host ctl2: 0x00000000
      mmc0: sdhci: ADMA Err:  0x00000009 | ADMA Ptr: 0x000000236d43820c
      mmc0: sdhci: ============================================
      mmc0: error -5 whilst initialising SD card
      
      but can lead to other errors, and potentially direct the SDHCI
      controller to read/write data to other memory locations (e.g. if a valid
      descriptor is visible to the device in a stale cache line.)
      
      Fix this by ensuring that the DMA snoop bit corresponds with the
      behaviour of the DMA API.  Since the driver currently only supports DT,
      use of_dma_is_coherent().  Note that device_get_dma_attr() can not be
      used as that risks re-introducing this bug if/when the driver is
      converted to ACPI.
      Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
      Acked-by: NAdrian Hunter <adrian.hunter@intel.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7ed2867c
    • R
      mmc: sdhci: improve ADMA error reporting · 4509a19d
      Russell King 提交于
      commit d1c536e3177390da43d99f20143b810c35433d1f upstream.
      
      ADMA errors are potentially data corrupting events; although we print
      the register state, we do not usefully print the ADMA descriptors.
      Worse than that, we print them by referencing their virtual address
      which is meaningless when the register state gives us the DMA address
      of the failing descriptor.
      
      Print the ADMA descriptors giving their DMA addresses rather than their
      virtual addresses, and print them using SDHCI_DUMP() rather than DBG().
      
      We also do not show the correct value of the interrupt status register;
      the register dump shows the current value, after we have cleared the
      pending interrupts we are going to service.  What is more useful is to
      print the interrupts that _were_ pending at the time the ADMA error was
      encountered.  Fix that too.
      Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
      Acked-by: NAdrian Hunter <adrian.hunter@intel.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      4509a19d
  5. 05 10月, 2019 3 次提交
    • U
      mmc: dw_mmc: Re-store SDIO IRQs mask at system resume · da87dfca
      Ulf Hansson 提交于
      [ Upstream commit 7c526608d5afb62cbc967225e2ccaacfdd142e9d ]
      
      In cases when SDIO IRQs have been enabled, runtime suspend is prevented by
      the driver. However, this still means dw_mci_runtime_suspend|resume() gets
      called during system suspend/resume, via pm_runtime_force_suspend|resume().
      This means during system suspend/resume, the register context of the dw_mmc
      device most likely loses its register context, even in cases when SDIO IRQs
      have been enabled.
      
      To re-enable the SDIO IRQs during system resume, the dw_mmc driver
      currently relies on the mmc core to re-enable the SDIO IRQs when it resumes
      the SDIO card, but this isn't the recommended solution. Instead, it's
      better to deal with this locally in the dw_mmc driver, so let's do that.
      Tested-by: NMatthias Kaehlcke <mka@chromium.org>
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Reviewed-by: NDouglas Anderson <dianders@chromium.org>
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      da87dfca
    • A
      mmc: sdhci: Fix incorrect switch to HS mode · 8ba99d50
      Al Cooper 提交于
      [ Upstream commit c894e33ddc1910e14d6f2a2016f60ab613fd8b37 ]
      
      When switching from any MMC speed mode that requires 1.8v
      (HS200, HS400 and HS400ES) to High Speed (HS) mode, the system
      ends up configured for SDR12 with a 50MHz clock which is an illegal
      mode.
      
      This happens because the SDHCI_CTRL_VDD_180 bit in the
      SDHCI_HOST_CONTROL2 register is left set and when this bit is
      set, the speed mode is controlled by the SDHCI_CTRL_UHS field
      in the SDHCI_HOST_CONTROL2 register. The SDHCI_CTRL_UHS field
      will end up being set to 0 (SDR12) by sdhci_set_uhs_signaling()
      because there is no UHS mode being set.
      
      The fix is to change sdhci_set_uhs_signaling() to set the
      SDHCI_CTRL_UHS field to SDR25 (which is the same as HS) for
      any switch to HS mode.
      
      This was found on a new eMMC controller that does strict checking
      of the speed mode and the corresponding clock rate. It caused the
      switch to HS400 mode to fail because part of the sequence to switch
      to HS400 requires a switch from HS200 to HS before going to HS400.
      Suggested-by: NAdrian Hunter <adrian.hunter@intel.com>
      Signed-off-by: NAl Cooper <alcooperx@gmail.com>
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      8ba99d50
    • U
      mmc: core: Clarify sdio_irq_pending flag for MMC_CAP2_SDIO_IRQ_NOTHREAD · 86912277
      Ulf Hansson 提交于
      [ Upstream commit 36d57efb4af534dd6b442ea0b9a04aa6dfa37abe ]
      
      The sdio_irq_pending flag is used to let host drivers indicate that it has
      signaled an IRQ. If that is the case and we only have a single SDIO func
      that have claimed an SDIO IRQ, our assumption is that we can avoid reading
      the SDIO_CCCR_INTx register and just call the SDIO func irq handler
      immediately. This makes sense, but the flag is set/cleared in a somewhat
      messy order, let's fix that up according to below.
      
      First, the flag is currently set in sdio_run_irqs(), which is executed as a
      work that was scheduled from sdio_signal_irq(). To make it more implicit
      that the host have signaled an IRQ, let's instead immediately set the flag
      in sdio_signal_irq(). This also makes the behavior consistent with host
      drivers that uses the legacy, mmc_signal_sdio_irq() API. This have no
      functional impact, because we don't expect host drivers to call
      sdio_signal_irq() until after the work (sdio_run_irqs()) have been executed
      anyways.
      
      Second, currently we never clears the flag when using the sdio_run_irqs()
      work, but only when using the sdio_irq_thread(). Let make the behavior
      consistent, by moving the flag to be cleared inside the common
      process_sdio_pending_irqs() function. Additionally, tweak the behavior of
      the flag slightly, by avoiding to clear it unless we processed the SDIO
      IRQ. The purpose with this at this point, is to keep the information about
      whether there have been an SDIO IRQ signaled by the host, so at system
      resume we can decide to process it without reading the SDIO_CCCR_INTx
      register.
      Tested-by: NMatthias Kaehlcke <mka@chromium.org>
      Reviewed-by: NMatthias Kaehlcke <mka@chromium.org>
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Reviewed-by: NDouglas Anderson <dianders@chromium.org>
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      86912277
  6. 16 9月, 2019 2 次提交
  7. 06 9月, 2019 2 次提交
  8. 25 8月, 2019 1 次提交
  9. 16 8月, 2019 2 次提交
    • K
      mmc: cavium: Add the missing dma unmap when the dma has finished. · d79d76f2
      Kevin Hao 提交于
      commit b803974a86039913d5280add083d730b2b9ed8ec upstream.
      
      This fixes the below calltrace when the CONFIG_DMA_API_DEBUG is enabled.
        DMA-API: thunderx_mmc 0000:01:01.4: cpu touching an active dma mapped cacheline [cln=0x000000002fdf9800]
        WARNING: CPU: 21 PID: 1 at kernel/dma/debug.c:596 debug_dma_assert_idle+0x1f8/0x270
        Modules linked in:
        CPU: 21 PID: 1 Comm: init Not tainted 5.3.0-rc1-next-20190725-yocto-standard+ #64
        Hardware name: Marvell OcteonTX CN96XX board (DT)
        pstate: 80400009 (Nzcv daif +PAN -UAO)
        pc : debug_dma_assert_idle+0x1f8/0x270
        lr : debug_dma_assert_idle+0x1f8/0x270
        sp : ffff0000113cfc10
        x29: ffff0000113cfc10 x28: 0000ffff8c880000
        x27: ffff800bc72a0000 x26: ffff000010ff8000
        x25: ffff000010ff8940 x24: ffff000010ff8968
        x23: 0000000000000000 x22: ffff000010e83700
        x21: ffff000010ea2000 x20: ffff000010e835c8
        x19: ffff800bc2c73300 x18: ffffffffffffffff
        x17: 0000000000000000 x16: 0000000000000000
        x15: ffff000010e835c8 x14: 6d20616d64206576
        x13: 69746361206e6120 x12: 676e696863756f74
        x11: 20757063203a342e x10: 31303a31303a3030
        x9 : 303020636d6d5f78 x8 : 3230303030303030
        x7 : 00000000000002fd x6 : ffff000010fd57d0
        x5 : 0000000000000000 x4 : ffff0000106c5210
        x3 : 00000000ffffffff x2 : 0000800bee9c0000
        x1 : 57d5843f4aa62800 x0 : 0000000000000000
        Call trace:
         debug_dma_assert_idle+0x1f8/0x270
         wp_page_copy+0xb0/0x688
         do_wp_page+0xa8/0x5b8
         __handle_mm_fault+0x600/0xd00
         handle_mm_fault+0x118/0x1e8
         do_page_fault+0x200/0x500
         do_mem_abort+0x50/0xb0
         el0_da+0x20/0x24
        ---[ end trace a005534bd23e109f ]---
        DMA-API: Mapped at:
         debug_dma_map_sg+0x94/0x350
         cvm_mmc_request+0x3c4/0x988
         __mmc_start_request+0x9c/0x1f8
         mmc_start_request+0x7c/0xb0
         mmc_blk_mq_issue_rq+0x5c4/0x7b8
      Signed-off-by: NKevin Hao <haokexin@gmail.com>
      Fixes: ba3869ff ("mmc: cavium: Add core MMC driver for Cavium SOCs")
      Cc: stable@vger.kernel.org
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d79d76f2
    • K
      mmc: cavium: Set the correct dma max segment size for mmc_host · fd3f902d
      Kevin Hao 提交于
      commit fa25eba6993b3750f417baabba169afaba076178 upstream.
      
      We have set the mmc_host.max_seg_size to 8M, but the dma max segment
      size of PCI device is set to 64K by default in function pci_device_add().
      The mmc_host.max_seg_size is used to set the max segment size of
      the blk queue. Then this mismatch will trigger a calltrace like below
      when a bigger than 64K segment request arrives at mmc dev. So we should
      consider the limitation of the cvm_mmc_host when setting the
      mmc_host.max_seg_size.
        DMA-API: thunderx_mmc 0000:01:01.4: mapping sg segment longer than device claims to support [len=131072] [max=65536]
        WARNING: CPU: 6 PID: 238 at kernel/dma/debug.c:1221 debug_dma_map_sg+0x2b8/0x350
        Modules linked in:
        CPU: 6 PID: 238 Comm: kworker/6:1H Not tainted 5.3.0-rc1-next-20190724-yocto-standard+ #62
        Hardware name: Marvell OcteonTX CN96XX board (DT)
        Workqueue: kblockd blk_mq_run_work_fn
        pstate: 80c00009 (Nzcv daif +PAN +UAO)
        pc : debug_dma_map_sg+0x2b8/0x350
        lr : debug_dma_map_sg+0x2b8/0x350
        sp : ffff00001770f9e0
        x29: ffff00001770f9e0 x28: ffffffff00000000
        x27: 00000000ffffffff x26: ffff800bc2c73180
        x25: ffff000010e83700 x24: 0000000000000002
        x23: 0000000000000001 x22: 0000000000000001
        x21: 0000000000000000 x20: ffff800bc48ba0b0
        x19: ffff800bc97e8c00 x18: ffffffffffffffff
        x17: 0000000000000000 x16: 0000000000000000
        x15: ffff000010e835c8 x14: 6874207265676e6f
        x13: 6c20746e656d6765 x12: 7320677320676e69
        x11: 7070616d203a342e x10: 31303a31303a3030
        x9 : 303020636d6d5f78 x8 : 35363d78616d5b20
        x7 : 00000000000002fd x6 : ffff000010fd57dc
        x5 : 0000000000000000 x4 : ffff0000106c61f0
        x3 : 00000000ffffffff x2 : 0000800bee060000
        x1 : 7010678df3041a00 x0 : 0000000000000000
        Call trace:
         debug_dma_map_sg+0x2b8/0x350
         cvm_mmc_request+0x3c4/0x988
         __mmc_start_request+0x9c/0x1f8
         mmc_start_request+0x7c/0xb0
         mmc_blk_mq_issue_rq+0x5c4/0x7b8
         mmc_mq_queue_rq+0x11c/0x278
         blk_mq_dispatch_rq_list+0xb0/0x568
         blk_mq_do_dispatch_sched+0x6c/0x108
         blk_mq_sched_dispatch_requests+0x110/0x1b8
         __blk_mq_run_hw_queue+0xb0/0x118
         blk_mq_run_work_fn+0x28/0x38
         process_one_work+0x210/0x490
         worker_thread+0x48/0x458
         kthread+0x130/0x138
         ret_from_fork+0x10/0x1c
      Signed-off-by: NKevin Hao <haokexin@gmail.com>
      Fixes: ba3869ff ("mmc: cavium: Add core MMC driver for Cavium SOCs")
      Cc: stable@vger.kernel.org
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      fd3f902d
  10. 07 8月, 2019 2 次提交
  11. 31 7月, 2019 1 次提交
  12. 26 7月, 2019 1 次提交
  13. 14 7月, 2019 1 次提交
  14. 25 6月, 2019 4 次提交
  15. 15 6月, 2019 1 次提交
    • L
      mmc: mmci: Prevent polling for busy detection in IRQ context · 217ec4a6
      Ludovic Barre 提交于
      [ Upstream commit 8520ce1e17799b220ff421d4f39438c9c572ade3 ]
      
      The IRQ handler, mmci_irq(), loops until all status bits have been cleared.
      However, the status bit signaling busy in variant->busy_detect_flag, may be
      set even if busy detection isn't monitored for the current request.
      
      This may be the case for the CMD11 when switching the I/O voltage, which
      leads to that mmci_irq() busy loops in IRQ context. Fix this problem, by
      clearing the status bit for busy, before continuing to validate the
      condition for the loop. This is safe, because the busy status detection has
      already been taken care of by mmci_cmd_irq().
      Signed-off-by: NLudovic Barre <ludovic.barre@st.com>
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      217ec4a6
  16. 31 5月, 2019 8 次提交
    • Y
      mmc: sdhci-of-esdhc: add erratum eSDHC-A001 and A-008358 support · e107bc69
      Yinbo Zhu 提交于
      [ Upstream commit 05cb6b2a66fa7837211a060878e91be5eb10cb07 ]
      
      eSDHC-A001: The data timeout counter (SYSCTL[DTOCV]) is not
      reliable for DTOCV values 0x4(2^17 SD clock), 0x8(2^21 SD clock),
      and 0xC(2^25 SD clock). The data timeout counter can count from
      2^13–2^27, but for values 2^17, 2^21, and 2^25, the timeout
      counter counts for only 2^13 SD clocks.
      A-008358: The data timeout counter value loaded into the timeout
      counter is less than expected and can result into early timeout
      error in case of eSDHC data transactions. The table below shows
      the expected vs actual timeout period for different values of
      SYSCTL[DTOCV]:
      these two erratum has the same quirk to control it, and set
      SDHCI_QUIRK_RESET_AFTER_REQUEST to fix above issue.
      Signed-off-by: NYinbo Zhu <yinbo.zhu@nxp.com>
      Acked-by: NAdrian Hunter <adrian.hunter@intel.com>
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      e107bc69
    • Y
      mmc: sdhci-of-esdhc: add erratum A-009204 support · 019ca0bf
      Yinbo Zhu 提交于
      [ Upstream commit 5dd195522562542bc6ebe6e7bd47890d8b7ca93c ]
      
      In the event of that any data error (like, IRQSTAT[DCE]) occurs
      during an eSDHC data transaction where DMA is used for data
      transfer to/from the system memory, setting the SYSCTL[RSTD]
      register may cause a system hang. If software sets the register
      SYSCTL[RSTD] to 1 for error recovery while DMA transferring is
      not complete, eSDHC may hang the system bus. This happens because
      the software register SYSCTL[RSTD] resets the DMA engine without
      waiting for the completion of pending system transactions. This
      erratum is to fix this issue.
      Signed-off-by: NYinbo Zhu <yinbo.zhu@nxp.com>
      Acked-by: NAdrian Hunter <adrian.hunter@intel.com>
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      019ca0bf
    • Y
      mmc: sdhci-of-esdhc: add erratum eSDHC5 support · 80118cba
      Yinbo Zhu 提交于
      [ Upstream commit a46e42712596b51874f04c73f1cdf1017f88df52 ]
      
      Software writing to the Transfer Type configuration register
      (system clock domain) can cause a setup/hold violation in the
      CRC flops (card clock domain), which can cause write accesses
      to be sent with corrupt CRC values. This issue occurs only for
      write preceded by read. this erratum is to fix this issue.
      Signed-off-by: NYinbo Zhu <yinbo.zhu@nxp.com>
      Acked-by: NAdrian Hunter <adrian.hunter@intel.com>
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      80118cba
    • K
      mmc_spi: add a status check for spi_sync_locked · fa291e89
      Kangjie Lu 提交于
      [ Upstream commit 611025983b7976df0183390a63a2166411d177f1 ]
      
      In case spi_sync_locked fails, the fix reports the error and
      returns the error code upstream.
      Signed-off-by: NKangjie Lu <kjlu@umn.edu>
      Reviewed-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      fa291e89
    • A
      mmc: core: make pwrseq_emmc (partially) support sleepy GPIO controllers · 059c2f53
      Andrea Merello 提交于
      [ Upstream commit 002ee28e8b322d4d4b7b83234b5d0f4ebd428eda ]
      
      pwrseq_emmc.c implements a HW reset procedure for eMMC chip by driving a
      GPIO line.
      
      It registers the .reset() cb on mmc_pwrseq_ops and it registers a system
      restart notification handler; both of them perform reset by unconditionally
      calling gpiod_set_value().
      
      If the eMMC reset line is tied to a GPIO controller whose driver can sleep
      (i.e. I2C GPIO controller), then the kernel would spit warnings when trying
      to reset the eMMC chip by means of .reset() mmc_pwrseq_ops cb (that is
      exactly what I'm seeing during boot).
      
      Furthermore, on system reset we would gets to the system restart
      notification handler with disabled interrupts - local_irq_disable() is
      called in machine_restart() at least on ARM/ARM64 - and we would be in
      trouble when the GPIO driver tries to sleep (which indeed doesn't happen
      here, likely because in my case the machine specific code doesn't call
      do_kernel_restart(), I guess..).
      
      This patch fixes the .reset() cb to make use of gpiod_set_value_cansleep(),
      so that the eMMC gets reset on boot without complaints, while, since there
      isn't that much we can do, we avoid register the restart handler if the
      GPIO controller has a sleepy driver (and we spit a dev_notice() message to
      let people know)..
      
      This had been tested on a downstream 4.9 kernel with backported
      commit 83f37ee7ba33 ("mmc: pwrseq: Add reset callback to the struct
      mmc_pwrseq_ops") and commit ae60fb031cf2 ("mmc: core: Don't do eMMC HW
      reset when resuming the eMMC card"), because I couldn't boot my board
      otherwise. Maybe worth to RFT.
      Signed-off-by: NAndrea Merello <andrea.merello@gmail.com>
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      059c2f53
    • R
      mmc: core: Verify SD bus width · d96a6c31
      Raul E Rangel 提交于
      [ Upstream commit 9e4be8d03f50d1b25c38e2b59e73b194c130df7d ]
      
      The SD Physical Layer Spec says the following: Since the SD Memory Card
      shall support at least the two bus modes 1-bit or 4-bit width, then any SD
      Card shall set at least bits 0 and 2 (SD_BUS_WIDTH="0101").
      
      This change verifies the card has specified a bus width.
      
      AMD SDHC Device 7806 can get into a bad state after a card disconnect
      where anything transferred via the DATA lines will always result in a
      zero filled buffer. Currently the driver will continue without error if
      the HC is in this condition. A block device will be created, but reading
      from it will result in a zero buffer. This makes it seem like the SD
      device has been erased, when in actuality the data is never getting
      copied from the DATA lines to the data buffer.
      
      SCR is the first command in the SD initialization sequence that uses the
      DATA lines. By checking that the response was invalid, we can abort
      mounting the card.
      Reviewed-by: NAvri Altman <avri.altman@wdc.com>
      Signed-off-by: NRaul E Rangel <rrangel@chromium.org>
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      d96a6c31
    • T
      mmc: sdhci-iproc: Set NO_HISPD bit to fix HS50 data hold time problem · 5b69ceee
      Trac Hoang 提交于
      commit ec0970e0a1b2c807c908d459641a9f9a1be3e130 upstream.
      
      The iproc host eMMC/SD controller hold time does not meet the
      specification in the HS50 mode.  This problem can be mitigated
      by disabling the HISPD bit; thus forcing the controller output
      data to be driven on the falling clock edges rather than the
      rising clock edges.
      
      Stable tag (v4.12+) chosen to assist stable kernel maintainers so that
      the change does not produce merge conflicts backporting to older kernel
      versions. In reality, the timing bug existed since the driver was first
      introduced but there is no need for this driver to be supported in kernel
      versions that old.
      
      Cc: stable@vger.kernel.org # v4.12+
      Signed-off-by: NTrac Hoang <trac.hoang@broadcom.com>
      Signed-off-by: NScott Branden <scott.branden@broadcom.com>
      Acked-by: NAdrian Hunter <adrian.hunter@intel.com>
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5b69ceee
    • T
      mmc: sdhci-iproc: cygnus: Set NO_HISPD bit to fix HS50 data hold time problem · 227e0153
      Trac Hoang 提交于
      commit b7dfa695afc40d5396ed84b9f25aa3754de23e39 upstream.
      
      The iproc host eMMC/SD controller hold time does not meet the
      specification in the HS50 mode. This problem can be mitigated
      by disabling the HISPD bit; thus forcing the controller output
      data to be driven on the falling clock edges rather than the
      rising clock edges.
      
      This change applies only to the Cygnus platform.
      
      Stable tag (v4.12+) chosen to assist stable kernel maintainers so that
      the change does not produce merge conflicts backporting to older kernel
      versions. In reality, the timing bug existed since the driver was first
      introduced but there is no need for this driver to be supported in kernel
      versions that old.
      
      Cc: stable@vger.kernel.org # v4.12+
      Signed-off-by: NTrac Hoang <trac.hoang@broadcom.com>
      Signed-off-by: NScott Branden <scott.branden@broadcom.com>
      Acked-by: NAdrian Hunter <adrian.hunter@intel.com>
      Signed-off-by: NUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      227e0153
  17. 22 5月, 2019 2 次提交
  18. 15 5月, 2019 1 次提交
    • P
      x86/cpu: Sanitize FAM6_ATOM naming · 1f1bc822
      Peter Zijlstra 提交于
      commit f2c4db1bd80720cd8cb2a5aa220d9bc9f374f04e upstream
      
      Going primarily by:
      
        https://en.wikipedia.org/wiki/List_of_Intel_Atom_microprocessors
      
      with additional information gleaned from other related pages; notably:
      
       - Bonnell shrink was called Saltwell
       - Moorefield is the Merriefield refresh which makes it Airmont
      
      The general naming scheme is: FAM6_ATOM_UARCH_SOCTYPE
      
        for i in `git grep -l FAM6_ATOM` ; do
      	sed -i  -e 's/ATOM_PINEVIEW/ATOM_BONNELL/g'		\
      		-e 's/ATOM_LINCROFT/ATOM_BONNELL_MID/'		\
      		-e 's/ATOM_PENWELL/ATOM_SALTWELL_MID/g'		\
      		-e 's/ATOM_CLOVERVIEW/ATOM_SALTWELL_TABLET/g'	\
      		-e 's/ATOM_CEDARVIEW/ATOM_SALTWELL/g'		\
      		-e 's/ATOM_SILVERMONT1/ATOM_SILVERMONT/g'	\
      		-e 's/ATOM_SILVERMONT2/ATOM_SILVERMONT_X/g'	\
      		-e 's/ATOM_MERRIFIELD/ATOM_SILVERMONT_MID/g'	\
      		-e 's/ATOM_MOOREFIELD/ATOM_AIRMONT_MID/g'	\
      		-e 's/ATOM_DENVERTON/ATOM_GOLDMONT_X/g'		\
      		-e 's/ATOM_GEMINI_LAKE/ATOM_GOLDMONT_PLUS/g' ${i}
        done
      Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vince Weaver <vincent.weaver@maine.edu>
      Cc: dave.hansen@linux.intel.com
      Cc: len.brown@intel.com
      Signed-off-by: NIngo Molnar <mingo@kernel.org>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      1f1bc822