soc: fsl: qbman: add APIs to retrieve the probing status
Add a couple of new APIs to check the probing status of qman and bman: 'int bman_is_probed()' and 'int qman_is_probed()'. They return the following values. * 1 if qman/bman were probed correctly * 0 if qman/bman were not yet probed * -1 if probing of qman/bman failed Drivers that use qman/bman driver services are required to use these APIs before calling any functions exported by qman or bman drivers or otherwise they will crash the kernel. The APIs will be used in the following couple of qbman portal patches and later in the series in the dpaa1 ethernet driver. Signed-off-by: Laurentiu Tudor <laurentiu.tudor@nxp.com> Signed-off-by: Li Yang <leoyang.li@nxp.com>
This commit is contained in:
@@ -120,6 +120,7 @@ static void bm_set_memory(u64 ba, u32 size)
|
||||
*/
|
||||
static dma_addr_t fbpr_a;
|
||||
static size_t fbpr_sz;
|
||||
static int __bman_probed;
|
||||
|
||||
static int bman_fbpr(struct reserved_mem *rmem)
|
||||
{
|
||||
@@ -166,6 +167,12 @@ static irqreturn_t bman_isr(int irq, void *ptr)
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
int bman_is_probed(void)
|
||||
{
|
||||
return __bman_probed;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(bman_is_probed);
|
||||
|
||||
static int fsl_bman_probe(struct platform_device *pdev)
|
||||
{
|
||||
int ret, err_irq;
|
||||
@@ -175,6 +182,8 @@ static int fsl_bman_probe(struct platform_device *pdev)
|
||||
u16 id, bm_pool_cnt;
|
||||
u8 major, minor;
|
||||
|
||||
__bman_probed = -1;
|
||||
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
if (!res) {
|
||||
dev_err(dev, "Can't get %pOF property 'IORESOURCE_MEM'\n",
|
||||
@@ -255,6 +264,8 @@ static int fsl_bman_probe(struct platform_device *pdev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
__bman_probed = 1;
|
||||
|
||||
return 0;
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user