From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramon Fried Date: Tue, 2 Mar 2021 19:50:23 +0200 Subject: [PATCH 15/20] net: tsec: Support property from the subnode "queue-group" In-Reply-To: <20210302153451.19440-16-bmeng.cn@gmail.com> References: <20210302153451.19440-1-bmeng.cn@gmail.com> <20210302153451.19440-16-bmeng.cn@gmail.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Tue, Mar 2, 2021 at 5:36 PM Bin Meng wrote: > > At present the tsec driver uses a non-standard DT bindings to get > its base / size. The upstream Linux kernel seems to require > the base / size to be put under a subnode of the eTSEC node > with a name prefix "queue-group". This is not documented in the > kernel DT bindings, but it looks every dtsi file that contains the > eTSEC node was written like this. > > This commit updates the tsec driver to handle this case. > > Signed-off-by: Bin Meng > --- > > drivers/net/tsec.c | 26 ++++++++++++++++++++++++-- > 1 file changed, 24 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c > index 24f9962b82..5012cd29f1 100644 > --- a/drivers/net/tsec.c > +++ b/drivers/net/tsec.c > @@ -831,13 +831,35 @@ int tsec_probe(struct udevice *dev) > struct tsec_data *data; > const char *phy_mode; > fdt_addr_t reg; > - ofnode parent; > + ofnode parent, child; > int ret; > > data = (struct tsec_data *)dev_get_driver_data(dev); > > pdata->iobase = (phys_addr_t)dev_read_addr(dev); > - priv->regs = dev_remap_addr(dev); > + if (pdata->iobase != FDT_ADDR_T_NONE) { > + priv->regs = dev_remap_addr(dev); > + } else { > + ofnode_for_each_subnode(child, dev_ofnode(dev)) { > + if (!strncmp(ofnode_get_name(child), "queue-group", > + strlen("queue-group"))) { > + reg = ofnode_get_addr(child); > + if (reg == FDT_ADDR_T_NONE) { > + printf("No 'reg' property of \n"); > + return -ENOENT; > + } > + pdata->iobase = reg; > + priv->regs = map_physmem(pdata->iobase, 0, > + MAP_NOCACHE); > + break; > + } > + } > + > + if (!ofnode_valid(child)) { > + printf("No child node for ?\n"); > + return -ENOENT; > + } > + } > > ret = dev_read_phandle_with_args(dev, "tbi-handle", NULL, 0, 0, > &phandle_args); > -- > 2.25.1 > Reviewed-By: Ramon Fried