|
@@ -789,15 +789,35 @@ int __init da850_register_mmcsd1(struct davinci_mmc_config *config)
|
|
|
|
|
|
static struct resource da8xx_rproc_resources[] = {
|
|
|
{ /* DSP boot address */
|
|
|
+ .name = "host1cfg",
|
|
|
.start = DA8XX_SYSCFG0_BASE + DA8XX_HOST1CFG_REG,
|
|
|
.end = DA8XX_SYSCFG0_BASE + DA8XX_HOST1CFG_REG + 3,
|
|
|
.flags = IORESOURCE_MEM,
|
|
|
},
|
|
|
{ /* DSP interrupt registers */
|
|
|
+ .name = "chipsig",
|
|
|
.start = DA8XX_SYSCFG0_BASE + DA8XX_CHIPSIG_REG,
|
|
|
.end = DA8XX_SYSCFG0_BASE + DA8XX_CHIPSIG_REG + 7,
|
|
|
.flags = IORESOURCE_MEM,
|
|
|
},
|
|
|
+ { /* DSP L2 RAM */
|
|
|
+ .name = "l2sram",
|
|
|
+ .start = DA8XX_DSP_L2_RAM_BASE,
|
|
|
+ .end = DA8XX_DSP_L2_RAM_BASE + SZ_256K - 1,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+ },
|
|
|
+ { /* DSP L1P RAM */
|
|
|
+ .name = "l1pram",
|
|
|
+ .start = DA8XX_DSP_L1P_RAM_BASE,
|
|
|
+ .end = DA8XX_DSP_L1P_RAM_BASE + SZ_32K - 1,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+ },
|
|
|
+ { /* DSP L1D RAM */
|
|
|
+ .name = "l1dram",
|
|
|
+ .start = DA8XX_DSP_L1D_RAM_BASE,
|
|
|
+ .end = DA8XX_DSP_L1D_RAM_BASE + SZ_32K - 1,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+ },
|
|
|
{ /* dsp irq */
|
|
|
.start = IRQ_DA8XX_CHIPINT0,
|
|
|
.end = IRQ_DA8XX_CHIPINT0,
|
|
@@ -814,6 +834,8 @@ static struct platform_device da8xx_dsp = {
|
|
|
.resource = da8xx_rproc_resources,
|
|
|
};
|
|
|
|
|
|
+static bool rproc_mem_inited __initdata;
|
|
|
+
|
|
|
#if IS_ENABLED(CONFIG_DA8XX_REMOTEPROC)
|
|
|
|
|
|
static phys_addr_t rproc_base __initdata;
|
|
@@ -852,6 +874,8 @@ void __init da8xx_rproc_reserve_cma(void)
|
|
|
ret = dma_declare_contiguous(&da8xx_dsp.dev, rproc_size, rproc_base, 0);
|
|
|
if (ret)
|
|
|
pr_err("%s: dma_declare_contiguous failed %d\n", __func__, ret);
|
|
|
+ else
|
|
|
+ rproc_mem_inited = true;
|
|
|
}
|
|
|
|
|
|
#else
|
|
@@ -866,6 +890,12 @@ int __init da8xx_register_rproc(void)
|
|
|
{
|
|
|
int ret;
|
|
|
|
|
|
+ if (!rproc_mem_inited) {
|
|
|
+ pr_warn("%s: memory not reserved for DSP, not registering DSP device\n",
|
|
|
+ __func__);
|
|
|
+ return -ENOMEM;
|
|
|
+ }
|
|
|
+
|
|
|
ret = platform_device_register(&da8xx_dsp);
|
|
|
if (ret)
|
|
|
pr_err("%s: can't register DSP device: %d\n", __func__, ret);
|