<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/mmc/host, branch v4.0.2</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>mmc: sunxi: Use devm_reset_control_get_optional() for reset control</title>
<updated>2015-05-06T20:03:43+00:00</updated>
<author>
<name>Chen-Yu Tsai</name>
<email>wens@csie.org</email>
</author>
<published>2015-03-03T01:44:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=85895968a9444e810f96cc951c6b5fc7dd183296'/>
<id>85895968a9444e810f96cc951c6b5fc7dd183296</id>
<content type='text'>
commit 9e71c589e44ddf2b86f361c81e360c6b0d0354b1 upstream.

The reset control for the sunxi mmc controller is optional. Some
newer platforms (sun6i, sun8i, sun9i) have it, while older ones
(sun4i, sun5i, sun7i) don't.

Use the properly stubbed _optional version so the driver does not
fail to compile when RESET_CONTROLLER=n.

This patch also adds a check for deferred probing on the reset
control.

Signed-off-by: Chen-Yu Tsai &lt;wens@csie.org&gt;
Acked-by: David Lanzendörfer &lt;david.lanzendoerfer@o2s.ch&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 9e71c589e44ddf2b86f361c81e360c6b0d0354b1 upstream.

The reset control for the sunxi mmc controller is optional. Some
newer platforms (sun6i, sun8i, sun9i) have it, while older ones
(sun4i, sun5i, sun7i) don't.

Use the properly stubbed _optional version so the driver does not
fail to compile when RESET_CONTROLLER=n.

This patch also adds a check for deferred probing on the reset
control.

Signed-off-by: Chen-Yu Tsai &lt;wens@csie.org&gt;
Acked-by: David Lanzendörfer &lt;david.lanzendoerfer@o2s.ch&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: tmio: Remove bogus un-initialization in tmio_mmc_host_free()</title>
<updated>2015-05-06T20:03:43+00:00</updated>
<author>
<name>Geert Uytterhoeven</name>
<email>geert+renesas@glider.be</email>
</author>
<published>2015-02-18T16:34:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=7df0c5a403d2e9a1698a6ebdcf6e37a0639aad85'/>
<id>7df0c5a403d2e9a1698a6ebdcf6e37a0639aad85</id>
<content type='text'>
commit 13a6a2ed1f5e77ae47c2b1a8e3bf22b2fa2d56ba upstream.

If CONFIG_DEBUG_SLAB=y:

    sh_mobile_sdhi ee100000.sd: Got CD GPIO
    sh_mobile_sdhi ee100000.sd: Got WP GPIO
    platform ee100000.sd: Driver sh_mobile_sdhi requests probe deferral
    ...
    Slab corruption (Not tainted): kmalloc-1024 start=ed8b3c00, len=1024
    2d0: 00 00 00 00 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  ....kkkkkkkkkkkk
    Prev obj: start=ed8b3800, len=1024
    000: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
    010: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk

Struct tmio_mmc_host is embedded inside struct mmc_host, and thus is
freed by the call to mmc_free_host(). Hence it must not be written to
afterwards, as that will corrupt freed (and perhaps already reused)
memory.

Fixes: 94b110aff8679b14 ("mmc: tmio: add tmio_mmc_host_alloc/free()")
Signed-off-by: Geert Uytterhoeven &lt;geert+renesas@glider.be&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 13a6a2ed1f5e77ae47c2b1a8e3bf22b2fa2d56ba upstream.

If CONFIG_DEBUG_SLAB=y:

    sh_mobile_sdhi ee100000.sd: Got CD GPIO
    sh_mobile_sdhi ee100000.sd: Got WP GPIO
    platform ee100000.sd: Driver sh_mobile_sdhi requests probe deferral
    ...
    Slab corruption (Not tainted): kmalloc-1024 start=ed8b3c00, len=1024
    2d0: 00 00 00 00 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  ....kkkkkkkkkkkk
    Prev obj: start=ed8b3800, len=1024
    000: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
    010: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk

Struct tmio_mmc_host is embedded inside struct mmc_host, and thus is
freed by the call to mmc_free_host(). Hence it must not be written to
afterwards, as that will corrupt freed (and perhaps already reused)
memory.

Fixes: 94b110aff8679b14 ("mmc: tmio: add tmio_mmc_host_alloc/free()")
Signed-off-by: Geert Uytterhoeven &lt;geert+renesas@glider.be&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'clk-for-linus-3.20' of git://git.linaro.org/people/mike.turquette/linux</title>
<updated>2015-02-21T20:30:30+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2015-02-21T20:30:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=18a8d49973667aa016e68826eeb374788b7c63b0'/>
<id>18a8d49973667aa016e68826eeb374788b7c63b0</id>
<content type='text'>
Pull clock framework updates from Mike Turquette:
 "The clock framework changes contain the usual driver additions,
  enhancements and fixes mostly for ARM32, ARM64, MIPS and Power-based
  devices.

  Additionally the framework core underwent a bit of surgery with two
  major changes:

   - The boundary between the clock core and clock providers (e.g clock
     drivers) is now more well defined with dedicated provider helper
     functions.  struct clk no longer maps 1:1 with the hardware clock
     but is a true per-user cookie which helps us tracker users of
     hardware clocks and debug bad behavior.

   - The addition of rate constraints for clocks.  Rate ranges are now
     supported which are analogous to the voltage ranges in the
     regulator framework.

  Unfortunately these changes to the core created some breakeage.  We
  think we fixed it all up but for this reason there are lots of last
  minute commits trying to undo the damage"

* tag 'clk-for-linus-3.20' of git://git.linaro.org/people/mike.turquette/linux: (113 commits)
  clk: Only recalculate the rate if needed
  Revert "clk: mxs: Fix invalid 32-bit access to frac registers"
  clk: qoriq: Add support for the platform PLL
  powerpc/corenet: Enable CLK_QORIQ
  clk: Replace explicit clk assignment with __clk_hw_set_clk
  clk: Add __clk_hw_set_clk helper function
  clk: Don't dereference parent clock if is NULL
  MIPS: Alchemy: Remove bogus args from alchemy_clk_fgcs_detr
  clkdev: Always allocate a struct clk and call __clk_get() w/ CCF
  clk: shmobile: div6: Avoid division by zero in .round_rate()
  clk: mxs: Fix invalid 32-bit access to frac registers
  clk: omap: compile legacy omap3 clocks conditionally
  clkdev: Export clk_register_clkdev
  clk: Add rate constraints to clocks
  clk: remove clk-private.h
  pci: xgene: do not use clk-private.h
  arm: omap2+ remove dead clock code
  clk: Make clk API return per-user struct clk instances
  clk: tegra: Define PLLD_DSI and remove dsia(b)_mux
  clk: tegra: Add support for the Tegra132 CAR IP block
  ...
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull clock framework updates from Mike Turquette:
 "The clock framework changes contain the usual driver additions,
  enhancements and fixes mostly for ARM32, ARM64, MIPS and Power-based
  devices.

  Additionally the framework core underwent a bit of surgery with two
  major changes:

   - The boundary between the clock core and clock providers (e.g clock
     drivers) is now more well defined with dedicated provider helper
     functions.  struct clk no longer maps 1:1 with the hardware clock
     but is a true per-user cookie which helps us tracker users of
     hardware clocks and debug bad behavior.

   - The addition of rate constraints for clocks.  Rate ranges are now
     supported which are analogous to the voltage ranges in the
     regulator framework.

  Unfortunately these changes to the core created some breakeage.  We
  think we fixed it all up but for this reason there are lots of last
  minute commits trying to undo the damage"

* tag 'clk-for-linus-3.20' of git://git.linaro.org/people/mike.turquette/linux: (113 commits)
  clk: Only recalculate the rate if needed
  Revert "clk: mxs: Fix invalid 32-bit access to frac registers"
  clk: qoriq: Add support for the platform PLL
  powerpc/corenet: Enable CLK_QORIQ
  clk: Replace explicit clk assignment with __clk_hw_set_clk
  clk: Add __clk_hw_set_clk helper function
  clk: Don't dereference parent clock if is NULL
  MIPS: Alchemy: Remove bogus args from alchemy_clk_fgcs_detr
  clkdev: Always allocate a struct clk and call __clk_get() w/ CCF
  clk: shmobile: div6: Avoid division by zero in .round_rate()
  clk: mxs: Fix invalid 32-bit access to frac registers
  clk: omap: compile legacy omap3 clocks conditionally
  clkdev: Export clk_register_clkdev
  clk: Add rate constraints to clocks
  clk: remove clk-private.h
  pci: xgene: do not use clk-private.h
  arm: omap2+ remove dead clock code
  clk: Make clk API return per-user struct clk instances
  clk: tegra: Define PLLD_DSI and remove dsia(b)_mux
  clk: tegra: Add support for the Tegra132 CAR IP block
  ...
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: sdhci-s3c: solve problem with sleeping in atomic context</title>
<updated>2015-02-04T12:39:14+00:00</updated>
<author>
<name>Paul Osmialowski</name>
<email>p.osmialowsk@samsung.com</email>
</author>
<published>2015-02-04T09:16:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=017210d1c0dc2e2d3b142985cb31d90b98dc0f0f'/>
<id>017210d1c0dc2e2d3b142985cb31d90b98dc0f0f</id>
<content type='text'>
This change addresses following problem:

[    2.560726] ------------[ cut here ]------------
[    2.565341] WARNING: CPU: 0 PID: 1 at kernel/locking/lockdep.c:2744 lockdep_trace_alloc+0xec/0x118()
[    2.574439] DEBUG_LOCKS_WARN_ON(irqs_disabled_flags(flags))
[    2.579821] Modules linked in:
[    2.583038] CPU: 0 PID: 1 Comm: swapper/0 Tainted: G        W      3.18.0-next-20141216-00002-g4ff197fc1902-dirty #1318
[    2.593796] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
[    2.599892] [&lt;c0014c44&gt;] (unwind_backtrace) from [&lt;c0011bbc&gt;] (show_stack+0x10/0x14)
[    2.607612] [&lt;c0011bbc&gt;] (show_stack) from [&lt;c04953b8&gt;] (dump_stack+0x70/0xbc)
[    2.614822] [&lt;c04953b8&gt;] (dump_stack) from [&lt;c0023444&gt;] (warn_slowpath_common+0x74/0xb0)
[    2.622885] [&lt;c0023444&gt;] (warn_slowpath_common) from [&lt;c0023514&gt;] (warn_slowpath_fmt+0x30/0x40)
[    2.631569] [&lt;c0023514&gt;] (warn_slowpath_fmt) from [&lt;c0063644&gt;] (lockdep_trace_alloc+0xec/0x118)
[    2.640246] [&lt;c0063644&gt;] (lockdep_trace_alloc) from [&lt;c00df52c&gt;] (__kmalloc+0x3c/0x1cc)
[    2.648240] [&lt;c00df52c&gt;] (__kmalloc) from [&lt;c0394970&gt;] (clk_fetch_parent_index+0xb8/0xd4)
[    2.656390] [&lt;c0394970&gt;] (clk_fetch_parent_index) from [&lt;c0394a6c&gt;] (clk_calc_new_rates+0xe0/0x1fc)
[    2.665415] [&lt;c0394a6c&gt;] (clk_calc_new_rates) from [&lt;c0394b40&gt;] (clk_calc_new_rates+0x1b4/0x1fc)
[    2.674181] [&lt;c0394b40&gt;] (clk_calc_new_rates) from [&lt;c0395408&gt;] (clk_set_rate+0x50/0xc8)
[    2.682265] [&lt;c0395408&gt;] (clk_set_rate) from [&lt;c0377708&gt;] (sdhci_cmu_set_clock+0x68/0x16c)
[    2.690503] [&lt;c0377708&gt;] (sdhci_cmu_set_clock) from [&lt;c03735cc&gt;] (sdhci_do_set_ios+0xf0/0x64c)
[    2.699095] [&lt;c03735cc&gt;] (sdhci_do_set_ios) from [&lt;c0373b48&gt;] (sdhci_set_ios+0x20/0x2c)
[    2.707080] [&lt;c0373b48&gt;] (sdhci_set_ios) from [&lt;c035ddf0&gt;] (mmc_power_up+0x118/0x1fc)
[    2.714889] [&lt;c035ddf0&gt;] (mmc_power_up) from [&lt;c035ecd0&gt;] (mmc_start_host+0x44/0x6c)
[    2.722615] [&lt;c035ecd0&gt;] (mmc_start_host) from [&lt;c035fd60&gt;] (mmc_add_host+0x58/0x7c)
[    2.730341] [&lt;c035fd60&gt;] (mmc_add_host) from [&lt;c037454c&gt;] (sdhci_add_host+0x968/0xd94)
[    2.738240] [&lt;c037454c&gt;] (sdhci_add_host) from [&lt;c0377b60&gt;] (sdhci_s3c_probe+0x354/0x52c)
[    2.746406] [&lt;c0377b60&gt;] (sdhci_s3c_probe) from [&lt;c0283b58&gt;] (platform_drv_probe+0x48/0xa4)
[    2.754733] [&lt;c0283b58&gt;] (platform_drv_probe) from [&lt;c02824e8&gt;] (driver_probe_device+0x13c/0x37c)
[    2.763585] [&lt;c02824e8&gt;] (driver_probe_device) from [&lt;c02827bc&gt;] (__driver_attach+0x94/0x98)
[    2.772003] [&lt;c02827bc&gt;] (__driver_attach) from [&lt;c0280a60&gt;] (bus_for_each_dev+0x54/0x88)
[    2.780163] [&lt;c0280a60&gt;] (bus_for_each_dev) from [&lt;c0281b48&gt;] (bus_add_driver+0xe4/0x200)
[    2.788322] [&lt;c0281b48&gt;] (bus_add_driver) from [&lt;c0282dfc&gt;] (driver_register+0x78/0xf4)
[    2.796308] [&lt;c0282dfc&gt;] (driver_register) from [&lt;c00089b0&gt;] (do_one_initcall+0xac/0x1f0)
[    2.804473] [&lt;c00089b0&gt;] (do_one_initcall) from [&lt;c0673d94&gt;] (kernel_init_freeable+0x10c/0x1d8)
[    2.813153] [&lt;c0673d94&gt;] (kernel_init_freeable) from [&lt;c0490058&gt;] (kernel_init+0x28/0x108)
[    2.821398] [&lt;c0490058&gt;] (kernel_init) from [&lt;c000f268&gt;] (ret_from_fork+0x14/0x2c)
[    2.828939] ---[ end trace 03cc00e539849d1f ]---

clk_set_rate() tries to take clk's prepare_lock mutex while being in atomic
context entered in sdhci_do_set_ios().

The solution is inspired by similar situation in sdhci_set_power() also called
from sdhci_do_set_ios():

                spin_unlock_irq(&amp;host-&gt;lock);
                mmc_regulator_set_ocr(mmc, mmc-&gt;supply.vmmc, vdd);
                spin_lock_irq(&amp;host-&gt;lock);

Note that since sdhci_s3c_set_clock() sets SDHCI_CLOCK_CARD_EN, proposed change
first resets this bit. It is reset anyway (by setting SDHCI_CLOCK_INT_EN bit
only) after call to clk_set_rate() in order to wait for the clock to stabilize
and is set again as soon as the clock becomes stable.

Signed-off-by: Paul Osmialowski &lt;p.osmialowsk@samsung.com&gt;
Tested-by: Jaehoon Chung &lt;jh80.chung@samsung.com&gt;
Acked-by: Jaehoon Chung &lt;jh80.chung@samsung.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This change addresses following problem:

[    2.560726] ------------[ cut here ]------------
[    2.565341] WARNING: CPU: 0 PID: 1 at kernel/locking/lockdep.c:2744 lockdep_trace_alloc+0xec/0x118()
[    2.574439] DEBUG_LOCKS_WARN_ON(irqs_disabled_flags(flags))
[    2.579821] Modules linked in:
[    2.583038] CPU: 0 PID: 1 Comm: swapper/0 Tainted: G        W      3.18.0-next-20141216-00002-g4ff197fc1902-dirty #1318
[    2.593796] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
[    2.599892] [&lt;c0014c44&gt;] (unwind_backtrace) from [&lt;c0011bbc&gt;] (show_stack+0x10/0x14)
[    2.607612] [&lt;c0011bbc&gt;] (show_stack) from [&lt;c04953b8&gt;] (dump_stack+0x70/0xbc)
[    2.614822] [&lt;c04953b8&gt;] (dump_stack) from [&lt;c0023444&gt;] (warn_slowpath_common+0x74/0xb0)
[    2.622885] [&lt;c0023444&gt;] (warn_slowpath_common) from [&lt;c0023514&gt;] (warn_slowpath_fmt+0x30/0x40)
[    2.631569] [&lt;c0023514&gt;] (warn_slowpath_fmt) from [&lt;c0063644&gt;] (lockdep_trace_alloc+0xec/0x118)
[    2.640246] [&lt;c0063644&gt;] (lockdep_trace_alloc) from [&lt;c00df52c&gt;] (__kmalloc+0x3c/0x1cc)
[    2.648240] [&lt;c00df52c&gt;] (__kmalloc) from [&lt;c0394970&gt;] (clk_fetch_parent_index+0xb8/0xd4)
[    2.656390] [&lt;c0394970&gt;] (clk_fetch_parent_index) from [&lt;c0394a6c&gt;] (clk_calc_new_rates+0xe0/0x1fc)
[    2.665415] [&lt;c0394a6c&gt;] (clk_calc_new_rates) from [&lt;c0394b40&gt;] (clk_calc_new_rates+0x1b4/0x1fc)
[    2.674181] [&lt;c0394b40&gt;] (clk_calc_new_rates) from [&lt;c0395408&gt;] (clk_set_rate+0x50/0xc8)
[    2.682265] [&lt;c0395408&gt;] (clk_set_rate) from [&lt;c0377708&gt;] (sdhci_cmu_set_clock+0x68/0x16c)
[    2.690503] [&lt;c0377708&gt;] (sdhci_cmu_set_clock) from [&lt;c03735cc&gt;] (sdhci_do_set_ios+0xf0/0x64c)
[    2.699095] [&lt;c03735cc&gt;] (sdhci_do_set_ios) from [&lt;c0373b48&gt;] (sdhci_set_ios+0x20/0x2c)
[    2.707080] [&lt;c0373b48&gt;] (sdhci_set_ios) from [&lt;c035ddf0&gt;] (mmc_power_up+0x118/0x1fc)
[    2.714889] [&lt;c035ddf0&gt;] (mmc_power_up) from [&lt;c035ecd0&gt;] (mmc_start_host+0x44/0x6c)
[    2.722615] [&lt;c035ecd0&gt;] (mmc_start_host) from [&lt;c035fd60&gt;] (mmc_add_host+0x58/0x7c)
[    2.730341] [&lt;c035fd60&gt;] (mmc_add_host) from [&lt;c037454c&gt;] (sdhci_add_host+0x968/0xd94)
[    2.738240] [&lt;c037454c&gt;] (sdhci_add_host) from [&lt;c0377b60&gt;] (sdhci_s3c_probe+0x354/0x52c)
[    2.746406] [&lt;c0377b60&gt;] (sdhci_s3c_probe) from [&lt;c0283b58&gt;] (platform_drv_probe+0x48/0xa4)
[    2.754733] [&lt;c0283b58&gt;] (platform_drv_probe) from [&lt;c02824e8&gt;] (driver_probe_device+0x13c/0x37c)
[    2.763585] [&lt;c02824e8&gt;] (driver_probe_device) from [&lt;c02827bc&gt;] (__driver_attach+0x94/0x98)
[    2.772003] [&lt;c02827bc&gt;] (__driver_attach) from [&lt;c0280a60&gt;] (bus_for_each_dev+0x54/0x88)
[    2.780163] [&lt;c0280a60&gt;] (bus_for_each_dev) from [&lt;c0281b48&gt;] (bus_add_driver+0xe4/0x200)
[    2.788322] [&lt;c0281b48&gt;] (bus_add_driver) from [&lt;c0282dfc&gt;] (driver_register+0x78/0xf4)
[    2.796308] [&lt;c0282dfc&gt;] (driver_register) from [&lt;c00089b0&gt;] (do_one_initcall+0xac/0x1f0)
[    2.804473] [&lt;c00089b0&gt;] (do_one_initcall) from [&lt;c0673d94&gt;] (kernel_init_freeable+0x10c/0x1d8)
[    2.813153] [&lt;c0673d94&gt;] (kernel_init_freeable) from [&lt;c0490058&gt;] (kernel_init+0x28/0x108)
[    2.821398] [&lt;c0490058&gt;] (kernel_init) from [&lt;c000f268&gt;] (ret_from_fork+0x14/0x2c)
[    2.828939] ---[ end trace 03cc00e539849d1f ]---

clk_set_rate() tries to take clk's prepare_lock mutex while being in atomic
context entered in sdhci_do_set_ios().

The solution is inspired by similar situation in sdhci_set_power() also called
from sdhci_do_set_ios():

                spin_unlock_irq(&amp;host-&gt;lock);
                mmc_regulator_set_ocr(mmc, mmc-&gt;supply.vmmc, vdd);
                spin_lock_irq(&amp;host-&gt;lock);

Note that since sdhci_s3c_set_clock() sets SDHCI_CLOCK_CARD_EN, proposed change
first resets this bit. It is reset anyway (by setting SDHCI_CLOCK_INT_EN bit
only) after call to clk_set_rate() in order to wait for the clock to stabilize
and is set again as soon as the clock becomes stable.

Signed-off-by: Paul Osmialowski &lt;p.osmialowsk@samsung.com&gt;
Tested-by: Jaehoon Chung &lt;jh80.chung@samsung.com&gt;
Acked-by: Jaehoon Chung &lt;jh80.chung@samsung.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: moxart: fix probe logic</title>
<updated>2015-02-04T08:42:29+00:00</updated>
<author>
<name>Arnd Bergmann</name>
<email>arnd@arndb.de</email>
</author>
<published>2015-02-03T15:55:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=3981c516664d81a3e83c1923fa1ab3988c529402'/>
<id>3981c516664d81a3e83c1923fa1ab3988c529402</id>
<content type='text'>
Jonas Jensen wanted to submit a patch for these, but apparently
forgot about it. I stumbled over this symptom first:

drivers/built-in.o: In function `moxart_probe':
:(.text+0x2af128): undefined reference to `of_dma_request_slave_channel'

This is because of_dma_request_slave_channel is an internal helper
and not exported to loadable module. I'm changing the driver to
use dma_request_slave_channel_reason() instead.

Further problems from inspection:

* The remove function must not call kfree on the host pointer,
  because it is allocated together with the mmc_host.

* The clock is never released

* The dma_cap_mask_t is completely unused and can be removed

* deferred probing does not work if the dma driver is loaded
  after the mmc driver.

This patch should fix all of the above.

Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Signed-off-by: Jonas Jensen &lt;jonas.jensen@gmail.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Jonas Jensen wanted to submit a patch for these, but apparently
forgot about it. I stumbled over this symptom first:

drivers/built-in.o: In function `moxart_probe':
:(.text+0x2af128): undefined reference to `of_dma_request_slave_channel'

This is because of_dma_request_slave_channel is an internal helper
and not exported to loadable module. I'm changing the driver to
use dma_request_slave_channel_reason() instead.

Further problems from inspection:

* The remove function must not call kfree on the host pointer,
  because it is allocated together with the mmc_host.

* The clock is never released

* The dma_cap_mask_t is completely unused and can be removed

* deferred probing does not work if the dma driver is loaded
  after the mmc driver.

This patch should fix all of the above.

Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Signed-off-by: Jonas Jensen &lt;jonas.jensen@gmail.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'clk-next' into v3.19-rc7</title>
<updated>2015-02-02T22:59:38+00:00</updated>
<author>
<name>Michael Turquette</name>
<email>mturquette@linaro.org</email>
</author>
<published>2015-02-02T22:59:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=54eea32f7ed3037c91853924227585b65df909a8'/>
<id>54eea32f7ed3037c91853924227585b65df909a8</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: Add hardware dependencies for sdhci-pxav3 and sdhci-pxav2</title>
<updated>2015-01-30T10:44:42+00:00</updated>
<author>
<name>Jean Delvare</name>
<email>jdelvare@suse.de</email>
</author>
<published>2015-01-26T10:23:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=8a8735eb4ceaa40ddd18c09c0bfa5dae34371a3a'/>
<id>8a8735eb4ceaa40ddd18c09c0bfa5dae34371a3a</id>
<content type='text'>
I seem to understand that the sdhci-pxav3 and sdhci-pxav2 drivers are
only needed on the MMP architecture. So add a hardware dependency on
ARCH_MMP, so that other users don't get to build useless drivers.

Signed-off-by: Jean Delvare &lt;jdelvare@suse.de&gt;
Cc: Chris Ball &lt;chris@printf.net&gt;
Cc: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Cc: Eric Miao &lt;eric.y.miao@gmail.com&gt;
Acked-by: Haojian Zhuang &lt;haojian.zhuang@gmail.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I seem to understand that the sdhci-pxav3 and sdhci-pxav2 drivers are
only needed on the MMP architecture. So add a hardware dependency on
ARCH_MMP, so that other users don't get to build useless drivers.

Signed-off-by: Jean Delvare &lt;jdelvare@suse.de&gt;
Cc: Chris Ball &lt;chris@printf.net&gt;
Cc: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Cc: Eric Miao &lt;eric.y.miao@gmail.com&gt;
Acked-by: Haojian Zhuang &lt;haojian.zhuang@gmail.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: sdhci-pxav3: Modify clock settings for the SDR50 and DDR50 modes</title>
<updated>2015-01-29T12:08:46+00:00</updated>
<author>
<name>Marcin Wojtas</name>
<email>mw@semihalf.com</email>
</author>
<published>2015-01-29T11:36:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=1140011ee9d9ca34a2d3e4950c2e6c388188c5e6'/>
<id>1140011ee9d9ca34a2d3e4950c2e6c388188c5e6</id>
<content type='text'>
According to erratum 'FE-2946959' both SDR50 and DDR50 modes require
specific clock adjustments in SDIO3 Configuration register.

This commit add the support of this register and for SDR50 or DDR50
mode use it as suggested by the erratum:
- Set the SDIO3 Clock Inv field in SDIO3 Configuration register to not
inverted.
- Set the Sample FeedBack Clock field to 0x1

[gregory.clement@free-electrons.com: port from 3.10]

Signed-off-by: Gregory CLEMENT &lt;gregory.clement@free-electrons.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
According to erratum 'FE-2946959' both SDR50 and DDR50 modes require
specific clock adjustments in SDIO3 Configuration register.

This commit add the support of this register and for SDR50 or DDR50
mode use it as suggested by the erratum:
- Set the SDIO3 Clock Inv field in SDIO3 Configuration register to not
inverted.
- Set the Sample FeedBack Clock field to 0x1

[gregory.clement@free-electrons.com: port from 3.10]

Signed-off-by: Gregory CLEMENT &lt;gregory.clement@free-electrons.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: sdhci-pxav3: Fix Armada 38x controller's caps according to erratum ERR-7878951</title>
<updated>2015-01-29T12:08:02+00:00</updated>
<author>
<name>Marcin Wojtas</name>
<email>mw@semihalf.com</email>
</author>
<published>2015-01-29T11:36:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=a39128bcd6f1e56c6514abf489b40b67d226093b'/>
<id>a39128bcd6f1e56c6514abf489b40b67d226093b</id>
<content type='text'>
According to erratum 'ERR-7878951' Armada 38x SDHCI controller has
different capabilities than the ones shown in its registers:

- it doesn't support the voltage switching: it can work either with
  3.3V or 1.8V supply
- it doesn't support the SDR104 mode
- SDR50 mode doesn't need tuning

The SDHCI_QUIRK_MISSING_CAPS quirk is used for updating the
capabilities accordingly.

[gregory.clement@free-electrons.com: port from 3.10]

Fixes: 5491ce3f79ee ("mmc: sdhci-pxav3: add support for the Armada 38x SDHCI controller")
Cc: &lt;stable@vger.kernel.org&gt; # v3.15+

Signed-off-by: Gregory CLEMENT &lt;gregory.clement@free-electrons.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
According to erratum 'ERR-7878951' Armada 38x SDHCI controller has
different capabilities than the ones shown in its registers:

- it doesn't support the voltage switching: it can work either with
  3.3V or 1.8V supply
- it doesn't support the SDR104 mode
- SDR50 mode doesn't need tuning

The SDHCI_QUIRK_MISSING_CAPS quirk is used for updating the
capabilities accordingly.

[gregory.clement@free-electrons.com: port from 3.10]

Fixes: 5491ce3f79ee ("mmc: sdhci-pxav3: add support for the Armada 38x SDHCI controller")
Cc: &lt;stable@vger.kernel.org&gt; # v3.15+

Signed-off-by: Gregory CLEMENT &lt;gregory.clement@free-electrons.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: sdhci-pxav3: Fix SDR50 and DDR50 capabilities for the Armada 38x flavor</title>
<updated>2015-01-29T12:07:41+00:00</updated>
<author>
<name>Gregory CLEMENT</name>
<email>gregory.clement@free-electrons.com</email>
</author>
<published>2015-01-29T11:36:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=d4b803c559843e3774736e5108cf6331cf75f64c'/>
<id>d4b803c559843e3774736e5108cf6331cf75f64c</id>
<content type='text'>
According to erratum 'FE-2946959' both SDR50 and DDR50 modes require
specific clock adjustments in SDIO3 Configuration register. However,
this register was not part of the device tree binding. Even if the
binding can (and will) be extended we still need handling the case
where this register was not available. In this case we use the
SDHCI_QUIRK_MISSING_CAPS quirk remove them from the capabilities.

This commit is based on the work done by Marcin Wojtas&lt;mw@semihalf.com&gt;

Fixes: 5491ce3f79ee ("mmc: sdhci-pxav3: add support for the Armada 38x SDHCI controller")
Cc: &lt;stable@vger.kernel.org&gt; # v3.15+
Signed-off-by: Gregory CLEMENT &lt;gregory.clement@free-electrons.com&gt;
Signed-off-by: Marcin Wojtas &lt;mw@semihalf.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
According to erratum 'FE-2946959' both SDR50 and DDR50 modes require
specific clock adjustments in SDIO3 Configuration register. However,
this register was not part of the device tree binding. Even if the
binding can (and will) be extended we still need handling the case
where this register was not available. In this case we use the
SDHCI_QUIRK_MISSING_CAPS quirk remove them from the capabilities.

This commit is based on the work done by Marcin Wojtas&lt;mw@semihalf.com&gt;

Fixes: 5491ce3f79ee ("mmc: sdhci-pxav3: add support for the Armada 38x SDHCI controller")
Cc: &lt;stable@vger.kernel.org&gt; # v3.15+
Signed-off-by: Gregory CLEMENT &lt;gregory.clement@free-electrons.com&gt;
Signed-off-by: Marcin Wojtas &lt;mw@semihalf.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
