ASoC: fsi: tidyup sh_fsi_platform_info pointer
Current FSI driver is requesting sh_fsi_platform_info pointer from platform, and it didn't allowed NULL pointer. This patch fixes it. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
40f9118bd1
commit
943fdadc17
|
@ -1991,15 +1991,16 @@ static struct snd_soc_platform_driver fsi_soc_platform = {
|
||||||
/*
|
/*
|
||||||
* platform function
|
* platform function
|
||||||
*/
|
*/
|
||||||
static void fsi_handler_init(struct fsi_priv *fsi)
|
static void fsi_handler_init(struct fsi_priv *fsi,
|
||||||
|
struct sh_fsi_port_info *info)
|
||||||
{
|
{
|
||||||
fsi->playback.handler = &fsi_pio_push_handler; /* default PIO */
|
fsi->playback.handler = &fsi_pio_push_handler; /* default PIO */
|
||||||
fsi->playback.priv = fsi;
|
fsi->playback.priv = fsi;
|
||||||
fsi->capture.handler = &fsi_pio_pop_handler; /* default PIO */
|
fsi->capture.handler = &fsi_pio_pop_handler; /* default PIO */
|
||||||
fsi->capture.priv = fsi;
|
fsi->capture.priv = fsi;
|
||||||
|
|
||||||
if (fsi->info->tx_id) {
|
if (info->tx_id) {
|
||||||
fsi->playback.slave.shdma_slave.slave_id = fsi->info->tx_id;
|
fsi->playback.slave.shdma_slave.slave_id = info->tx_id;
|
||||||
fsi->playback.handler = &fsi_dma_push_handler;
|
fsi->playback.handler = &fsi_dma_push_handler;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2009,11 +2010,16 @@ static int fsi_probe(struct platform_device *pdev)
|
||||||
struct fsi_master *master;
|
struct fsi_master *master;
|
||||||
const struct platform_device_id *id_entry;
|
const struct platform_device_id *id_entry;
|
||||||
struct sh_fsi_platform_info *info = pdev->dev.platform_data;
|
struct sh_fsi_platform_info *info = pdev->dev.platform_data;
|
||||||
|
struct sh_fsi_port_info nul_info, *pinfo;
|
||||||
struct fsi_priv *fsi;
|
struct fsi_priv *fsi;
|
||||||
struct resource *res;
|
struct resource *res;
|
||||||
unsigned int irq;
|
unsigned int irq;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
nul_info.flags = 0;
|
||||||
|
nul_info.tx_id = 0;
|
||||||
|
nul_info.rx_id = 0;
|
||||||
|
|
||||||
id_entry = pdev->id_entry;
|
id_entry = pdev->id_entry;
|
||||||
if (!id_entry) {
|
if (!id_entry) {
|
||||||
dev_err(&pdev->dev, "unknown fsi device\n");
|
dev_err(&pdev->dev, "unknown fsi device\n");
|
||||||
|
@ -2046,11 +2052,12 @@ static int fsi_probe(struct platform_device *pdev)
|
||||||
spin_lock_init(&master->lock);
|
spin_lock_init(&master->lock);
|
||||||
|
|
||||||
/* FSI A setting */
|
/* FSI A setting */
|
||||||
|
pinfo = (info) ? &info->port_a : &nul_info;
|
||||||
fsi = &master->fsia;
|
fsi = &master->fsia;
|
||||||
fsi->base = master->base;
|
fsi->base = master->base;
|
||||||
fsi->master = master;
|
fsi->master = master;
|
||||||
fsi->info = &info->port_a;
|
fsi->info = pinfo;
|
||||||
fsi_handler_init(fsi);
|
fsi_handler_init(fsi, pinfo);
|
||||||
ret = fsi_stream_probe(fsi, &pdev->dev);
|
ret = fsi_stream_probe(fsi, &pdev->dev);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(&pdev->dev, "FSIA stream probe failed\n");
|
dev_err(&pdev->dev, "FSIA stream probe failed\n");
|
||||||
|
@ -2058,11 +2065,12 @@ static int fsi_probe(struct platform_device *pdev)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FSI B setting */
|
/* FSI B setting */
|
||||||
|
pinfo = (info) ? &info->port_b : &nul_info;
|
||||||
fsi = &master->fsib;
|
fsi = &master->fsib;
|
||||||
fsi->base = master->base + 0x40;
|
fsi->base = master->base + 0x40;
|
||||||
fsi->master = master;
|
fsi->master = master;
|
||||||
fsi->info = &info->port_b;
|
fsi->info = pinfo;
|
||||||
fsi_handler_init(fsi);
|
fsi_handler_init(fsi, pinfo);
|
||||||
ret = fsi_stream_probe(fsi, &pdev->dev);
|
ret = fsi_stream_probe(fsi, &pdev->dev);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(&pdev->dev, "FSIB stream probe failed\n");
|
dev_err(&pdev->dev, "FSIB stream probe failed\n");
|
||||||
|
|
Loading…
Reference in a new issue