linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: laurentiu.tudor@nxp.com
To: devicetree@vger.kernel.org, netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Cc: roy.pledge@nxp.com, madalin.bucur@nxp.com, davem@davemloft.net,
	shawnguo@kernel.org, leoyang.li@nxp.com, robin.murphy@arm.com,
	bharat.bhushan@nxp.com, Laurentiu Tudor <laurentiu.tudor@nxp.com>
Subject: [PATCH v2 05/22] soc/fsl/qbman: add APIs to retrieve the probing status
Date: Wed, 26 Sep 2018 16:22:30 +0300	[thread overview]
Message-ID: <20180926132247.10971-6-laurentiu.tudor@nxp.com> (raw)
In-Reply-To: <20180926132247.10971-1-laurentiu.tudor@nxp.com>

From: Laurentiu Tudor <laurentiu.tudor@nxp.com>

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>
---
 drivers/soc/fsl/qbman/bman_ccsr.c | 11 +++++++++++
 drivers/soc/fsl/qbman/qman_ccsr.c | 11 +++++++++++
 include/soc/fsl/bman.h            |  8 ++++++++
 include/soc/fsl/qman.h            |  8 ++++++++
 4 files changed, 38 insertions(+)

diff --git a/drivers/soc/fsl/qbman/bman_ccsr.c b/drivers/soc/fsl/qbman/bman_ccsr.c
index d180da003e4a..b209c79511bb 100644
--- a/drivers/soc/fsl/qbman/bman_ccsr.c
+++ b/drivers/soc/fsl/qbman/bman_ccsr.c
@@ -121,6 +121,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)
 {
@@ -167,6 +168,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;
@@ -177,6 +184,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",
@@ -266,6 +275,8 @@ static int fsl_bman_probe(struct platform_device *pdev)
 		return ret;
 	}
 
+	__bman_probed = 1;
+
 	return 0;
 };
 
diff --git a/drivers/soc/fsl/qbman/qman_ccsr.c b/drivers/soc/fsl/qbman/qman_ccsr.c
index 0cfe79f85a66..383a49dcce68 100644
--- a/drivers/soc/fsl/qbman/qman_ccsr.c
+++ b/drivers/soc/fsl/qbman/qman_ccsr.c
@@ -274,6 +274,7 @@ static const struct qman_error_info_mdata error_mdata[] = {
 static u32 __iomem *qm_ccsr_start;
 /* A SDQCR mask comprising all the available/visible pool channels */
 static u32 qm_pools_sdqcr;
+static int __qman_probed;
 
 static inline u32 qm_ccsr_in(u32 offset)
 {
@@ -689,6 +690,12 @@ static int qman_resource_init(struct device *dev)
 	return 0;
 }
 
+int qman_is_probed(void)
+{
+	return __qman_probed;
+}
+EXPORT_SYMBOL_GPL(qman_is_probed);
+
 static int fsl_qman_probe(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
@@ -699,6 +706,8 @@ static int fsl_qman_probe(struct platform_device *pdev)
 	u16 id;
 	u8 major, minor;
 
+	__qman_probed = -1;
+
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	if (!res) {
 		dev_err(dev, "Can't get %pOF property 'IORESOURCE_MEM'\n",
@@ -845,6 +854,8 @@ static int fsl_qman_probe(struct platform_device *pdev)
 	if (ret)
 		return ret;
 
+	__qman_probed = 1;
+
 	return 0;
 }
 
diff --git a/include/soc/fsl/bman.h b/include/soc/fsl/bman.h
index eaaf56df4086..5b99cb2ea5ef 100644
--- a/include/soc/fsl/bman.h
+++ b/include/soc/fsl/bman.h
@@ -126,4 +126,12 @@ int bman_release(struct bman_pool *pool, const struct bm_buffer *bufs, u8 num);
  */
 int bman_acquire(struct bman_pool *pool, struct bm_buffer *bufs, u8 num);
 
+/**
+ * bman_is_probed - Check if bman is probed
+ *
+ * Returns 1 if the bman driver successfully probed, -1 if the bman driver
+ * failed to probe or 0 if the bman driver did not probed yet.
+ */
+int bman_is_probed(void);
+
 #endif	/* __FSL_BMAN_H */
diff --git a/include/soc/fsl/qman.h b/include/soc/fsl/qman.h
index d4dfefdee6c1..597783b8a3a0 100644
--- a/include/soc/fsl/qman.h
+++ b/include/soc/fsl/qman.h
@@ -1186,4 +1186,12 @@ int qman_alloc_cgrid_range(u32 *result, u32 count);
  */
 int qman_release_cgrid(u32 id);
 
+/**
+ * qman_is_probed - Check if qman is probed
+ *
+ * Returns 1 if the qman driver successfully probed, -1 if the qman driver
+ * failed to probe or 0 if the qman driver did not probed yet.
+ */
+int qman_is_probed(void);
+
 #endif	/* __FSL_QMAN_H */
-- 
2.17.1


  parent reply	other threads:[~2018-09-26 13:25 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-26 13:22 [PATCH v2 00/22] SMMU enablement for NXP LS1043A and LS1046A laurentiu.tudor
2018-09-26 13:22 ` [PATCH v2 01/22] soc/fsl/qman: fixup liodns only on ppc targets laurentiu.tudor
2018-09-26 13:22 ` [PATCH v2 02/22] soc/fsl/bman: map FBPR area in the iommu laurentiu.tudor
2018-09-26 13:22 ` [PATCH v2 03/22] soc/fsl/qman: map FQD and PFDR areas " laurentiu.tudor
2018-09-26 13:22 ` [PATCH v2 04/22] soc/fsl/qman-portal: map CENA area " laurentiu.tudor
2018-09-26 13:22 ` laurentiu.tudor [this message]
2018-09-27 20:37   ` [PATCH v2 05/22] soc/fsl/qbman: add APIs to retrieve the probing status Li Yang
2018-09-26 13:22 ` [PATCH v2 06/22] soc/fsl/qman_portals: defer probe after qman's probe laurentiu.tudor
2018-09-27 20:37   ` Li Yang
2018-09-26 13:22 ` [PATCH v2 07/22] soc/fsl/bman_portals: defer probe after bman's probe laurentiu.tudor
2018-09-27 20:40   ` Li Yang
2018-09-26 13:22 ` [PATCH v2 08/22] soc/fsl/qbman_portals: add APIs to retrieve the probing status laurentiu.tudor
2018-09-27 20:03   ` Li Yang
2018-10-03 10:50     ` Laurentiu Tudor
2018-10-03 12:27       ` Robin Murphy
2018-09-26 13:22 ` [PATCH v2 09/22] fsl/fman: backup and restore ICID registers laurentiu.tudor
2018-09-26 13:22 ` [PATCH v2 10/22] fsl/fman: add API to get the device behind a fman port laurentiu.tudor
2018-09-26 13:22 ` [PATCH v2 11/22] dpaa_eth: defer probing after qbman laurentiu.tudor
2018-09-26 13:22 ` [PATCH v2 12/22] dpaa_eth: base dma mappings on the fman rx port laurentiu.tudor
2018-09-26 13:22 ` [PATCH v2 13/22] dpaa_eth: fix iova handling for contiguous frames laurentiu.tudor
2018-09-26 13:22 ` [PATCH v2 14/22] dpaa_eth: fix iova handling for sg frames laurentiu.tudor
2018-09-26 13:22 ` [PATCH v2 15/22] dpaa_eth: fix SG frame cleanup laurentiu.tudor
2018-09-26 13:22 ` [PATCH v2 16/22] arm64: dts: ls1046a: add smmu node laurentiu.tudor
2018-09-26 13:22 ` [PATCH v2 17/22] arm64: dts: ls1043a: " laurentiu.tudor
2018-09-26 13:22 ` [PATCH v2 18/22] arm64: dts: ls104xa: set mask to drop TBU ID from StreamID laurentiu.tudor
2018-09-26 13:22 ` [PATCH v2 19/22] arm64: dts: ls104x: add missing dma ranges property laurentiu.tudor
2018-09-26 13:22 ` [PATCH v2 20/22] arm64: dts: ls104x: add iommu-map to pci controllers laurentiu.tudor
2018-09-26 13:22 ` [PATCH v2 21/22] arm64: dts: ls104x: make dma-coherent global to the SoC laurentiu.tudor
2018-09-26 13:22 ` [PATCH v2 22/22] arm64: dts: ls104x: use a pseudo-bus to constrain usb dma size laurentiu.tudor
2018-09-27 13:39 ` [PATCH v2 00/22] SMMU enablement for NXP LS1043A and LS1046A Madalin-cristian Bucur

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180926132247.10971-6-laurentiu.tudor@nxp.com \
    --to=laurentiu.tudor@nxp.com \
    --cc=bharat.bhushan@nxp.com \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=leoyang.li@nxp.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=madalin.bucur@nxp.com \
    --cc=netdev@vger.kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=roy.pledge@nxp.com \
    --cc=shawnguo@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).