Skip to content

Commit 3e62273

Browse files
committed
soc: fsl: qbman: Remove RESERVEDMEM_OF_DECLARE usage
There is no reason to use RESERVEDMEM_OF_DECLARE() as the initialization hook just saves off the base address and size. Use of RESERVEDMEM_OF_DECLARE() is reserved for non-driver code and initialization which must be done early. For qbman, retrieving the address and size can be done in probe just as easily. Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Rob Herring <[email protected]>
1 parent 4bfb270 commit 3e62273

File tree

4 files changed

+38
-78
lines changed

4 files changed

+38
-78
lines changed

drivers/soc/fsl/qbman/bman_ccsr.c

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -144,17 +144,6 @@ static int bm_set_memory(u64 ba, u32 size)
144144
static dma_addr_t fbpr_a;
145145
static size_t fbpr_sz;
146146

147-
static int bman_fbpr(struct reserved_mem *rmem)
148-
{
149-
fbpr_a = rmem->base;
150-
fbpr_sz = rmem->size;
151-
152-
WARN_ON(!(fbpr_a && fbpr_sz));
153-
154-
return 0;
155-
}
156-
RESERVEDMEM_OF_DECLARE(bman_fbpr, "fsl,bman-fbpr", bman_fbpr);
157-
158147
static irqreturn_t bman_isr(int irq, void *ptr)
159148
{
160149
u32 isr_val, ier_val, ecsr_val, isr_mask, i;
@@ -242,17 +231,11 @@ static int fsl_bman_probe(struct platform_device *pdev)
242231
return -ENODEV;
243232
}
244233

245-
/*
246-
* If FBPR memory wasn't defined using the qbman compatible string
247-
* try using the of_reserved_mem_device method
248-
*/
249-
if (!fbpr_a) {
250-
ret = qbman_init_private_mem(dev, 0, &fbpr_a, &fbpr_sz);
251-
if (ret) {
252-
dev_err(dev, "qbman_init_private_mem() failed 0x%x\n",
253-
ret);
254-
return -ENODEV;
255-
}
234+
ret = qbman_init_private_mem(dev, 0, "fsl,bman-fbpr", &fbpr_a, &fbpr_sz);
235+
if (ret) {
236+
dev_err(dev, "qbman_init_private_mem() failed 0x%x\n",
237+
ret);
238+
return -ENODEV;
256239
}
257240

258241
dev_dbg(dev, "Allocated FBPR 0x%llx 0x%zx\n", fbpr_a, fbpr_sz);

drivers/soc/fsl/qbman/dpaa_sys.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@
3434
/*
3535
* Initialize a devices private memory region
3636
*/
37-
int qbman_init_private_mem(struct device *dev, int idx, dma_addr_t *addr,
38-
size_t *size)
37+
int qbman_init_private_mem(struct device *dev, int idx, const char *compat,
38+
dma_addr_t *addr, size_t *size)
3939
{
4040
struct device_node *mem_node;
4141
struct reserved_mem *rmem;
@@ -44,8 +44,12 @@ int qbman_init_private_mem(struct device *dev, int idx, dma_addr_t *addr,
4444

4545
mem_node = of_parse_phandle(dev->of_node, "memory-region", idx);
4646
if (!mem_node) {
47-
dev_err(dev, "No memory-region found for index %d\n", idx);
48-
return -ENODEV;
47+
mem_node = of_find_compatible_node(NULL, NULL, compat);
48+
if (!mem_node) {
49+
dev_err(dev, "No memory-region found for index %d or compatible '%s'\n",
50+
idx, compat);
51+
return -ENODEV;
52+
}
4953
}
5054

5155
rmem = of_reserved_mem_lookup(mem_node);

drivers/soc/fsl/qbman/dpaa_sys.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,8 @@ static inline u8 dpaa_cyc_diff(u8 ringsize, u8 first, u8 last)
101101
#define DPAA_GENALLOC_OFF 0x80000000
102102

103103
/* Initialize the devices private memory region */
104-
int qbman_init_private_mem(struct device *dev, int idx, dma_addr_t *addr,
105-
size_t *size);
104+
int qbman_init_private_mem(struct device *dev, int idx, const char *compat,
105+
dma_addr_t *addr, size_t *size);
106106

107107
/* memremap() attributes for different platforms */
108108
#ifdef CONFIG_PPC

drivers/soc/fsl/qbman/qman_ccsr.c

Lines changed: 23 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -468,28 +468,6 @@ static int zero_priv_mem(phys_addr_t addr, size_t sz)
468468

469469
return 0;
470470
}
471-
472-
static int qman_fqd(struct reserved_mem *rmem)
473-
{
474-
fqd_a = rmem->base;
475-
fqd_sz = rmem->size;
476-
477-
WARN_ON(!(fqd_a && fqd_sz));
478-
return 0;
479-
}
480-
RESERVEDMEM_OF_DECLARE(qman_fqd, "fsl,qman-fqd", qman_fqd);
481-
482-
static int qman_pfdr(struct reserved_mem *rmem)
483-
{
484-
pfdr_a = rmem->base;
485-
pfdr_sz = rmem->size;
486-
487-
WARN_ON(!(pfdr_a && pfdr_sz));
488-
489-
return 0;
490-
}
491-
RESERVEDMEM_OF_DECLARE(qman_pfdr, "fsl,qman-pfdr", qman_pfdr);
492-
493471
#endif
494472

495473
unsigned int qm_get_fqid_maxcnt(void)
@@ -796,39 +774,34 @@ static int fsl_qman_probe(struct platform_device *pdev)
796774
qm_channel_caam = QMAN_CHANNEL_CAAM_REV3;
797775
}
798776

799-
if (fqd_a) {
777+
/*
778+
* Order of memory regions is assumed as FQD followed by PFDR
779+
* in order to ensure allocations from the correct regions the
780+
* driver initializes then allocates each piece in order
781+
*/
782+
ret = qbman_init_private_mem(dev, 0, "fsl,qman-fqd", &fqd_a, &fqd_sz);
783+
if (ret) {
784+
dev_err(dev, "qbman_init_private_mem() for FQD failed 0x%x\n",
785+
ret);
786+
return -ENODEV;
787+
}
800788
#ifdef CONFIG_PPC
801-
/*
802-
* For PPC backward DT compatibility
803-
* FQD memory MUST be zero'd by software
804-
*/
805-
zero_priv_mem(fqd_a, fqd_sz);
789+
/*
790+
* For PPC backward DT compatibility
791+
* FQD memory MUST be zero'd by software
792+
*/
793+
zero_priv_mem(fqd_a, fqd_sz);
806794
#else
807-
WARN(1, "Unexpected architecture using non shared-dma-mem reservations");
795+
WARN(1, "Unexpected architecture using non shared-dma-mem reservations");
808796
#endif
809-
} else {
810-
/*
811-
* Order of memory regions is assumed as FQD followed by PFDR
812-
* in order to ensure allocations from the correct regions the
813-
* driver initializes then allocates each piece in order
814-
*/
815-
ret = qbman_init_private_mem(dev, 0, &fqd_a, &fqd_sz);
816-
if (ret) {
817-
dev_err(dev, "qbman_init_private_mem() for FQD failed 0x%x\n",
818-
ret);
819-
return -ENODEV;
820-
}
821-
}
822797
dev_dbg(dev, "Allocated FQD 0x%llx 0x%zx\n", fqd_a, fqd_sz);
823798

824-
if (!pfdr_a) {
825-
/* Setup PFDR memory */
826-
ret = qbman_init_private_mem(dev, 1, &pfdr_a, &pfdr_sz);
827-
if (ret) {
828-
dev_err(dev, "qbman_init_private_mem() for PFDR failed 0x%x\n",
829-
ret);
830-
return -ENODEV;
831-
}
799+
/* Setup PFDR memory */
800+
ret = qbman_init_private_mem(dev, 1, "fsl,qman-pfdr", &pfdr_a, &pfdr_sz);
801+
if (ret) {
802+
dev_err(dev, "qbman_init_private_mem() for PFDR failed 0x%x\n",
803+
ret);
804+
return -ENODEV;
832805
}
833806
dev_dbg(dev, "Allocated PFDR 0x%llx 0x%zx\n", pfdr_a, pfdr_sz);
834807

0 commit comments

Comments
 (0)