Re: [PATCH] Revert "spi: omap2-mcspi: convert to module_platform_driver"

2012-09-20 Thread Jarkko Nikula
On Fri, 3 Aug 2012 12:45:53 +0300
Aaro Koskinen  wrote:

> So an altenative hack to fix this is to modify the board file
> (board-rx51-peripherals.c):
> 
>/* list all spi devices here */
>enum {
>   RX51_SPI_WL1251,
>   -   RX51_SPI_MIPID, /* LCD panel */
>   RX51_SPI_TSC2005,   /* Touch Controller */
>   +   RX51_SPI_MIPID, /* LCD panel */
>};
> 
> I guess the proper fix would be to modify SPI core so that it first does
> spi_setup for all the children/chip selects, before calling any of the
> probe functions of SPI devices? (Initializing the controller driver at
> subsys_initcall is one way to accomplish this.)
> 
As the N900 framebuffer still appears to be broken would it make sense to queue 
above change as a workaround for 3.5 and 3.6?

Aaro: For above change you could add my 'Tested-by: Jarkko Nikula 
'

-- 
Jarkko

--
Got visibility?
Most devs has no idea what their production app looks like.
Find out how fast your code is with AppDynamics Lite.
http://ad.doubleclick.net/clk;262219671;13503038;y?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


Re: [RFC PATCH 07/13] mmc: omap_hsmmc: dma_request_slave_channel() support for DT platforms

2012-09-20 Thread Tony Lindgren
* Matt Porter  [120920 07:43]:
> For platforms with DT populated, use dma_request_slave_channel()
> to acquire the DMA channel. For !DT platforms, we fall back to
> explicitly passing the omap_dma_filter_fn() to dma_request_channel().
> Once all platforms boot from DT, the dma_request_channel() path can
> be dropped.
> 
> Signed-off-by: Matt Porter 
> ---
>  drivers/mmc/host/omap_hsmmc.c |   16 ++--
>  1 file changed, 14 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
> index 3a09f93..c82d0ab 100644
> --- a/drivers/mmc/host/omap_hsmmc.c
> +++ b/drivers/mmc/host/omap_hsmmc.c
> @@ -1923,14 +1923,26 @@ static int __devinit omap_hsmmc_probe(struct 
> platform_device *pdev)
>   dma_cap_zero(mask);
>   dma_cap_set(DMA_SLAVE, mask);
>  
> - host->rx_chan = dma_request_channel(mask, omap_dma_filter_fn, &rx_req);
> + if (pdev->dev.of_node)
> + host->rx_chan =
> + dma_request_slave_channel(&pdev->dev, "rx");
> + else
> + host->rx_chan = dma_request_channel(mask,
> + omap_dma_filter_fn,
> + &rx_req);
>   if (!host->rx_chan) {
>   dev_err(mmc_dev(host->mmc), "unable to obtain RX DMA engine 
> channel %u\n", rx_req);
>   ret = -ENXIO;
>   goto err_irq;
>   }
>  
> - host->tx_chan = dma_request_channel(mask, omap_dma_filter_fn, &tx_req);
> + if (pdev->dev.of_node)
> + host->tx_chan =
> + dma_request_slave_channel(&pdev->dev, "tx");
> + else
> + host->tx_chan = dma_request_channel(mask,
> + omap_dma_filter_fn,
> + &tx_req);
>   if (!host->tx_chan) {
>   dev_err(mmc_dev(host->mmc), "unable to obtain TX DMA engine 
> channel %u\n", tx_req);
>   ret = -ENXIO;
> 

Here to the omap_hsmmc.c driver should not need to care about which
way to request the dma channels.

Regards,

Tony

--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


Re: [RFC PATCH 10/13] spi: omap2-mcspi: dma_request_slave_channel() support for DT platforms

2012-09-20 Thread Tony Lindgren
* Matt Porter  [120920 07:43]:
> For platforms with DT populated, use dma_request_slave_channel()
> to acquire the DMA channel. For !DT platforms, we fall back to
> explicitly passing the omap_dma_filter_fn() to dma_request_channel().
> Once all platforms boot from DT, the dma_request_channel() path can
> be dropped.
> 
> Signed-off-by: Matt Porter 
> ---
>  drivers/spi/spi-omap2-mcspi.c |   68 
> +
>  1 file changed, 48 insertions(+), 20 deletions(-)
> 
> diff --git a/drivers/spi/spi-omap2-mcspi.c b/drivers/spi/spi-omap2-mcspi.c
> index 9502566..1cf1072 100644
> --- a/drivers/spi/spi-omap2-mcspi.c
> +++ b/drivers/spi/spi-omap2-mcspi.c
> @@ -104,6 +104,9 @@ struct omap2_mcspi_dma {
>  
>   struct completion dma_tx_completion;
>   struct completion dma_rx_completion;
> +
> + char dma_rx_ch_name[14];
> + char dma_tx_ch_name[14];
>  };
>  
>  /* use PIO for small transfers, avoiding DMA setup/teardown overhead and
> @@ -798,14 +801,26 @@ static int omap2_mcspi_request_dma(struct spi_device 
> *spi)
>   dma_cap_zero(mask);
>   dma_cap_set(DMA_SLAVE, mask);
>   sig = mcspi_dma->dma_rx_sync_dev;
> - mcspi_dma->dma_rx = dma_request_channel(mask, omap_dma_filter_fn, &sig);
> + if (spi->dev.of_node)
> + mcspi_dma->dma_rx =
> + dma_request_slave_channel(&master->dev,
> +   mcspi_dma->dma_rx_ch_name);
> + else
> + mcspi_dma->dma_rx =
> + dma_request_channel(mask, omap_dma_filter_fn, &sig);
>   if (!mcspi_dma->dma_rx) {
>   dev_err(&spi->dev, "no RX DMA engine channel for McSPI\n");
>   return -EAGAIN;
>   }
>  

Hmm this does not look nice.. We should be able to somehow not to care about
the configuration at the mcspi driver level.

Regards,

Tony

--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


Re: [RFC PATCH 13/13] Documentation: add schedule for removing private EDMA API

2012-09-20 Thread Matt Porter
On Thu, Sep 20, 2012 at 04:58:58PM +0100, Mark Brown wrote:
> On Thu, Sep 20, 2012 at 10:43:46AM -0400, Matt Porter wrote:
> 
> >  Documentation/feature-removal-schedule.txt |   10 ++
> >  1 file changed, 10 insertions(+)
> 
> We decided at kernel summit that we'd stop bothering with this, it's
> mostly just bitrot and rarely read.  I guess the ASoC driver update
> isn't ready yet?

Ok, I'll drop this from the series.

No, I'm just getting real time now to work on the davinci-pcm dma engine
conversion and cyclic dma support for edma. That driver is somewhat of a
mess as it has some older platforms dependent on SRAM-based ping-pong
buffering and that all need to be sorted during this. It is the only
remaining blocker though for getting rid of the private API.

-Matt

--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


Re: [RFC PATCH 13/13] Documentation: add schedule for removing private EDMA API

2012-09-20 Thread Mark Brown
On Thu, Sep 20, 2012 at 10:43:46AM -0400, Matt Porter wrote:

>  Documentation/feature-removal-schedule.txt |   10 ++
>  1 file changed, 10 insertions(+)

We decided at kernel summit that we'd stop bothering with this, it's
mostly just bitrot and rarely read.  I guess the ASoC driver update
isn't ready yet?

--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


[RFC PATCH 13/13] Documentation: add schedule for removing private EDMA API

2012-09-20 Thread Matt Porter
The davinci-pcm driver is the last in-kernel user of the private
EDMA API. Once it has been converted to DMA Engine API the
private EDMA API functionality can be folded into the EDMA DMA
Engine driver and removed.

Signed-off-by: Matt Porter 
---
 Documentation/feature-removal-schedule.txt |   10 ++
 1 file changed, 10 insertions(+)

diff --git a/Documentation/feature-removal-schedule.txt 
b/Documentation/feature-removal-schedule.txt
index f4d8c71..64109e6 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -637,3 +637,13 @@ Who:   Russell King ,
Santosh Shilimkar 
 
 
+
+What:  EDMA private DMA implementation
+When:  2013
+Why:   We have a DMA engine implementation; all users should be updated
+   to use this rather than persisting with the old APIs.  The old APIs
+   block merging the old DMA engine implementation into the DMA
+   engine driver.
+Who:   Matt Porter 
+
+
-- 
1.7.9.5


--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


[RFC PATCH 11/13] spi: omap2-mcspi: add generic DMA request support to the DT binding

2012-09-20 Thread Matt Porter
The binding definition is based on the generic DMA request binding.

Signed-off-by: Matt Porter 
---
 Documentation/devicetree/bindings/spi/omap-spi.txt |   27 +++-
 1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/spi/omap-spi.txt 
b/Documentation/devicetree/bindings/spi/omap-spi.txt
index 81df374..11aff04 100644
--- a/Documentation/devicetree/bindings/spi/omap-spi.txt
+++ b/Documentation/devicetree/bindings/spi/omap-spi.txt
@@ -7,8 +7,18 @@ Required properties:
 - ti,spi-num-cs : Number of chipselect supported  by the instance.
 - ti,hwmods: Name of the hwmod associated to the McSPI
 
+Optional properties:
+- dmas: List of DMA controller phandle and DMA request ordered
+   pairs. One tx and one rx pair is required for each chip
+   select.
+- dma-names: List of DMA request names. These strings correspond
+   1:1 with the ordered pairs in dmas. The string naming is
+   to be "rxN" and "txN" for RX and TX requests,
+   respectively, where N equals the chip select number.
 
-Example:
+Examples:
+
+[hwmod populated DMA resources]
 
 mcspi1: mcspi@1 {
 #address-cells = <1>;
@@ -18,3 +28,18 @@ mcspi1: mcspi@1 {
 ti,spi-num-cs = <4>;
 };
 
+[generic DMA request binding]
+
+mcspi1: mcspi@1 {
+#address-cells = <1>;
+#size-cells = <0>;
+compatible = "ti,omap4-mcspi";
+ti,hwmods = "mcspi1";
+ti,spi-num-cs = <2>;
+dmas = <&edma 42
+   &edma 43
+   &edma 44
+   &edma 45>;
+dma-names = "tx0", "rx0", "tx1", "rx1";
+};
+
-- 
1.7.9.5


--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


[RFC PATCH 10/13] spi: omap2-mcspi: dma_request_slave_channel() support for DT platforms

2012-09-20 Thread Matt Porter
For platforms with DT populated, use dma_request_slave_channel()
to acquire the DMA channel. For !DT platforms, we fall back to
explicitly passing the omap_dma_filter_fn() to dma_request_channel().
Once all platforms boot from DT, the dma_request_channel() path can
be dropped.

Signed-off-by: Matt Porter 
---
 drivers/spi/spi-omap2-mcspi.c |   68 +
 1 file changed, 48 insertions(+), 20 deletions(-)

diff --git a/drivers/spi/spi-omap2-mcspi.c b/drivers/spi/spi-omap2-mcspi.c
index 9502566..1cf1072 100644
--- a/drivers/spi/spi-omap2-mcspi.c
+++ b/drivers/spi/spi-omap2-mcspi.c
@@ -104,6 +104,9 @@ struct omap2_mcspi_dma {
 
struct completion dma_tx_completion;
struct completion dma_rx_completion;
+
+   char dma_rx_ch_name[14];
+   char dma_tx_ch_name[14];
 };
 
 /* use PIO for small transfers, avoiding DMA setup/teardown overhead and
@@ -798,14 +801,26 @@ static int omap2_mcspi_request_dma(struct spi_device *spi)
dma_cap_zero(mask);
dma_cap_set(DMA_SLAVE, mask);
sig = mcspi_dma->dma_rx_sync_dev;
-   mcspi_dma->dma_rx = dma_request_channel(mask, omap_dma_filter_fn, &sig);
+   if (spi->dev.of_node)
+   mcspi_dma->dma_rx =
+   dma_request_slave_channel(&master->dev,
+ mcspi_dma->dma_rx_ch_name);
+   else
+   mcspi_dma->dma_rx =
+   dma_request_channel(mask, omap_dma_filter_fn, &sig);
if (!mcspi_dma->dma_rx) {
dev_err(&spi->dev, "no RX DMA engine channel for McSPI\n");
return -EAGAIN;
}
 
sig = mcspi_dma->dma_tx_sync_dev;
-   mcspi_dma->dma_tx = dma_request_channel(mask, omap_dma_filter_fn, &sig);
+   if (spi->dev.of_node)
+   mcspi_dma->dma_tx =
+   dma_request_slave_channel(&master->dev,
+ mcspi_dma->dma_tx_ch_name);
+   else
+   mcspi_dma->dma_tx =
+   dma_request_channel(mask, omap_dma_filter_fn, &sig);
if (!mcspi_dma->dma_tx) {
dev_err(&spi->dev, "no TX DMA engine channel for McSPI\n");
dma_release_channel(mcspi_dma->dma_rx);
@@ -1194,29 +1209,42 @@ static int __devinit omap2_mcspi_probe(struct 
platform_device *pdev)
goto free_master;
 
for (i = 0; i < master->num_chipselect; i++) {
-   char dma_ch_name[14];
+   char *dma_rx_ch_name = mcspi->dma_channels[i].dma_rx_ch_name;
+   char *dma_tx_ch_name = mcspi->dma_channels[i].dma_tx_ch_name;
struct resource *dma_res;
 
-   sprintf(dma_ch_name, "rx%d", i);
-   dma_res = platform_get_resource_byname(pdev, IORESOURCE_DMA,
-   dma_ch_name);
-   if (!dma_res) {
-   dev_dbg(&pdev->dev, "cannot get DMA RX channel\n");
-   status = -ENODEV;
-   break;
-   }
+   sprintf(dma_rx_ch_name, "rx%d", i);
+   if (!pdev->dev.of_node) {
+   dma_res =
+   platform_get_resource_byname(pdev,
+IORESOURCE_DMA,
+dma_rx_ch_name);
+   if (!dma_res) {
+   dev_dbg(&pdev->dev,
+   "cannot get DMA RX channel\n");
+   status = -ENODEV;
+   break;
+   }
 
-   mcspi->dma_channels[i].dma_rx_sync_dev = dma_res->start;
-   sprintf(dma_ch_name, "tx%d", i);
-   dma_res = platform_get_resource_byname(pdev, IORESOURCE_DMA,
-   dma_ch_name);
-   if (!dma_res) {
-   dev_dbg(&pdev->dev, "cannot get DMA TX channel\n");
-   status = -ENODEV;
-   break;
+   mcspi->dma_channels[i].dma_rx_sync_dev =
+   dma_res->start;
}
+   sprintf(dma_tx_ch_name, "tx%d", i);
+   if (!pdev->dev.of_node) {
+   dma_res =
+   platform_get_resource_byname(pdev,
+IORESOURCE_DMA,
+dma_tx_ch_name);
+   if (!dma_res) {
+   dev_dbg(&pdev->dev,
+   "cannot get DMA TX channel\n");
+   status = -ENODEV;
+   break;
+   }
 
-   mcspi->dma_channels[i].dma_tx_sync_d

[RFC PATCH 12/13] ARM: dts: add am33xx EDMA support

2012-09-20 Thread Matt Porter
Adds support for the defined EDMA, generic DMA controller, and
DMA request bindings for mmc and spi.

Signed-off-by: Matt Porter 
---
 arch/arm/boot/dts/am33xx.dtsi |   46 +
 1 file changed, 46 insertions(+)

diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
index e8033eb..c14a61d 100644
--- a/arch/arm/boot/dts/am33xx.dtsi
+++ b/arch/arm/boot/dts/am33xx.dtsi
@@ -86,6 +86,36 @@
reg = <0x4820 0x1000>;
};
 
+   edma: edma@4900 {
+   compatible = "ti,edma3";
+   ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2";
+   reg = <0x4900 0x1>;
+   interrupt-parent = <&intc>;
+   interrupts = <12 13 14>;
+   #dma-cells = <1>;
+   dma-channels = <64>;
+   ti,edma-regions = <4>;
+   ti,edma-slots = <256>;
+   ti,edma-reserved-channels = <0  2
+14 2
+26 6
+48 4
+56 8>;
+   ti,edma-reserved-slots = <0  2
+ 14 2
+ 26 6
+ 48 4
+ 56 8
+ 64 127>;
+   ti,edma-queue-tc-map = <0 0
+   1 1
+   2 2>;
+   ti,edma-queue-priority-map = <0 0
+ 1 1
+ 2 2>;
+   ti,edma-default-queue = <0>;
+   };
+
gpio0: gpio@44e07000 {
compatible = "ti,omap4-gpio";
ti,hwmods = "gpio1";
@@ -290,6 +320,9 @@
ti,hwmods = "mmc1";
ti,dual-volt;
ti,needs-special-reset;
+   dmas = <&edma 24
+   &edma 25>;
+   dma-names = "tx", "rx";
};
 
mmc2: mmc@481D8000 {
@@ -297,6 +330,9 @@
ti,hwmods = "mmc2";
ti,needs-special-reset;
status = "disabled";
+   dmas = <&edma 2
+   &edma 3>;
+   dma-names = "tx", "rx";
};
 
mmc3: mmc@4781 {
@@ -339,6 +375,11 @@
reg = <0x4803 0x400>;
interrupt-parent = <&intc>;
interrupt = <65>;
+   dmas = <&edma 16
+   &edma 17
+   &edma 18
+   &edma 19>;
+   dma-names = "tx0", "rx0", "tx1", "rx1";
ti,spi-num-cs = <2>;
ti,hwmods = "spi0";
status = "disabled";
@@ -351,6 +392,11 @@
reg = <0x481a 0x400>;
interrupt-parent = <&intc>;
interrupt = <125>;
+   dmas = <&edma 42
+   &edma 43
+   &edma 44
+   &edma 45>;
+   dma-names = "tx0", "rx0", "tx1", "rx1";
ti,spi-num-cs = <2>;
ti,hwmods = "spi1";
status = "disabled";
-- 
1.7.9.5


--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


[RFC PATCH 09/13] mmc: omap_hsmmc: add generic DMA request support to the DT binding

2012-09-20 Thread Matt Porter
The binding definition is based on the generic DMA request binding.

Signed-off-by: Matt Porter 
---
 .../devicetree/bindings/mmc/ti-omap-hsmmc.txt  |   25 +++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt 
b/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
index be76a23..d1b8932 100644
--- a/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
+++ b/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
@@ -19,8 +19,28 @@ ti,dual-volt: boolean, supports dual voltage cards
 "supply-name" examples are "vmmc", "vmmc_aux" etc
 ti,non-removable: non-removable slot (like eMMC)
 ti,needs-special-reset: Requires a special softreset sequence
+dmas: DMA controller phandle and DMA request value ordered pair
+One tx and one rx pair is required.
+dma-names: DMA request names. These strings correspond 1:1 with
+the ordered pairs in dmas. The RX request must be "rx" and the
+TX request must be "tx".
+
+Examples:
+
+[hwmod populated DMA resources]
+
+   mmc1: mmc@0x4809c000 {
+   compatible = "ti,omap4-hsmmc";
+   reg = <0x4809c000 0x400>;
+   ti,hwmods = "mmc1";
+   ti,dual-volt;
+   bus-width = <4>;
+   vmmc-supply = <&vmmc>; /* phandle to regulator node */
+   ti,non-removable;
+   };
+
+[generic DMA request binding]
 
-Example:
mmc1: mmc@0x4809c000 {
compatible = "ti,omap4-hsmmc";
reg = <0x4809c000 0x400>;
@@ -29,4 +49,7 @@ Example:
bus-width = <4>;
vmmc-supply = <&vmmc>; /* phandle to regulator node */
ti,non-removable;
+   dmas = <&edma 24
+   &edma 25>;
+   dma-names = "tx", "rx";
};
-- 
1.7.9.5


--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


[RFC PATCH 02/13] ARM: edma: remove unused transfer controller handlers

2012-09-20 Thread Matt Porter
Fix build on OMAP, the irqs are undefined on AM33xx.
These error interrupt handlers were hardcoded as disabled
so since they are unused code, simply remove them.

Signed-off-by: Matt Porter 
---
 arch/arm/common/edma.c |   37 -
 1 file changed, 37 deletions(-)

diff --git a/arch/arm/common/edma.c b/arch/arm/common/edma.c
index cecc50e..001d268 100644
--- a/arch/arm/common/edma.c
+++ b/arch/arm/common/edma.c
@@ -494,26 +494,6 @@ static irqreturn_t dma_ccerr_handler(int irq, void *data)
return IRQ_HANDLED;
 }
 
-/**
- *
- * Transfer controller error interrupt handlers
- *
- */
-
-#define tc_errs_handledfalse   /* disabled as long as they're NOPs */
-
-static irqreturn_t dma_tc0err_handler(int irq, void *data)
-{
-   dev_dbg(data, "dma_tc0err_handler\n");
-   return IRQ_HANDLED;
-}
-
-static irqreturn_t dma_tc1err_handler(int irq, void *data)
-{
-   dev_dbg(data, "dma_tc1err_handler\n");
-   return IRQ_HANDLED;
-}
-
 static int reserve_contiguous_slots(int ctlr, unsigned int id,
 unsigned int num_slots,
 unsigned int start_slot)
@@ -1538,23 +1518,6 @@ static int __init edma_probe(struct platform_device 
*pdev)
arch_num_cc++;
}
 
-   if (tc_errs_handled) {
-   status = request_irq(IRQ_TCERRINT0, dma_tc0err_handler, 0,
-   "edma_tc0", &pdev->dev);
-   if (status < 0) {
-   dev_dbg(&pdev->dev, "request_irq %d failed --> %d\n",
-   IRQ_TCERRINT0, status);
-   return status;
-   }
-   status = request_irq(IRQ_TCERRINT, dma_tc1err_handler, 0,
-   "edma_tc1", &pdev->dev);
-   if (status < 0) {
-   dev_dbg(&pdev->dev, "request_irq %d --> %d\n",
-   IRQ_TCERRINT, status);
-   return status;
-   }
-   }
-
return 0;
 
 fail:
-- 
1.7.9.5


--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


[RFC PATCH 08/13] mmc: omap_hsmmc: limit max_segs with the EDMA DMAC

2012-09-20 Thread Matt Porter
The EDMA DMAC has a hardware limitation that prevents supporting
scatter gather lists with any number of segments. Since the EDMA
DMA Engine driver sets the maximum segments to 16, we do the
same.

Note: this can be removed once the DMA Engine API supports an
API to query the DMAC's segment limitations.

Signed-off-by: Matt Porter 
---
 drivers/mmc/host/omap_hsmmc.c |   10 ++
 1 file changed, 10 insertions(+)

diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
index c82d0ab..61b54ee 100644
--- a/drivers/mmc/host/omap_hsmmc.c
+++ b/drivers/mmc/host/omap_hsmmc.c
@@ -1885,6 +1885,16 @@ static int __devinit omap_hsmmc_probe(struct 
platform_device *pdev)
 * as we want. */
mmc->max_segs = 1024;
 
+   /* Eventually we should get our max_segs limitation for EDMA by
+* querying the dmaengine API */
+   if (pdev->dev.of_node) {
+   struct device_node *parent = pdev->dev.of_node->parent;
+   struct device_node *node;
+   node = of_find_node_by_name(parent, "edma");
+   if (node)
+   mmc->max_segs = 16;
+   }
+
mmc->max_blk_size = 512;   /* Block Length at max can be 1024 */
mmc->max_blk_count = 0x;/* No. of Blocks is 16 bits */
mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count;
-- 
1.7.9.5


--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


[RFC PATCH 07/13] mmc: omap_hsmmc: dma_request_slave_channel() support for DT platforms

2012-09-20 Thread Matt Porter
For platforms with DT populated, use dma_request_slave_channel()
to acquire the DMA channel. For !DT platforms, we fall back to
explicitly passing the omap_dma_filter_fn() to dma_request_channel().
Once all platforms boot from DT, the dma_request_channel() path can
be dropped.

Signed-off-by: Matt Porter 
---
 drivers/mmc/host/omap_hsmmc.c |   16 ++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
index 3a09f93..c82d0ab 100644
--- a/drivers/mmc/host/omap_hsmmc.c
+++ b/drivers/mmc/host/omap_hsmmc.c
@@ -1923,14 +1923,26 @@ static int __devinit omap_hsmmc_probe(struct 
platform_device *pdev)
dma_cap_zero(mask);
dma_cap_set(DMA_SLAVE, mask);
 
-   host->rx_chan = dma_request_channel(mask, omap_dma_filter_fn, &rx_req);
+   if (pdev->dev.of_node)
+   host->rx_chan =
+   dma_request_slave_channel(&pdev->dev, "rx");
+   else
+   host->rx_chan = dma_request_channel(mask,
+   omap_dma_filter_fn,
+   &rx_req);
if (!host->rx_chan) {
dev_err(mmc_dev(host->mmc), "unable to obtain RX DMA engine 
channel %u\n", rx_req);
ret = -ENXIO;
goto err_irq;
}
 
-   host->tx_chan = dma_request_channel(mask, omap_dma_filter_fn, &tx_req);
+   if (pdev->dev.of_node)
+   host->tx_chan =
+   dma_request_slave_channel(&pdev->dev, "tx");
+   else
+   host->tx_chan = dma_request_channel(mask,
+   omap_dma_filter_fn,
+   &tx_req);
if (!host->tx_chan) {
dev_err(mmc_dev(host->mmc), "unable to obtain TX DMA engine 
channel %u\n", tx_req);
ret = -ENXIO;
-- 
1.7.9.5


--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


[RFC PATCH 06/13] ARM: omap: add hsmmc am33xx specific init

2012-09-20 Thread Matt Porter
AM33xx requires special handling in hsmmc initialization
platform glue.

Signed-off-by: Matt Porter 
---
 arch/arm/mach-omap2/hsmmc.c |7 ---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/arch/arm/mach-omap2/hsmmc.c b/arch/arm/mach-omap2/hsmmc.c
index a9675d8..679fb43 100644
--- a/arch/arm/mach-omap2/hsmmc.c
+++ b/arch/arm/mach-omap2/hsmmc.c
@@ -364,7 +364,7 @@ static int __init omap_hsmmc_pdata_init(struct 
omap2_hsmmc_info *c,
else
mmc->slots[0].ocr_mask = c->ocr_mask;
 
-   if (!soc_is_am35xx())
+   if (!soc_is_am35xx() && !soc_is_am33xx())
mmc->slots[0].features |= HSMMC_HAS_PBIAS;
 
if (cpu_is_omap44xx() && (omap_rev() > OMAP4430_REV_ES1_0))
@@ -387,7 +387,7 @@ static int __init omap_hsmmc_pdata_init(struct 
omap2_hsmmc_info *c,
}
}
 
-   if (soc_is_am35xx())
+   if (soc_is_am35xx() || soc_is_am33xx())
mmc->slots[0].set_power = nop_mmc_set_power;
 
/* OMAP3630 HSMMC1 supports only 4-bit */
@@ -488,7 +488,8 @@ static void __init omap_hsmmc_init_one(struct 
omap2_hsmmc_info *hsmmcinfo,
if (res < 0)
goto free_mmc;
 
-   omap_hsmmc_mux(mmc_data, (ctrl_nr - 1));
+   if (!soc_is_am33xx())
+   omap_hsmmc_mux(mmc_data, (ctrl_nr - 1));
 
name = "omap_hsmmc";
res = snprintf(oh_name, MAX_OMAP_MMC_HWMOD_NAME_LEN,
-- 
1.7.9.5


--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


[RFC PATCH 03/13] ARM: edma: add DT and runtime PM support for AM335x

2012-09-20 Thread Matt Porter
Adds support for parsing the TI EDMA DT data into the required
EDMA private API platform data.

Calls runtime PM API only in the DT case in order to unidle the
associated hwmods on AM335x.

Signed-off-by: Matt Porter 
---
 arch/arm/common/edma.c   |  252 --
 arch/arm/include/asm/mach/edma.h |8 +-
 2 files changed, 244 insertions(+), 16 deletions(-)

diff --git a/arch/arm/common/edma.c b/arch/arm/common/edma.c
index 001d268..f337f81 100644
--- a/arch/arm/common/edma.c
+++ b/arch/arm/common/edma.c
@@ -24,6 +24,13 @@
 #include 
 #include 
 #include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
 
 #include 
 
@@ -1366,30 +1373,236 @@ void edma_clear_event(unsigned channel)
 EXPORT_SYMBOL(edma_clear_event);
 
 /*---*/
+static int edma_of_read_u32_to_s8_array(const struct device_node *np,
+const char *propname, s8 *out_values,
+size_t sz)
+{
+   struct property *prop = of_find_property(np, propname, NULL);
+   const __be32 *val;
+
+   if (!prop)
+   return -EINVAL;
+   if (!prop->value)
+   return -ENODATA;
+   if ((sz * sizeof(u32)) > prop->length)
+   return -EOVERFLOW;
+
+   val = prop->value;
+
+   while (sz--)
+   *out_values++ = (s8)(be32_to_cpup(val++) & 0xff);
+
+   /* Terminate it */
+   *out_values++ = -1;
+   *out_values++ = -1;
+
+   return 0;
+}
+
+static int edma_of_read_u32_to_s16_array(const struct device_node *np,
+const char *propname, s16 *out_values,
+size_t sz)
+{
+   struct property *prop = of_find_property(np, propname, NULL);
+   const __be32 *val;
+
+   if (!prop)
+   return -EINVAL;
+   if (!prop->value)
+   return -ENODATA;
+   if ((sz * sizeof(u32)) > prop->length)
+   return -EOVERFLOW;
+
+   val = prop->value;
+
+   while (sz--)
+   *out_values++ = (s16)(be32_to_cpup(val++) & 0x);
+
+   /* Terminate it */
+   *out_values++ = -1;
+   *out_values++ = -1;
+
+   return 0;
+}
+
+static int edma_of_parse_dt(struct device *dev,
+   struct device_node *node,
+   struct edma_soc_info *pdata)
+{
+   int ret = 0;
+   u32 value;
+   struct property *prop;
+   size_t sz;
+   struct edma_rsv_info *rsv_info;
+   s16 (*rsv_chans)[2], (*rsv_slots)[2];
+   s8 (*queue_tc_map)[2], (*queue_priority_map)[2];
+
+   ret = of_property_read_u32(node, "dma-channels", &value);
+   if (ret < 0)
+   return ret;
+   pdata->n_channel = value;
+
+   ret = of_property_read_u32(node, "ti,edma-regions", &value);
+   if (ret < 0)
+   return ret;
+   pdata->n_region = value;
+
+   ret = of_property_read_u32(node, "ti,edma-slots", &value);
+   if (ret < 0)
+   return ret;
+   pdata->n_slot = value;
+
+   pdata->n_cc = 1;
+   /* This is unused */
+   pdata->n_tc = 3;
+
+   rsv_info =
+   devm_kzalloc(dev, sizeof(struct edma_rsv_info), GFP_KERNEL);
+   if (!rsv_info)
+   return -ENOMEM;
+   pdata->rsv = rsv_info;
+
+   /* Build the reserved channel/slots arrays */
+   prop = of_find_property(node, "ti,edma-reserved-channels", &sz);
+   if (!prop)
+   return -EINVAL;
+
+   rsv_chans =
+   devm_kzalloc(dev, sz/sizeof(s16) + 2*sizeof(s16), GFP_KERNEL);
+   if (!rsv_chans)
+   return -ENOMEM;
+   pdata->rsv->rsv_chans = rsv_chans;
+
+   ret = edma_of_read_u32_to_s16_array(node, "ti,edma-reserved-channels",
+   (s16 *)rsv_chans, sz/sizeof(u32));
+   if (ret < 0)
+   return ret;
+
+   prop = of_find_property(node, "ti,edma-reserved-slots", &sz);
+   if (!prop)
+   return -EINVAL;
+
+   rsv_slots = devm_kzalloc(dev,
+sz/sizeof(s16) + 2*sizeof(s16),
+GFP_KERNEL);
+   if (!rsv_slots)
+   return -ENOMEM;
+   pdata->rsv->rsv_slots = rsv_slots;
+
+   ret = edma_of_read_u32_to_s16_array(node,
+   "ti,edma-reserved-slots",
+   (s16 *)rsv_slots,
+   sz/sizeof(u32));
+   if (ret < 0)
+   return ret;
+
+   prop = of_find_property(node, "ti,edma-queue-tc-map", &sz);
+   if (!prop)
+   return -EINVAL;
+
+   queue_tc_map = devm_kzalloc(dev,
+   sz/sizeof(s8) + 2*sizeof(s8),
+   GFP_KERNEL);
+   if (!rsv_slots)
+ 

[RFC PATCH 05/13] dma: Add TI EDMA device tree binding

2012-09-20 Thread Matt Porter
The binding definition is based on the generic DMA controller
binding.

Signed-off-by: Matt Porter 
---
 Documentation/devicetree/bindings/dma/ti-edma.txt |   49 +
 1 file changed, 49 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/dma/ti-edma.txt

diff --git a/Documentation/devicetree/bindings/dma/ti-edma.txt 
b/Documentation/devicetree/bindings/dma/ti-edma.txt
new file mode 100644
index 000..06402eb
--- /dev/null
+++ b/Documentation/devicetree/bindings/dma/ti-edma.txt
@@ -0,0 +1,49 @@
+TI EDMA
+
+Required properties:
+- compatible : "ti,edma3"
+- ti,hwmods: Name of the hwmods associated to the EDMA
+- ti,edma-regions: Number of regions
+- ti,edma-slots: Number of slots
+- ti,edma-queue-tc-map: List of transfer control to queue mappings
+- ti,edma-queue-priority-map: List of queue priority mappings
+- ti,edma-default-queue: Default queue value
+
+Optional properties:
+- ti,edma-reserved-channels: List of reserved channel regions
+- ti,edma-reserved-slots: List of reserved slot regions
+
+Example:
+
+edma: edma@4900 {
+   #address-cells = <1>;
+   #size-cells = <0>;
+   reg = <0x4900 0x1>;
+   interrupt-parent = <&intc>;
+   interrupts = <12 13 14>;
+   compatible = "ti,edma3";
+   ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2";
+   #dma-cells = <1>;
+   dma-channels = <64>;
+   ti,edma-regions = <4>;
+   ti,edma-slots = <256>;
+   ti,edma-reserved-channels = <0  2
+14 2
+26 6
+48 4
+56 8>;
+   ti,edma-reserved-slots = <0  2
+ 14 2
+ 26 6
+ 48 4
+ 56 8
+ 64 127>;
+   ti,edma-queue-tc-map = <0 0
+   1 1
+   2 2>;
+   ti,edma-queue-priority-map = <0 0
+ 1 1
+ 2 2>;
+   ti,edma-default-queue = <0>;
+};
+
-- 
1.7.9.5


--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


[RFC PATCH 04/13] dmaengine: edma: enable build for AM335x

2012-09-20 Thread Matt Porter
Enable config option on OMAP and adjust the
private EDMA API header to match the move
of the private EDMA API out of mach-davinci/

Signed-off-by: Matt Porter 
---
 drivers/dma/Kconfig |2 +-
 drivers/dma/edma.c  |2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
index 0351719..24cd403 100644
--- a/drivers/dma/Kconfig
+++ b/drivers/dma/Kconfig
@@ -210,7 +210,7 @@ config SIRF_DMA
 
 config TI_EDMA
tristate "TI EDMA support"
-   depends on ARCH_DAVINCI
+   depends on ARCH_DAVINCI || ARCH_OMAP
select DMA_ENGINE
select DMA_VIRTUAL_CHANNELS
default n
diff --git a/drivers/dma/edma.c b/drivers/dma/edma.c
index fdcf079..9f8f2fa 100644
--- a/drivers/dma/edma.c
+++ b/drivers/dma/edma.c
@@ -24,7 +24,7 @@
 #include 
 #include 
 
-#include 
+#include 
 
 #include "dmaengine.h"
 #include "virt-dma.h"
-- 
1.7.9.5


--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


[RFC PATCH 00/13] DMA Engine support for AM33xx

2012-09-20 Thread Matt Porter
This series adds DMA Engine support for AM33xx, which uses
an EDMA DMAC. The EDMA DMAC has been previously supported by only
a private API implementation (much like the situation with OMAP
DMA) found on the DaVinci family of SoCs.

There are a mind-boggling number of dependencies for this series:

- Jon Hunter's OF DMA helpers series
  https://patchwork.kernel.org/patch/1461061/
  https://patchwork.kernel.org/patch/1461051/
- Patch to address OF DMA helpers naming issues:
  https://patchwork.kernel.org/patch/1477921/
- EDMA DMA Engine wrapper driver in linux-next
  c2dde5f8f2095d7c623ff3565c1462e190272273
- EDMA DMA Engine wrapper driver bug fix:
  https://patchwork.kernel.org/patch/1474411/  
- A huge number of patches in linux-next for AM33xx boot
  (too numerous to list)

The approach taken is similar to how OMAP DMA is being converted to
DMA Engine support. With the functional EDMA private API already
existing in mach-davinci/dma.c, we first move that to an ARM common
area so it can be shared. Adding DT and runtime PM support to the
private EDMA API implementation allows it to run on AM33xx. AM33xx
*only* boots using DT so we leverage Jon's generic DT DMA helpers to
register EDMA DMAC with the of_dma framework and then add support
for calling the dma_request_slave_channel() API to both the mmc
and spi drivers.

What works? Well, with this series we now have MMC and SPI support
on AM33xx. The only caveat for MMC is that the mmc3 controller has
its events on the crossbar and is not usable right now.

This is tested on BeagleBone with a SPI framebuffer driver and SD
card.

After this series, the plan is to convert the last in-tree user
of the private EDMA API (davinci-pcm/mcasp) and then eliminate
the private EDMA API by folding its functionality into
drivers/dma/edma.c.

TODO:
add AM33xx crossbar support to the private EDMA API
(any EDMA events on the crossbar are not supported)

Matt Porter (13):
  ARM: davinci: move private EDMA API to arm/common
  ARM: edma: remove unused transfer controller handlers
  ARM: edma: add DT and runtime PM support for AM335x
  dmaengine: edma: enable build for AM335x
  dma: Add TI EDMA device tree binding
  ARM: omap: add hsmmc am33xx specific init
  mmc: omap_hsmmc: dma_request_slave_channel() support for DT platforms
  mmc: omap_hsmmc: limit max_segs with the EDMA DMAC
  mmc: omap_hsmmc: add generic DMA request support to the DT binding
  spi: omap2-mcspi: dma_request_slave_channel() support for DT
platforms
  spi: omap2-mcspi: add generic DMA request support to the DT binding
  ARM: dts: add am33xx EDMA support
  Documentation: add schedule for removing private EDMA API

 Documentation/devicetree/bindings/dma/ti-edma.txt  |   49 +
 .../devicetree/bindings/mmc/ti-omap-hsmmc.txt  |   25 +-
 Documentation/devicetree/bindings/spi/omap-spi.txt |   27 +-
 Documentation/feature-removal-schedule.txt |   10 +
 arch/arm/Kconfig   |1 +
 arch/arm/boot/dts/am33xx.dtsi  |   46 +
 arch/arm/common/Kconfig|3 +
 arch/arm/common/Makefile   |1 +
 arch/arm/common/edma.c | 1779 
 arch/arm/include/asm/mach/edma.h   |  267 +++
 arch/arm/mach-davinci/Makefile |2 +-
 arch/arm/mach-davinci/devices.c|3 +-
 arch/arm/mach-davinci/dm355.c  |2 +-
 arch/arm/mach-davinci/dm365.c  |2 +-
 arch/arm/mach-davinci/dm644x.c |2 +-
 arch/arm/mach-davinci/dm646x.c |2 +-
 arch/arm/mach-davinci/dma.c| 1588 -
 arch/arm/mach-davinci/include/mach/asp.h   |2 +-
 arch/arm/mach-davinci/include/mach/da8xx.h |3 +-
 arch/arm/mach-davinci/include/mach/edma.h  |  267 ---
 arch/arm/mach-davinci/include/mach/spi.h   |2 +-
 arch/arm/mach-omap2/hsmmc.c|7 +-
 arch/arm/plat-omap/Kconfig |1 +
 drivers/dma/Kconfig|2 +-
 drivers/dma/edma.c |2 +-
 drivers/mmc/host/omap_hsmmc.c  |   26 +-
 drivers/spi/spi-omap2-mcspi.c  |   68 +-
 27 files changed, 2296 insertions(+), 1893 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/dma/ti-edma.txt
 create mode 100644 arch/arm/common/edma.c
 create mode 100644 arch/arm/include/asm/mach/edma.h
 delete mode 100644 arch/arm/mach-davinci/dma.c
 delete mode 100644 arch/arm/mach-davinci/include/mach/edma.h

-- 
1.7.9.5


--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lit

Profitez de votre ville et économisez jusqu'à 70%

2012-09-20 Thread Leader mondial du deal par Duano
Pour voir le message, veuillez utiliser un lecteur de mail compatible HTML

Lien miroir : 
http://m10-fr.com/mc10_m/YT0xMyZiPTIwNTA1JmM9NDgzNjEyJmQ9MjAxMi0wOS0yMCAwNDo1MDowMSZlPTEmaD0yMDUwNCZmPTIwNTA1Jmc9MjA1MDU=

Lien de désinscription : 
http://m10-fr.com/mc10_unsub/YT0xMyZiPTIwNTA1JmM9NDgzNjEyJmQ9MjAxMi0wOS0yMCAwNDo1MDowMSZlPTEmaD0yMDUwNCZmPTIwNTA1Jmc9MjA1MDU=


--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


-50 % sur vos 4 produits préférés

2012-09-20 Thread Le Club des Createurs de Beaute par Galeriedesmarques.fr
Pour voir le message, veuillez utiliser un lecteur de mail compatible HTML

Lien miroir : 
http://m10-fr.com/mc10_m/YT04JmI9MjAzNTYmYz0xOTYxNjQxJmQ9MjAxMi0wOS0yMCAwNzoyMDowMSZlPTEmaD0yMDM1NSZmPTIwMzU2Jmc9MjAzNTY=

Lien de désinscription : 
http://m10-fr.com/mc10_unsub/YT04JmI9MjAzNTYmYz0xOTYxNjQxJmQ9MjAxMi0wOS0yMCAwNzoyMDowMSZlPTEmaD0yMDM1NSZmPTIwMzU2Jmc9MjAzNTY=


--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


Découvrez 6 maxi bains douche aux senteurs gourmandes et fruitées

2012-09-20 Thread Yves Rocher par Duano
Pour voir le message, veuillez utiliser un lecteur de mail compatible HTML

Lien miroir : 
http://m10-fr.com/mc10_m/YT0xMyZiPTIwNDQ1JmM9NDgzNjEyJmQ9MjAxMi0wOS0yMCAwMDowMDowMSZlPTEmaD0yMDQ0NCZmPTIwNDQ1Jmc9MjA0NDU=

Lien de désinscription : 
http://m10-fr.com/mc10_unsub/YT0xMyZiPTIwNDQ1JmM9NDgzNjEyJmQ9MjAxMi0wOS0yMCAwMDowMDowMSZlPTEmaD0yMDQ0NCZmPTIwNDQ1Jmc9MjA0NDU=


--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general


Re: [PATCH] spi/pl022: adopt pinctrl support

2012-09-20 Thread Mark Brown
On Wed, Sep 19, 2012 at 02:23:46PM +0200, Linus Walleij wrote:
> From: Patrice Chotard 
> 
> Amend the PL022 pin controller to optionally take a pin control
> handle and set the state of the pins to "default" on boot and
> runtime resume, and to "sleep" at runtime suspend. This way we
> will dynamically save power on the SPI busses, for example some
> electronic designs may be able to ground the pins when unused
> instead of pull-up. Some pin controllers may want to set the
> pins as wake-up sources when sleeping.

Applied, thanks.

--
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
___
spi-devel-general mailing list
spi-devel-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/spi-devel-general