mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6: (127 commits) sh: update defconfigs. sh: Fix up the NUMA build for recent LMB changes. sh64: provide a stub per_cpu_trap_init() definition. sh: fix up CONFIG_KEXEC=n build. sh: fixup the docbook paths for clock framework shuffling. driver core: Early dev_name() depends on slab_is_available(). sh: simplify WARN usage in SH clock driver sh: Check return value of clk_get on ms7724 sh: Check return value of clk_get on ecovec24 sh: move sh clock-cpg.c contents to drivers/sh/clk-cpg.c sh: move sh clock.c contents to drivers/sh/clk. sh: move sh asm/clock.h contents to linux/sh_clk.h V2 sh: remove unused clock lookup sh: switch boards to clkdev sh: switch sh4-202 to clkdev sh: switch shx3 to clkdev sh: switch sh7757 to clkdev sh: switch sh7763 to clkdev sh: switch sh7780 to clkdev sh: switch sh7786 to clkdev ...
This commit is contained in:
commit
7c7cbaf5b8
172 changed files with 6107 additions and 3743 deletions
|
|
@ -26,8 +26,7 @@
|
|||
#include <linux/dma-mapping.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
|
||||
#include <asm/dmaengine.h>
|
||||
#include <linux/sh_dma.h>
|
||||
|
||||
#include "shdma.h"
|
||||
|
||||
|
|
@ -45,7 +44,7 @@ enum sh_dmae_desc_status {
|
|||
#define LOG2_DEFAULT_XFER_SIZE 2
|
||||
|
||||
/* A bitmask with bits enough for enum sh_dmae_slave_chan_id */
|
||||
static unsigned long sh_dmae_slave_used[BITS_TO_LONGS(SHDMA_SLAVE_NUMBER)];
|
||||
static unsigned long sh_dmae_slave_used[BITS_TO_LONGS(SH_DMA_SLAVE_NUMBER)];
|
||||
|
||||
static void sh_dmae_chan_ld_cleanup(struct sh_dmae_chan *sh_chan, bool all);
|
||||
|
||||
|
|
@ -190,7 +189,7 @@ static int dmae_set_dmars(struct sh_dmae_chan *sh_chan, u16 val)
|
|||
struct sh_dmae_device *shdev = container_of(sh_chan->common.device,
|
||||
struct sh_dmae_device, common);
|
||||
struct sh_dmae_pdata *pdata = shdev->pdata;
|
||||
struct sh_dmae_channel *chan_pdata = &pdata->channel[sh_chan->id];
|
||||
const struct sh_dmae_channel *chan_pdata = &pdata->channel[sh_chan->id];
|
||||
u16 __iomem *addr = shdev->dmars + chan_pdata->dmars / sizeof(u16);
|
||||
int shift = chan_pdata->dmars_bit;
|
||||
|
||||
|
|
@ -266,8 +265,8 @@ static struct sh_desc *sh_dmae_get_desc(struct sh_dmae_chan *sh_chan)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static struct sh_dmae_slave_config *sh_dmae_find_slave(
|
||||
struct sh_dmae_chan *sh_chan, enum sh_dmae_slave_chan_id slave_id)
|
||||
static const struct sh_dmae_slave_config *sh_dmae_find_slave(
|
||||
struct sh_dmae_chan *sh_chan, struct sh_dmae_slave *param)
|
||||
{
|
||||
struct dma_device *dma_dev = sh_chan->common.device;
|
||||
struct sh_dmae_device *shdev = container_of(dma_dev,
|
||||
|
|
@ -275,11 +274,11 @@ static struct sh_dmae_slave_config *sh_dmae_find_slave(
|
|||
struct sh_dmae_pdata *pdata = shdev->pdata;
|
||||
int i;
|
||||
|
||||
if ((unsigned)slave_id >= SHDMA_SLAVE_NUMBER)
|
||||
if (param->slave_id >= SH_DMA_SLAVE_NUMBER)
|
||||
return NULL;
|
||||
|
||||
for (i = 0; i < pdata->slave_num; i++)
|
||||
if (pdata->slave[i].slave_id == slave_id)
|
||||
if (pdata->slave[i].slave_id == param->slave_id)
|
||||
return pdata->slave + i;
|
||||
|
||||
return NULL;
|
||||
|
|
@ -299,9 +298,9 @@ static int sh_dmae_alloc_chan_resources(struct dma_chan *chan)
|
|||
* never runs concurrently with itself or free_chan_resources.
|
||||
*/
|
||||
if (param) {
|
||||
struct sh_dmae_slave_config *cfg;
|
||||
const struct sh_dmae_slave_config *cfg;
|
||||
|
||||
cfg = sh_dmae_find_slave(sh_chan, param->slave_id);
|
||||
cfg = sh_dmae_find_slave(sh_chan, param);
|
||||
if (!cfg) {
|
||||
ret = -EINVAL;
|
||||
goto efindslave;
|
||||
|
|
@ -574,12 +573,14 @@ static struct dma_async_tx_descriptor *sh_dmae_prep_slave_sg(
|
|||
{
|
||||
struct sh_dmae_slave *param;
|
||||
struct sh_dmae_chan *sh_chan;
|
||||
dma_addr_t slave_addr;
|
||||
|
||||
if (!chan)
|
||||
return NULL;
|
||||
|
||||
sh_chan = to_sh_chan(chan);
|
||||
param = chan->private;
|
||||
slave_addr = param->config->addr;
|
||||
|
||||
/* Someone calling slave DMA on a public channel? */
|
||||
if (!param || !sg_len) {
|
||||
|
|
@ -592,7 +593,7 @@ static struct dma_async_tx_descriptor *sh_dmae_prep_slave_sg(
|
|||
* if (param != NULL), this is a successfully requested slave channel,
|
||||
* therefore param->config != NULL too.
|
||||
*/
|
||||
return sh_dmae_prep_sg(sh_chan, sgl, sg_len, ¶m->config->addr,
|
||||
return sh_dmae_prep_sg(sh_chan, sgl, sg_len, &slave_addr,
|
||||
direction, flags);
|
||||
}
|
||||
|
||||
|
|
@ -873,7 +874,7 @@ static int __devinit sh_dmae_chan_probe(struct sh_dmae_device *shdev, int id,
|
|||
int irq, unsigned long flags)
|
||||
{
|
||||
int err;
|
||||
struct sh_dmae_channel *chan_pdata = &shdev->pdata->channel[id];
|
||||
const struct sh_dmae_channel *chan_pdata = &shdev->pdata->channel[id];
|
||||
struct platform_device *pdev = to_platform_device(shdev->common.dev);
|
||||
struct sh_dmae_chan *new_sh_chan;
|
||||
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@
|
|||
#include <linux/interrupt.h>
|
||||
#include <linux/list.h>
|
||||
|
||||
#include <asm/dmaengine.h>
|
||||
|
||||
#define SH_DMAC_MAX_CHANNELS 6
|
||||
#define SH_DMA_SLAVE_NUMBER 256
|
||||
#define SH_DMA_TCR_MAX 0x00FFFFFF /* 16MB */
|
||||
|
||||
struct device;
|
||||
|
|
|
|||
Loading…
Reference in a new issue