Commit 0d49fee9 authored by Vinod Koul's avatar Vinod Koul
Browse files

Merge branch 'topic/dw' into for-linus

parents 28ca3e85 49dfebeb
Loading
Loading
Loading
Loading
+1 −8
Original line number Original line Diff line number Diff line
@@ -603,18 +603,11 @@ static void __init genclk_init_parent(struct clk *clk)
	clk->parent = parent;
	clk->parent = parent;
}
}


static struct dw_dma_platform_data dw_dmac0_data = {
	.nr_channels	= 3,
	.block_size	= 4095U,
	.nr_masters	= 2,
	.data_width	= { 2, 2 },
};

static struct resource dw_dmac0_resource[] = {
static struct resource dw_dmac0_resource[] = {
	PBMEM(0xff200000),
	PBMEM(0xff200000),
	IRQ(2),
	IRQ(2),
};
};
DEFINE_DEV_DATA(dw_dmac, 0);
DEFINE_DEV(dw_dmac, 0);
DEV_CLK(hclk, dw_dmac0, hsb, 10);
DEV_CLK(hclk, dw_dmac0, hsb, 10);


/* --------------------------------------------------------------------
/* --------------------------------------------------------------------
+6 −6
Original line number Original line Diff line number Diff line
@@ -163,7 +163,7 @@ static void dwc_initialize(struct dw_dma_chan *dwc)


/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/


static inline unsigned int dwc_fast_fls(unsigned long long v)
static inline unsigned int dwc_fast_ffs(unsigned long long v)
{
{
	/*
	/*
	 * We can be a lot more clever here, but this should take care
	 * We can be a lot more clever here, but this should take care
@@ -712,7 +712,7 @@ dwc_prep_dma_memcpy(struct dma_chan *chan, dma_addr_t dest, dma_addr_t src,
			   dw->data_width[dwc->dst_master]);
			   dw->data_width[dwc->dst_master]);


	src_width = dst_width = min_t(unsigned int, data_width,
	src_width = dst_width = min_t(unsigned int, data_width,
				      dwc_fast_fls(src | dest | len));
				      dwc_fast_ffs(src | dest | len));


	ctllo = DWC_DEFAULT_CTLLO(chan)
	ctllo = DWC_DEFAULT_CTLLO(chan)
			| DWC_CTLL_DST_WIDTH(dst_width)
			| DWC_CTLL_DST_WIDTH(dst_width)
@@ -791,7 +791,7 @@ dwc_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl,


	switch (direction) {
	switch (direction) {
	case DMA_MEM_TO_DEV:
	case DMA_MEM_TO_DEV:
		reg_width = __fls(sconfig->dst_addr_width);
		reg_width = __ffs(sconfig->dst_addr_width);
		reg = sconfig->dst_addr;
		reg = sconfig->dst_addr;
		ctllo = (DWC_DEFAULT_CTLLO(chan)
		ctllo = (DWC_DEFAULT_CTLLO(chan)
				| DWC_CTLL_DST_WIDTH(reg_width)
				| DWC_CTLL_DST_WIDTH(reg_width)
@@ -811,7 +811,7 @@ dwc_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl,
			len = sg_dma_len(sg);
			len = sg_dma_len(sg);


			mem_width = min_t(unsigned int,
			mem_width = min_t(unsigned int,
					  data_width, dwc_fast_fls(mem | len));
					  data_width, dwc_fast_ffs(mem | len));


slave_sg_todev_fill_desc:
slave_sg_todev_fill_desc:
			desc = dwc_desc_get(dwc);
			desc = dwc_desc_get(dwc);
@@ -848,7 +848,7 @@ slave_sg_todev_fill_desc:
		}
		}
		break;
		break;
	case DMA_DEV_TO_MEM:
	case DMA_DEV_TO_MEM:
		reg_width = __fls(sconfig->src_addr_width);
		reg_width = __ffs(sconfig->src_addr_width);
		reg = sconfig->src_addr;
		reg = sconfig->src_addr;
		ctllo = (DWC_DEFAULT_CTLLO(chan)
		ctllo = (DWC_DEFAULT_CTLLO(chan)
				| DWC_CTLL_SRC_WIDTH(reg_width)
				| DWC_CTLL_SRC_WIDTH(reg_width)
@@ -868,7 +868,7 @@ slave_sg_todev_fill_desc:
			len = sg_dma_len(sg);
			len = sg_dma_len(sg);


			mem_width = min_t(unsigned int,
			mem_width = min_t(unsigned int,
					  data_width, dwc_fast_fls(mem | len));
					  data_width, dwc_fast_ffs(mem | len));


slave_sg_fromdev_fill_desc:
slave_sg_fromdev_fill_desc:
			desc = dwc_desc_get(dwc);
			desc = dwc_desc_get(dwc);
+7 −13
Original line number Original line Diff line number Diff line
@@ -15,12 +15,6 @@


#include "internal.h"
#include "internal.h"


static struct dw_dma_platform_data dw_pci_pdata = {
	.is_private = 1,
	.chan_allocation_order = CHAN_ALLOCATION_ASCENDING,
	.chan_priority = CHAN_PRIORITY_ASCENDING,
};

static int dw_pci_probe(struct pci_dev *pdev, const struct pci_device_id *pid)
static int dw_pci_probe(struct pci_dev *pdev, const struct pci_device_id *pid)
{
{
	struct dw_dma_chip *chip;
	struct dw_dma_chip *chip;
@@ -101,19 +95,19 @@ static const struct dev_pm_ops dw_pci_dev_pm_ops = {


static const struct pci_device_id dw_pci_id_table[] = {
static const struct pci_device_id dw_pci_id_table[] = {
	/* Medfield */
	/* Medfield */
	{ PCI_VDEVICE(INTEL, 0x0827), (kernel_ulong_t)&dw_pci_pdata },
	{ PCI_VDEVICE(INTEL, 0x0827) },
	{ PCI_VDEVICE(INTEL, 0x0830), (kernel_ulong_t)&dw_pci_pdata },
	{ PCI_VDEVICE(INTEL, 0x0830) },


	/* BayTrail */
	/* BayTrail */
	{ PCI_VDEVICE(INTEL, 0x0f06), (kernel_ulong_t)&dw_pci_pdata },
	{ PCI_VDEVICE(INTEL, 0x0f06) },
	{ PCI_VDEVICE(INTEL, 0x0f40), (kernel_ulong_t)&dw_pci_pdata },
	{ PCI_VDEVICE(INTEL, 0x0f40) },


	/* Braswell */
	/* Braswell */
	{ PCI_VDEVICE(INTEL, 0x2286), (kernel_ulong_t)&dw_pci_pdata },
	{ PCI_VDEVICE(INTEL, 0x2286) },
	{ PCI_VDEVICE(INTEL, 0x22c0), (kernel_ulong_t)&dw_pci_pdata },
	{ PCI_VDEVICE(INTEL, 0x22c0) },


	/* Haswell */
	/* Haswell */
	{ PCI_VDEVICE(INTEL, 0x9c60), (kernel_ulong_t)&dw_pci_pdata },
	{ PCI_VDEVICE(INTEL, 0x9c60) },
	{ }
	{ }
};
};
MODULE_DEVICE_TABLE(pci, dw_pci_id_table);
MODULE_DEVICE_TABLE(pci, dw_pci_id_table);