All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <gregkh@linuxfoundation.org>
To: Nava kishore Manne <navam@xilinx.com>
Cc: "robh+dt@kernel.org" <robh+dt@kernel.org>,
	Michal Simek <michals@xilinx.com>,
	Derek Kiernan <dkiernan@xilinx.com>,
	Dragan Cvetic <draganc@xilinx.com>,
	"arnd@arndb.de" <arnd@arndb.de>, Rajan Vaja <RAJANV@xilinx.com>,
	Jolly Shah <JOLLYS@xilinx.com>,
	Tejas Patel <tejasp@xlnx.xilinx.com>,
	Amit Sunil Dhamne <amitsuni@xilinx.com>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"chinnikishore369@gmail.com" <chinnikishore369@gmail.com>,
	git <git@xilinx.com>
Subject: Re: [PATCH 2/5] misc: zynq: Add afi config driver
Date: Tue, 20 Apr 2021 17:27:16 +0200	[thread overview]
Message-ID: <YH7y1Em4bp505DaV@kroah.com> (raw)
In-Reply-To: <MWHPR02MB2623DED0785A05A9C55C20FBC2489@MWHPR02MB2623.namprd02.prod.outlook.com>

On Tue, Apr 20, 2021 at 01:36:51PM +0000, Nava kishore Manne wrote:
> Hi Greg,
> 
> 	Please find my response inline.
> 
> > -----Original Message-----
> > From: Greg KH <gregkh@linuxfoundation.org>
> > Sent: Tuesday, April 20, 2021 2:17 PM
> > To: Nava kishore Manne <navam@xilinx.com>
> > Cc: robh+dt@kernel.org; Michal Simek <michals@xilinx.com>; Derek Kiernan
> > <dkiernan@xilinx.com>; Dragan Cvetic <draganc@xilinx.com>;
> > arnd@arndb.de; Rajan Vaja <RAJANV@xilinx.com>; Jolly Shah
> > <JOLLYS@xilinx.com>; Tejas Patel <tejasp@xlnx.xilinx.com>; Amit Sunil
> > Dhamne <amitsuni@xilinx.com>; devicetree@vger.kernel.org; linux-arm-
> > kernel@lists.infradead.org; linux-kernel@vger.kernel.org;
> > chinnikishore369@gmail.com; git <git@xilinx.com>
> > Subject: Re: [PATCH 2/5] misc: zynq: Add afi config driver
> > 
> > On Tue, Apr 20, 2021 at 01:41:50PM +0530, Nava kishore Manne wrote:
> > > This patch adds zynq afi config driver. This is useful for the
> > > configuration of the PS-PL interface on zynq platform.
> > 
> > What is "PS-PL"?  Can you describe it better please?
> > 
> PS-PL interface is nothing but the interface between processing system(PS)  that contains arm cores and Programmable Logic(PL) i.e FPGA.
> Will update the description in v2.
> 
> > >
> > > Signed-off-by: Nava kishore Manne <nava.manne@xilinx.com>
> > > ---
> > >  drivers/misc/Kconfig    | 11 ++++++
> > >  drivers/misc/Makefile   |  1 +
> > >  drivers/misc/zynq-afi.c | 81
> > > +++++++++++++++++++++++++++++++++++++++++
> > >  3 files changed, 93 insertions(+)
> > >  create mode 100644 drivers/misc/zynq-afi.c
> > >
> > > diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig index
> > > f532c59bb59b..877b43b3377d 100644
> > > --- a/drivers/misc/Kconfig
> > > +++ b/drivers/misc/Kconfig
> > > @@ -445,6 +445,17 @@ config HISI_HIKEY_USB
> > >  	  switching between the dual-role USB-C port and the USB-A host
> > ports
> > >  	  using only one USB controller.
> > >
> > > +config ZYNQ_AFI
> > > +	tristate "Xilinx ZYNQ AFI support"
> > > +	help
> > > +	  Zynq AFI driver support for writing to the AFI registers
> > > +	  for configuring PS_PL Bus-width. Xilinx Zynq SoC connect
> > > +	  the PS to the programmable logic (PL) through the AXI port.
> > > +	  This AXI port helps to establish the data path between the
> > > +	  PS and PL.In-order to establish the proper communication path
> > > +	  between PS and PL, the AXI port data path should be configured
> > > +	  with the proper Bus-width values
> > > +
> > >  source "drivers/misc/c2port/Kconfig"
> > >  source "drivers/misc/eeprom/Kconfig"
> > >  source "drivers/misc/cb710/Kconfig"
> > > diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile index
> > > 99b6f15a3c70..e9b03843100f 100644
> > > --- a/drivers/misc/Makefile
> > > +++ b/drivers/misc/Makefile
> > > @@ -56,3 +56,4 @@ obj-$(CONFIG_HABANA_AI)		+=
> > habanalabs/
> > >  obj-$(CONFIG_UACCE)		+= uacce/
> > >  obj-$(CONFIG_XILINX_SDFEC)	+= xilinx_sdfec.o
> > >  obj-$(CONFIG_HISI_HIKEY_USB)	+= hisi_hikey_usb.o
> > > +obj-$(CONFIG_ZYNQ_AFI)		+= zynq-afi.o
> > > diff --git a/drivers/misc/zynq-afi.c b/drivers/misc/zynq-afi.c new
> > > file mode 100644 index 000000000000..04317d1bdb98
> > > --- /dev/null
> > > +++ b/drivers/misc/zynq-afi.c
> > > @@ -0,0 +1,81 @@
> > > +// SPDX-License-Identifier: GPL-2.0
> > > +/*
> > > + * Xilinx ZYNQ AFI driver.
> > > + * Copyright (c) 2018-2021 Xilinx Inc.
> > > + */
> > > +
> > > +#include <linux/err.h>
> > > +#include <linux/io.h>
> > > +#include <linux/module.h>
> > > +#include <linux/of.h>
> > > +#include <linux/platform_device.h>
> > > +
> > > +/* Registers and special values for doing register-based operations */
> > > +#define AFI_RDCHAN_CTRL_OFFSET	0x00
> > > +#define AFI_WRCHAN_CTRL_OFFSET	0x14
> > > +
> > > +#define AFI_BUSWIDTH_MASK	0x01
> > > +
> > > +/**
> > > + * struct afi_fpga - AFI register description
> > > + * @membase:	pointer to register struct
> > > + * @afi_width:	AFI bus width to be written
> > > + */
> > > +struct zynq_afi_fpga {
> > > +	void __iomem	*membase;
> > > +	u32		afi_width;
> > > +};
> > > +
> > > +static int zynq_afi_fpga_probe(struct platform_device *pdev) {
> > > +	struct zynq_afi_fpga *afi_fpga;
> > > +	struct resource *res;
> > > +	u32 reg_val;
> > > +	u32 val;
> > > +
> > > +	afi_fpga = devm_kzalloc(&pdev->dev, sizeof(*afi_fpga),
> > GFP_KERNEL);
> > > +	if (!afi_fpga)
> > > +		return -ENOMEM;
> > > +
> > > +	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> > > +	afi_fpga->membase = devm_ioremap_resource(&pdev->dev, res);
> > > +	if (IS_ERR(afi_fpga->membase))
> > > +		return PTR_ERR(afi_fpga->membase);
> > > +
> > > +	val = device_property_read_u32(&pdev->dev, "xlnx,afi-width",
> > > +				       &afi_fpga->afi_width);
> > > +	if (val) {
> > > +		dev_err(&pdev->dev, "failed to get the afi bus width\n");
> > > +		return -EINVAL;
> > > +	}
> > > +
> > > +	reg_val = readl(afi_fpga->membase + AFI_RDCHAN_CTRL_OFFSET);
> > > +	reg_val &= ~AFI_BUSWIDTH_MASK;
> > > +	writel(reg_val | afi_fpga->afi_width,
> > > +	       afi_fpga->membase + AFI_RDCHAN_CTRL_OFFSET);
> > > +	reg_val = readl(afi_fpga->membase + AFI_WRCHAN_CTRL_OFFSET);
> > > +	reg_val &= ~AFI_BUSWIDTH_MASK;
> > > +	writel(reg_val | afi_fpga->afi_width,
> > > +	       afi_fpga->membase + AFI_WRCHAN_CTRL_OFFSET);
> > > +
> > > +	return 0;
> > > +}
> > 
> > I do not understand, why is this driver needed at all?  Why can't you do the
> > above from userspace?
> > 
> > All this does is write some values to the hardware at probe time, who needs
> > this?
> 
> This driver will be used by the overlay framework for configuring the interface after programming the FPGA and before probing the drivers that are present in the PL.

What is a "overlay framework"?  And why does the kernel have to do this?
Why can't you write these hardware values from userspace?

confused,

greg k-h

WARNING: multiple messages have this Message-ID (diff)
From: Greg KH <gregkh@linuxfoundation.org>
To: Nava kishore Manne <navam@xilinx.com>
Cc: "robh+dt@kernel.org" <robh+dt@kernel.org>,
	Michal Simek <michals@xilinx.com>,
	Derek Kiernan <dkiernan@xilinx.com>,
	Dragan Cvetic <draganc@xilinx.com>,
	"arnd@arndb.de" <arnd@arndb.de>, Rajan Vaja <RAJANV@xilinx.com>,
	Jolly Shah <JOLLYS@xilinx.com>,
	Tejas Patel <tejasp@xlnx.xilinx.com>,
	Amit Sunil Dhamne <amitsuni@xilinx.com>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	 "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"chinnikishore369@gmail.com" <chinnikishore369@gmail.com>,
	git <git@xilinx.com>
Subject: Re: [PATCH 2/5] misc: zynq: Add afi config driver
Date: Tue, 20 Apr 2021 17:27:16 +0200	[thread overview]
Message-ID: <YH7y1Em4bp505DaV@kroah.com> (raw)
In-Reply-To: <MWHPR02MB2623DED0785A05A9C55C20FBC2489@MWHPR02MB2623.namprd02.prod.outlook.com>

On Tue, Apr 20, 2021 at 01:36:51PM +0000, Nava kishore Manne wrote:
> Hi Greg,
> 
> 	Please find my response inline.
> 
> > -----Original Message-----
> > From: Greg KH <gregkh@linuxfoundation.org>
> > Sent: Tuesday, April 20, 2021 2:17 PM
> > To: Nava kishore Manne <navam@xilinx.com>
> > Cc: robh+dt@kernel.org; Michal Simek <michals@xilinx.com>; Derek Kiernan
> > <dkiernan@xilinx.com>; Dragan Cvetic <draganc@xilinx.com>;
> > arnd@arndb.de; Rajan Vaja <RAJANV@xilinx.com>; Jolly Shah
> > <JOLLYS@xilinx.com>; Tejas Patel <tejasp@xlnx.xilinx.com>; Amit Sunil
> > Dhamne <amitsuni@xilinx.com>; devicetree@vger.kernel.org; linux-arm-
> > kernel@lists.infradead.org; linux-kernel@vger.kernel.org;
> > chinnikishore369@gmail.com; git <git@xilinx.com>
> > Subject: Re: [PATCH 2/5] misc: zynq: Add afi config driver
> > 
> > On Tue, Apr 20, 2021 at 01:41:50PM +0530, Nava kishore Manne wrote:
> > > This patch adds zynq afi config driver. This is useful for the
> > > configuration of the PS-PL interface on zynq platform.
> > 
> > What is "PS-PL"?  Can you describe it better please?
> > 
> PS-PL interface is nothing but the interface between processing system(PS)  that contains arm cores and Programmable Logic(PL) i.e FPGA.
> Will update the description in v2.
> 
> > >
> > > Signed-off-by: Nava kishore Manne <nava.manne@xilinx.com>
> > > ---
> > >  drivers/misc/Kconfig    | 11 ++++++
> > >  drivers/misc/Makefile   |  1 +
> > >  drivers/misc/zynq-afi.c | 81
> > > +++++++++++++++++++++++++++++++++++++++++
> > >  3 files changed, 93 insertions(+)
> > >  create mode 100644 drivers/misc/zynq-afi.c
> > >
> > > diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig index
> > > f532c59bb59b..877b43b3377d 100644
> > > --- a/drivers/misc/Kconfig
> > > +++ b/drivers/misc/Kconfig
> > > @@ -445,6 +445,17 @@ config HISI_HIKEY_USB
> > >  	  switching between the dual-role USB-C port and the USB-A host
> > ports
> > >  	  using only one USB controller.
> > >
> > > +config ZYNQ_AFI
> > > +	tristate "Xilinx ZYNQ AFI support"
> > > +	help
> > > +	  Zynq AFI driver support for writing to the AFI registers
> > > +	  for configuring PS_PL Bus-width. Xilinx Zynq SoC connect
> > > +	  the PS to the programmable logic (PL) through the AXI port.
> > > +	  This AXI port helps to establish the data path between the
> > > +	  PS and PL.In-order to establish the proper communication path
> > > +	  between PS and PL, the AXI port data path should be configured
> > > +	  with the proper Bus-width values
> > > +
> > >  source "drivers/misc/c2port/Kconfig"
> > >  source "drivers/misc/eeprom/Kconfig"
> > >  source "drivers/misc/cb710/Kconfig"
> > > diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile index
> > > 99b6f15a3c70..e9b03843100f 100644
> > > --- a/drivers/misc/Makefile
> > > +++ b/drivers/misc/Makefile
> > > @@ -56,3 +56,4 @@ obj-$(CONFIG_HABANA_AI)		+=
> > habanalabs/
> > >  obj-$(CONFIG_UACCE)		+= uacce/
> > >  obj-$(CONFIG_XILINX_SDFEC)	+= xilinx_sdfec.o
> > >  obj-$(CONFIG_HISI_HIKEY_USB)	+= hisi_hikey_usb.o
> > > +obj-$(CONFIG_ZYNQ_AFI)		+= zynq-afi.o
> > > diff --git a/drivers/misc/zynq-afi.c b/drivers/misc/zynq-afi.c new
> > > file mode 100644 index 000000000000..04317d1bdb98
> > > --- /dev/null
> > > +++ b/drivers/misc/zynq-afi.c
> > > @@ -0,0 +1,81 @@
> > > +// SPDX-License-Identifier: GPL-2.0
> > > +/*
> > > + * Xilinx ZYNQ AFI driver.
> > > + * Copyright (c) 2018-2021 Xilinx Inc.
> > > + */
> > > +
> > > +#include <linux/err.h>
> > > +#include <linux/io.h>
> > > +#include <linux/module.h>
> > > +#include <linux/of.h>
> > > +#include <linux/platform_device.h>
> > > +
> > > +/* Registers and special values for doing register-based operations */
> > > +#define AFI_RDCHAN_CTRL_OFFSET	0x00
> > > +#define AFI_WRCHAN_CTRL_OFFSET	0x14
> > > +
> > > +#define AFI_BUSWIDTH_MASK	0x01
> > > +
> > > +/**
> > > + * struct afi_fpga - AFI register description
> > > + * @membase:	pointer to register struct
> > > + * @afi_width:	AFI bus width to be written
> > > + */
> > > +struct zynq_afi_fpga {
> > > +	void __iomem	*membase;
> > > +	u32		afi_width;
> > > +};
> > > +
> > > +static int zynq_afi_fpga_probe(struct platform_device *pdev) {
> > > +	struct zynq_afi_fpga *afi_fpga;
> > > +	struct resource *res;
> > > +	u32 reg_val;
> > > +	u32 val;
> > > +
> > > +	afi_fpga = devm_kzalloc(&pdev->dev, sizeof(*afi_fpga),
> > GFP_KERNEL);
> > > +	if (!afi_fpga)
> > > +		return -ENOMEM;
> > > +
> > > +	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> > > +	afi_fpga->membase = devm_ioremap_resource(&pdev->dev, res);
> > > +	if (IS_ERR(afi_fpga->membase))
> > > +		return PTR_ERR(afi_fpga->membase);
> > > +
> > > +	val = device_property_read_u32(&pdev->dev, "xlnx,afi-width",
> > > +				       &afi_fpga->afi_width);
> > > +	if (val) {
> > > +		dev_err(&pdev->dev, "failed to get the afi bus width\n");
> > > +		return -EINVAL;
> > > +	}
> > > +
> > > +	reg_val = readl(afi_fpga->membase + AFI_RDCHAN_CTRL_OFFSET);
> > > +	reg_val &= ~AFI_BUSWIDTH_MASK;
> > > +	writel(reg_val | afi_fpga->afi_width,
> > > +	       afi_fpga->membase + AFI_RDCHAN_CTRL_OFFSET);
> > > +	reg_val = readl(afi_fpga->membase + AFI_WRCHAN_CTRL_OFFSET);
> > > +	reg_val &= ~AFI_BUSWIDTH_MASK;
> > > +	writel(reg_val | afi_fpga->afi_width,
> > > +	       afi_fpga->membase + AFI_WRCHAN_CTRL_OFFSET);
> > > +
> > > +	return 0;
> > > +}
> > 
> > I do not understand, why is this driver needed at all?  Why can't you do the
> > above from userspace?
> > 
> > All this does is write some values to the hardware at probe time, who needs
> > this?
> 
> This driver will be used by the overlay framework for configuring the interface after programming the FPGA and before probing the drivers that are present in the PL.

What is a "overlay framework"?  And why does the kernel have to do this?
Why can't you write these hardware values from userspace?

confused,

greg k-h

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2021-04-20 15:27 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-20  8:11 [PATCH 0/5]misc: Add afi config drivers support Nava kishore Manne
2021-04-20  8:11 ` Nava kishore Manne
2021-04-20  8:11 ` [PATCH 1/5] misc: doc: Add binding doc for the afi config driver Nava kishore Manne
2021-04-20  8:11   ` Nava kishore Manne
2021-04-20  8:11 ` [PATCH 2/5] misc: zynq: Add " Nava kishore Manne
2021-04-20  8:11   ` Nava kishore Manne
2021-04-20  8:46   ` Greg KH
2021-04-20  8:46     ` Greg KH
2021-04-20 13:36     ` Nava kishore Manne
2021-04-20 13:36       ` Nava kishore Manne
2021-04-20 15:27       ` Greg KH [this message]
2021-04-20 15:27         ` Greg KH
2021-04-29  6:23         ` Nava kishore Manne
2021-04-29  6:23           ` Nava kishore Manne
2021-04-20 13:03   ` kernel test robot
2021-04-20 18:17   ` Randy Dunlap
2021-04-20 18:17     ` Randy Dunlap
2021-04-20  8:11 ` [PATCH 3/5] firmware: xilinx: Add afi ioctl support Nava kishore Manne
2021-04-20  8:11   ` Nava kishore Manne
2021-04-20  8:11 ` [PATCH 4/5] misc: doc: Add binding doc for the zynqmp afi config driver Nava kishore Manne
2021-04-20  8:11   ` Nava kishore Manne
2021-04-20 13:58   ` Rob Herring
2021-04-20 13:58     ` Rob Herring
2021-04-29  4:56     ` Nava kishore Manne
2021-04-29  4:56       ` Nava kishore Manne
2021-04-20 14:15   ` Rob Herring
2021-04-20 14:15     ` Rob Herring
2021-04-29  5:39     ` Nava kishore Manne
2021-04-29  5:39       ` Nava kishore Manne
2021-04-20  8:11 ` [PATCH 5/5] misc: zynqmp: Add " Nava kishore Manne
2021-04-20  8:11   ` Nava kishore Manne
2021-04-20  8:47   ` Greg KH
2021-04-20  8:47     ` Greg KH
2021-04-20 13:45     ` Nava kishore Manne
2021-04-20 13:45       ` Nava kishore Manne
2021-04-20  8:51   ` Greg KH
2021-04-20  8:51     ` Greg KH
2021-04-20 13:47     ` Nava kishore Manne
2021-04-20 13:47       ` Nava kishore Manne
2021-04-20 15:28       ` Greg KH
2021-04-20 15:28         ` Greg KH
2021-04-29  6:01         ` Nava kishore Manne
2021-04-29  6:01           ` Nava kishore Manne
2021-04-20 18:15   ` Randy Dunlap
2021-04-20 18:15     ` Randy Dunlap

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=YH7y1Em4bp505DaV@kroah.com \
    --to=gregkh@linuxfoundation.org \
    --cc=JOLLYS@xilinx.com \
    --cc=RAJANV@xilinx.com \
    --cc=amitsuni@xilinx.com \
    --cc=arnd@arndb.de \
    --cc=chinnikishore369@gmail.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dkiernan@xilinx.com \
    --cc=draganc@xilinx.com \
    --cc=git@xilinx.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=michals@xilinx.com \
    --cc=navam@xilinx.com \
    --cc=robh+dt@kernel.org \
    --cc=tejasp@xlnx.xilinx.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.