<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/ata, branch v3.16-rc5</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>ahci_xgene: fix the dma state machine lockup for the IDENTIFY DEVICE PIO mode command.</title>
<updated>2014-07-08T15:46:05+00:00</updated>
<author>
<name>Suman Tripathi</name>
<email>stripathi@apm.com</email>
</author>
<published>2014-07-07T17:03:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=2a0bdff6b958d1b2523d2754b6cd5e0ea4053016'/>
<id>2a0bdff6b958d1b2523d2754b6cd5e0ea4053016</id>
<content type='text'>
This patch fixes the dma state machine lockup due to the processing
of IDENTIFY DEVICE PIO mode command. The X-Gene AHCI controller
has an errata in which it cannot clear the BSY bit after the PIO setup
FIS. The dma state machine enters CMFatalErrorUpdate state and locks
up. This patch also removes the dma restart workaround from the read_id
function as the read_id function is only called by libata layer for
ATA_INTERNAL commands. But for some cases eg: PORT MULTIPLIER
and udev, the framework will enumerate using SCSI commands and it will
not call read_id function.

Signed-off-by: Loc Ho &lt;lho@apm.com&gt;
Signed-off-by: Suman Tripathi &lt;stripathi@apm.com&gt;
Signed-off-by: Tejun Heo &lt;tj@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch fixes the dma state machine lockup due to the processing
of IDENTIFY DEVICE PIO mode command. The X-Gene AHCI controller
has an errata in which it cannot clear the BSY bit after the PIO setup
FIS. The dma state machine enters CMFatalErrorUpdate state and locks
up. This patch also removes the dma restart workaround from the read_id
function as the read_id function is only called by libata layer for
ATA_INTERNAL commands. But for some cases eg: PORT MULTIPLIER
and udev, the framework will enumerate using SCSI commands and it will
not call read_id function.

Signed-off-by: Loc Ho &lt;lho@apm.com&gt;
Signed-off-by: Suman Tripathi &lt;stripathi@apm.com&gt;
Signed-off-by: Tejun Heo &lt;tj@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>libahci: export ahci_qc_issue() and ahci_start_fix_rx()</title>
<updated>2014-07-08T15:46:05+00:00</updated>
<author>
<name>Suman Tripathi</name>
<email>stripathi@apm.com</email>
</author>
<published>2014-07-07T17:03:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=39e0ee9964b1245b79ec89f6b89d8ec4ef672524'/>
<id>39e0ee9964b1245b79ec89f6b89d8ec4ef672524</id>
<content type='text'>
The subsequent patch will make use of them.

Signed-off-by: Loc Ho &lt;lho@apm.com&gt;
Signed-off-by: Suman Tripathi &lt;stripathi@apm.com&gt;
Signed-off-by: Tejun Heo &lt;tj@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The subsequent patch will make use of them.

Signed-off-by: Loc Ho &lt;lho@apm.com&gt;
Signed-off-by: Suman Tripathi &lt;stripathi@apm.com&gt;
Signed-off-by: Tejun Heo &lt;tj@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ata: ahci_imx: warn when disabling ahci link</title>
<updated>2014-06-24T21:58:14+00:00</updated>
<author>
<name>Russell King</name>
<email>rmk+kernel@arm.linux.org.uk</email>
</author>
<published>2014-06-23T11:59:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=f118ae5901172dacc4f272acf5eccfba06e8d221'/>
<id>f118ae5901172dacc4f272acf5eccfba06e8d221</id>
<content type='text'>
When the AHCI link is disabled, it can't be re-enabled except by
resetting the entire SoC.  Rather than doing this silently print
some kernel messages to inform the user, along with how to avoid
this.

tj: Put a long printf format string on a single line.

Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Signed-off-by: Tejun Heo &lt;tj@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When the AHCI link is disabled, it can't be re-enabled except by
resetting the entire SoC.  Rather than doing this silently print
some kernel messages to inform the user, along with how to avoid
this.

tj: Put a long printf format string on a single line.

Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Signed-off-by: Tejun Heo &lt;tj@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ahci: disable ncq feature for hisilicon sata</title>
<updated>2014-06-24T20:54:23+00:00</updated>
<author>
<name>Kefeng Wang</name>
<email>kefeng.wang@linaro.org</email>
</author>
<published>2014-06-24T20:54:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=72cbaa3d2f563d7b48c9f8aef47ec9aa3a31adf2'/>
<id>72cbaa3d2f563d7b48c9f8aef47ec9aa3a31adf2</id>
<content type='text'>
NCQ feature is unsupported on hisilicon sata controller, so disable
it.  This version of IP is used by hip04 and hix5hd2 soc.

tj: "|=" was replaced with "=" for no reason.  Restored "|=".

Signed-off-by: Kefeng Wang &lt;kefeng.wang@linaro.org&gt;
Sigend-off-by: Tejun Heo &lt;tj@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
NCQ feature is unsupported on hisilicon sata controller, so disable
it.  This version of IP is used by hip04 and hix5hd2 soc.

tj: "|=" was replaced with "=" for no reason.  Restored "|=".

Signed-off-by: Kefeng Wang &lt;kefeng.wang@linaro.org&gt;
Sigend-off-by: Tejun Heo &lt;tj@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ahci: imx: manage only sata_ref_clk in imx_sata_enable[disable]</title>
<updated>2014-06-19T14:14:58+00:00</updated>
<author>
<name>Shawn Guo</name>
<email>shawn.guo@freescale.com</email>
</author>
<published>2014-05-28T15:05:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=e6dd42a917e62d916c6e513dbf87a4dec8cf3a1c'/>
<id>e6dd42a917e62d916c6e513dbf87a4dec8cf3a1c</id>
<content type='text'>
Doing suspend/resume on imx6q and imx53 boards with no SATA disk
attached will trigger the following warning.

------------[ cut here ]------------
WARNING: CPU: 0 PID: 661 at drivers/ata/libahci.c:224 ahci_enable_ahci+0x74/0x8)
Modules linked in:
CPU: 0 PID: 661 Comm: sh Tainted: G        W     3.15.0-rc5-next-20140521-000027
Backtrace:
[&lt;80011c90&gt;] (dump_backtrace) from [&lt;80011e2c&gt;] (show_stack+0x18/0x1c)
 r6:803a22f4 r5:00000000 r4:00000000 r3:00000000
[&lt;80011e14&gt;] (show_stack) from [&lt;80661e60&gt;] (dump_stack+0x88/0xa4)
[&lt;80661dd8&gt;] (dump_stack) from [&lt;80028fdc&gt;] (warn_slowpath_common+0x70/0x94)
 r5:00000009 r4:00000000
[&lt;80028f6c&gt;] (warn_slowpath_common) from [&lt;80029024&gt;] (warn_slowpath_null+0x24/)
 r8:808f68c4 r7:00000000 r6:00000000 r5:00000000 r4:e0810004
[&lt;80029000&gt;] (warn_slowpath_null) from [&lt;803a22f4&gt;] (ahci_enable_ahci+0x74/0x80)
[&lt;803a2280&gt;] (ahci_enable_ahci) from [&lt;803a2324&gt;] (ahci_reset_controller+0x24/0)
 r8:ddcd9410 r7:80351178 r6:ddcd9444 r5:dde8b850 r4:e0810000 r3:ddf35e90
[&lt;803a2300&gt;] (ahci_reset_controller) from [&lt;803a2c68&gt;] (ahci_platform_resume_ho)
 r7:80351178 r6:ddcd9444 r5:dde8b850 r4:ddcd9410
[&lt;803a2c30&gt;] (ahci_platform_resume_host) from [&lt;803a38f0&gt;] (imx_ahci_resume+0x2)
 r5:00000000 r4:ddcd9410
[&lt;803a38c4&gt;] (imx_ahci_resume) from [&lt;803511ac&gt;] (platform_pm_resume+0x34/0x54)
....

The reason is that the SATA controller has no working clock at this
point, and thus ahci_enable_ahci() fails to enable the controller.  In
case that there is no SATA disk attached, the imx_sata_disable() gets
called in ahci_imx_error_handler(), and both sata_clk and sata_ref_clk
will be disabled there.  Because all the imx_sata_enable() calls
afterward will return immediately due to imxpriv-&gt;no_device check, the
SATA controller working clock sata_clk will never get any chance to be
enabled again.

This is a regression caused by commit 90870d79d4f2 (ahci-imx: Port to
library-ised ahci_platform).  Before the commit, only sata_ref_clk is
managed by the driver in enable/disable function.  But after the commit,
all the clocks are enabled/disabled in a row by ahci platform helpers
ahci_platform_enable[disable]_clks.  Since ahb_clk is a bus clock which
does not have gate at all, and i.MX low-power hardware module already
manages sata_clk across suspend/resume cycle, the only clock that needs
to be managed by software is sata_ref_clk.

So instead of using ahci_platform_enable[disable]_clks to manage all
the clocks in a row from imx_sata_enable[disable], we should manage
only sata_ref_clk in there.

Reported-by: Fabio Estevam &lt;fabio.estevam@freescale.com&gt;
Fixes: 90870d79d4f2 (ahci-imx: Port to library-ised ahci_platform)
Signed-off-by: Shawn Guo &lt;shawn.guo@freescale.com&gt;
Acked-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Doing suspend/resume on imx6q and imx53 boards with no SATA disk
attached will trigger the following warning.

------------[ cut here ]------------
WARNING: CPU: 0 PID: 661 at drivers/ata/libahci.c:224 ahci_enable_ahci+0x74/0x8)
Modules linked in:
CPU: 0 PID: 661 Comm: sh Tainted: G        W     3.15.0-rc5-next-20140521-000027
Backtrace:
[&lt;80011c90&gt;] (dump_backtrace) from [&lt;80011e2c&gt;] (show_stack+0x18/0x1c)
 r6:803a22f4 r5:00000000 r4:00000000 r3:00000000
[&lt;80011e14&gt;] (show_stack) from [&lt;80661e60&gt;] (dump_stack+0x88/0xa4)
[&lt;80661dd8&gt;] (dump_stack) from [&lt;80028fdc&gt;] (warn_slowpath_common+0x70/0x94)
 r5:00000009 r4:00000000
[&lt;80028f6c&gt;] (warn_slowpath_common) from [&lt;80029024&gt;] (warn_slowpath_null+0x24/)
 r8:808f68c4 r7:00000000 r6:00000000 r5:00000000 r4:e0810004
[&lt;80029000&gt;] (warn_slowpath_null) from [&lt;803a22f4&gt;] (ahci_enable_ahci+0x74/0x80)
[&lt;803a2280&gt;] (ahci_enable_ahci) from [&lt;803a2324&gt;] (ahci_reset_controller+0x24/0)
 r8:ddcd9410 r7:80351178 r6:ddcd9444 r5:dde8b850 r4:e0810000 r3:ddf35e90
[&lt;803a2300&gt;] (ahci_reset_controller) from [&lt;803a2c68&gt;] (ahci_platform_resume_ho)
 r7:80351178 r6:ddcd9444 r5:dde8b850 r4:ddcd9410
[&lt;803a2c30&gt;] (ahci_platform_resume_host) from [&lt;803a38f0&gt;] (imx_ahci_resume+0x2)
 r5:00000000 r4:ddcd9410
[&lt;803a38c4&gt;] (imx_ahci_resume) from [&lt;803511ac&gt;] (platform_pm_resume+0x34/0x54)
....

The reason is that the SATA controller has no working clock at this
point, and thus ahci_enable_ahci() fails to enable the controller.  In
case that there is no SATA disk attached, the imx_sata_disable() gets
called in ahci_imx_error_handler(), and both sata_clk and sata_ref_clk
will be disabled there.  Because all the imx_sata_enable() calls
afterward will return immediately due to imxpriv-&gt;no_device check, the
SATA controller working clock sata_clk will never get any chance to be
enabled again.

This is a regression caused by commit 90870d79d4f2 (ahci-imx: Port to
library-ised ahci_platform).  Before the commit, only sata_ref_clk is
managed by the driver in enable/disable function.  But after the commit,
all the clocks are enabled/disabled in a row by ahci platform helpers
ahci_platform_enable[disable]_clks.  Since ahb_clk is a bus clock which
does not have gate at all, and i.MX low-power hardware module already
manages sata_clk across suspend/resume cycle, the only clock that needs
to be managed by software is sata_ref_clk.

So instead of using ahci_platform_enable[disable]_clks to manage all
the clocks in a row from imx_sata_enable[disable], we should manage
only sata_ref_clk in there.

Reported-by: Fabio Estevam &lt;fabio.estevam@freescale.com&gt;
Fixes: 90870d79d4f2 (ahci-imx: Port to library-ised ahci_platform)
Signed-off-by: Shawn Guo &lt;shawn.guo@freescale.com&gt;
Acked-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>libahci_platform: Fail when PHY required but PHY support disabled</title>
<updated>2014-06-17T16:10:59+00:00</updated>
<author>
<name>Mikko Perttunen</name>
<email>mperttunen@nvidia.com</email>
</author>
<published>2014-06-17T12:07:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=acbd573354bb7b7b7a3891018a39f4b3976b0c43'/>
<id>acbd573354bb7b7b7a3891018a39f4b3976b0c43</id>
<content type='text'>
ahci_platform_get_resources handles resource management for
platform AHCI drivers, including getting a possible PHY
from the device tree. Since not all drivers need a PHY, it
ignores -ENODEV and -ENOSYS from devm_get_phy. However, when
the PHY subsystem is mistakenly disabled, -ENOSYS can be
returned even when a PHY is needed.

This patch modifies the -ENOSYS case to check if a "phys"
device tree node exists. If it exists, then clearly the PHY
subsystem is mistakenly disabled and the driver cannot work,
ahci_platform_get_resources will fail and propagate the error.

Signed-off-by: Mikko Perttunen &lt;mperttunen@nvidia.com&gt;
Acked-by: Bartlomiej Zolnierkiewicz &lt;b.zolnierkie@samsung.com&gt;
Signed-off-by: Tejun Heo &lt;tj@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
ahci_platform_get_resources handles resource management for
platform AHCI drivers, including getting a possible PHY
from the device tree. Since not all drivers need a PHY, it
ignores -ENODEV and -ENOSYS from devm_get_phy. However, when
the PHY subsystem is mistakenly disabled, -ENOSYS can be
returned even when a PHY is needed.

This patch modifies the -ENOSYS case to check if a "phys"
device tree node exists. If it exists, then clearly the PHY
subsystem is mistakenly disabled and the driver cannot work,
ahci_platform_get_resources will fail and propagate the error.

Signed-off-by: Mikko Perttunen &lt;mperttunen@nvidia.com&gt;
Acked-by: Bartlomiej Zolnierkiewicz &lt;b.zolnierkie@samsung.com&gt;
Signed-off-by: Tejun Heo &lt;tj@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'for-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata</title>
<updated>2014-06-09T21:58:36+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2014-06-09T21:58:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=6ea4fa70e4af0da8b133b246458fb789d8cb3985'/>
<id>6ea4fa70e4af0da8b133b246458fb789d8cb3985</id>
<content type='text'>
Pull libata updates from Tejun Heo:
 "Nothing too interesting - another ahci platform driver variant,
  additional controller support, minor fixes and cleanups"

* 'for-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata:
  ahci: Add Device ID for HighPoint RocketRaid 642L
  ata: ep93xx: use dmaengine_prep_slave_sg api instead of internal callback
  ahci: add PCI ID for Marvell 88SE91A0 SATA Controller
  sata_fsl: remove check for CONFIG_MPC8315_DS
  ahci: add support for Hisilicon sata
  libahci_platform: add host_flags parameter in ahci_platform_init_host()
  ata: ahci: append new hflag AHCI_HFLAG_NO_FBS
  ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
  ata: ahci_mvebu: new driver for Marvell Armada 380 AHCI interfaces
  Documentation: dt-bindings: reformat and order list of ahci-platform compatibles
  libata-sff: remove dead code
  ata: SATL compliance for Inquiry Product Revision
  pata_octeon_cf: use devm_kzalloc() to allocate cf_port
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull libata updates from Tejun Heo:
 "Nothing too interesting - another ahci platform driver variant,
  additional controller support, minor fixes and cleanups"

* 'for-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata:
  ahci: Add Device ID for HighPoint RocketRaid 642L
  ata: ep93xx: use dmaengine_prep_slave_sg api instead of internal callback
  ahci: add PCI ID for Marvell 88SE91A0 SATA Controller
  sata_fsl: remove check for CONFIG_MPC8315_DS
  ahci: add support for Hisilicon sata
  libahci_platform: add host_flags parameter in ahci_platform_init_host()
  ata: ahci: append new hflag AHCI_HFLAG_NO_FBS
  ata: use CONFIG_PM_SLEEP instead of CONFIG_PM where applicable in host drivers
  ata: ahci_mvebu: new driver for Marvell Armada 380 AHCI interfaces
  Documentation: dt-bindings: reformat and order list of ahci-platform compatibles
  libata-sff: remove dead code
  ata: SATL compliance for Inquiry Product Revision
  pata_octeon_cf: use devm_kzalloc() to allocate cf_port
</pre>
</div>
</content>
</entry>
<entry>
<title>ahci: Add Device ID for HighPoint RocketRaid 642L</title>
<updated>2014-06-03T18:55:18+00:00</updated>
<author>
<name>Jérôme Carretero</name>
<email>cJ-ko@zougloub.eu</email>
</author>
<published>2014-06-03T18:56:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=d251836508fb26cd1a22b41381739835ee23728d'/>
<id>d251836508fb26cd1a22b41381739835ee23728d</id>
<content type='text'>
This device normally comes with a proprietary driver, using a web GUI
to configure RAID:
 http://www.highpoint-tech.com/USA_new/series_rr600-download.htm
But thankfully it also works out of the box with the AHCI driver,
being just a Marvell 88SE9235.

Devices 640L, 644L, 644LS should also be supported but not tested here.

Signed-off-by: Jérôme Carretero &lt;cJ-ko@zougloub.eu&gt;
Signed-off-by: Tejun Heo &lt;tj@kernel.org&gt;
Cc: stable@vger.kernel.org
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This device normally comes with a proprietary driver, using a web GUI
to configure RAID:
 http://www.highpoint-tech.com/USA_new/series_rr600-download.htm
But thankfully it also works out of the box with the AHCI driver,
being just a Marvell 88SE9235.

Devices 640L, 644L, 644LS should also be supported but not tested here.

Signed-off-by: Jérôme Carretero &lt;cJ-ko@zougloub.eu&gt;
Signed-off-by: Tejun Heo &lt;tj@kernel.org&gt;
Cc: stable@vger.kernel.org
</pre>
</div>
</content>
</entry>
<entry>
<title>libata: Blacklist queued trim for Crucial M500</title>
<updated>2014-06-02T23:59:25+00:00</updated>
<author>
<name>Martin K. Petersen</name>
<email>martin.petersen@oracle.com</email>
</author>
<published>2014-06-02T23:57:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=3b8d2676d15d6b2326757adb66b70a9cd6650373'/>
<id>3b8d2676d15d6b2326757adb66b70a9cd6650373</id>
<content type='text'>
Queued trim only works for some users with MU05 firmware.  Revert to
blacklisting all firmware versions.

Introduced by commit d121f7d0cbb8 ("libata: Update queued trim blacklist
for M5x0 drives") which this effectively reverts, while retaining the
blacklisting of M550.

See

    https://bugzilla.kernel.org/show_bug.cgi?id=71371

for reports of trouble with MU05 firmware.

Signed-off-by: Martin K. Petersen &lt;martin.petersen@oracle.com&gt;
Cc: Alan Cox &lt;alan@lxorguk.ukuu.org.uk&gt;
Cc: Tejun Heo &lt;tj@kernel.org&gt;
Cc: stable@vger.kernel.org
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Queued trim only works for some users with MU05 firmware.  Revert to
blacklisting all firmware versions.

Introduced by commit d121f7d0cbb8 ("libata: Update queued trim blacklist
for M5x0 drives") which this effectively reverts, while retaining the
blacklisting of M550.

See

    https://bugzilla.kernel.org/show_bug.cgi?id=71371

for reports of trouble with MU05 firmware.

Signed-off-by: Martin K. Petersen &lt;martin.petersen@oracle.com&gt;
Cc: Alan Cox &lt;alan@lxorguk.ukuu.org.uk&gt;
Cc: Tejun Heo &lt;tj@kernel.org&gt;
Cc: stable@vger.kernel.org
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ata: ep93xx: use dmaengine_prep_slave_sg api instead of internal callback</title>
<updated>2014-05-27T13:33:22+00:00</updated>
<author>
<name>Barry Song</name>
<email>Baohua.Song@csr.com</email>
</author>
<published>2014-05-25T09:19:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=69493e0b0a8b5d4a0df7df82bad49ad07ae6921d'/>
<id>69493e0b0a8b5d4a0df7df82bad49ad07ae6921d</id>
<content type='text'>
it is better to use generic api instead of calling an internal callback
like channel-&gt;device-&gt;device_prep_slave_sg().

Signed-off-by: Barry Song &lt;Baohua.Song@csr.com&gt;
Signed-off-by: Tejun Heo &lt;tj@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
it is better to use generic api instead of calling an internal callback
like channel-&gt;device-&gt;device_prep_slave_sg().

Signed-off-by: Barry Song &lt;Baohua.Song@csr.com&gt;
Signed-off-by: Tejun Heo &lt;tj@kernel.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
