On 21 October 2014 11:47, Varka Bhadram <varkabhadram@xxxxxxxxx> wrote: > On 10/21/2014 11:46 AM, Ankit Jindal wrote: >> >> On 21 October 2014 11:34, Varka Bhadram <varkabhadram@xxxxxxxxx> wrote: >>> >>> On 10/21/2014 11:26 AM, Ankit Jindal wrote: >>>> >>>> The Applied Micro X-Gene SOC has on-chip QMTM (Queue manager >>>> and Traffic manager) which is hardware based Queue or Ring >>>> manager. This QMTM device can be used in conjunction with >>>> other devices such as DMA Engine, Ethernet, Security Engine, >>>> etc to assign work based on queues or rings. >>>> >>>> This patch allows user space access to X-Gene QMTM device. >>>> >>>> Signed-off-by: Ankit Jindal <ankit.jindal@xxxxxxxxxx> >>>> Signed-off-by: Tushar Jagad <tushar.jagad@xxxxxxxxxx> >>> >>> >>> (...) >>> >>> >>>> + >>>> +static int qmtm_probe(struct platform_device *pdev) >>>> +{ >>>> + struct uio_info *info; >>>> + struct uio_qmtm_dev *qmtm_dev; >>>> + struct resource *csr; >>>> + struct resource *fabric; >>>> + struct resource qpool; >>>> + unsigned int num_queues; >>>> + unsigned int devid; >>>> + phandle qpool_phandle; >>>> + struct device_node *qpool_node; >>>> + int ret; >>>> + >>>> + qmtm_dev = devm_kzalloc(&pdev->dev, sizeof(struct uio_qmtm_dev), >>>> + GFP_KERNEL); >>>> + if (!qmtm_dev) >>>> + return -ENOMEM; >>>> + >>>> + qmtm_dev->info = devm_kzalloc(&pdev->dev, sizeof(*info), >>>> GFP_KERNEL); >>>> + if (!qmtm_dev->info) >>>> + return -ENOMEM; >>>> + >>>> + /* Power on qmtm in case its not done as part of boot-loader */ >>>> + qmtm_dev->qmtm_clk = devm_clk_get(&pdev->dev, NULL); >>>> + if (IS_ERR(qmtm_dev->qmtm_clk)) { >>>> + dev_err(&pdev->dev, "Failed to get clock\n"); >>>> + ret = PTR_ERR(qmtm_dev->qmtm_clk); >>>> + return ret; >>>> + } >>>> + >>>> + csr = platform_get_resource(pdev, IORESOURCE_MEM, 0); >>>> + if (!csr) { >>>> + ret = -ENODEV; >>>> + dev_err(&pdev->dev, "No QMTM CSR resource specified\n"); >>>> + goto out_err; >>>> + } >>>> + >>> >>> >>> This error check is not required. *csr* is checked in >>> devm_ioremap_resource(). >> >> I think its better to do sanity check before calling any function. > > > It will be the duplication of code for sanity check. This sanity check is > happening > with devm_ioremap_resource(). No need to check it explicitly. Okie, will remove it in next revision. > >>>> + if (!csr->start) { >>>> + ret = -EINVAL; >>>> + dev_err(&pdev->dev, "Invalid CSR resource\n"); >>>> + goto out_err; >>>> + } >>>> + >>>> + fabric = platform_get_resource(pdev, IORESOURCE_MEM, 1); >>>> + if (!fabric) { >>>> + ret = -ENODEV; >>>> + dev_err(&pdev->dev, "No QMTM Fabric resource >>>> specified\n"); >>>> + goto out_err; >>>> + } >>>> + >>> >>> >>> same >> >> We do not ioremap this address. > > > Ok.. > > -- > Regards, > Varka Bhadram. > Thanks, Ankit -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html