} else {
/* FIXME: fall back to PIO? */
}
+ dma_async_issue_pending(mcspi_dma->dma_tx);
}
- dma_async_issue_pending(mcspi_dma->dma_tx);
omap2_mcspi_set_dma_req(spi, 0, 1);
-
}
static unsigned
const u8 *tx;
struct dma_slave_config cfg;
enum dma_slave_buswidth width;
- unsigned es;
+ unsigned es;
u32 burst;
void __iomem *chstat_reg;
- void __iomem *irqstat_reg;
+ void __iomem *irqstat_reg;
int wait_res;
mcspi = spi_master_get_devdata(spi->master);
spi->controller_state = cs;
/* Link this to context save list */
list_add_tail(&cs->node, &ctx->cs);
+
+ if (gpio_is_valid(spi->cs_gpio)) {
+ ret = gpio_request(spi->cs_gpio, dev_name(&spi->dev));
+ if (ret) {
+ dev_err(&spi->dev, "failed to request gpio\n");
+ return ret;
+ }
+ gpio_direction_output(spi->cs_gpio,
+ !(spi->mode & SPI_CS_HIGH));
+ }
}
if (!mcspi_dma->dma_rx || !mcspi_dma->dma_tx) {
return ret;
}
- if (gpio_is_valid(spi->cs_gpio)) {
- ret = gpio_request(spi->cs_gpio, dev_name(&spi->dev));
- if (ret) {
- dev_err(&spi->dev, "failed to request gpio\n");
- return ret;
- }
- gpio_direction_output(spi->cs_gpio, !(spi->mode & SPI_CS_HIGH));
- }
-
ret = pm_runtime_get_sync(mcspi->dev);
if (ret < 0)
return ret;
.compatible = "ti,omap4-mcspi",
.data = &omap4_pdata,
},
- { },
+ { }
};
MODULE_DEVICE_TABLE(of, omap_mcspi_of_match);
struct omap2_mcspi *mcspi;
struct resource *r;
int status = 0, i;
- u32 regs_offset = 0;
+ u32 regs_offset;
static int bus_num = 1;
struct device_node *node = pdev->dev.of_node;
const struct of_device_id *match;
goto free_master;
}
- r->start += regs_offset;
- r->end += regs_offset;
- mcspi->phys = r->start;
-
mcspi->base = devm_ioremap_resource(&pdev->dev, r);
if (IS_ERR(mcspi->base)) {
status = PTR_ERR(mcspi->base);
goto free_master;
}
+ mcspi->phys = r->start + regs_offset;
+ mcspi->base += regs_offset;
mcspi->dev = &pdev->dev;