diff mbox series

iio: adc: xilinx: support all ARM platforms

Message ID 1559768858-1175-1-git-send-email-hancock@sedsystems.ca (mailing list archive)
State New, archived
Headers show
Series iio: adc: xilinx: support all ARM platforms | expand

Commit Message

Robert Hancock June 5, 2019, 9:07 p.m. UTC
Since the XADC logic can be used with standalone Xilinx FPGAs, this driver
can potentially be used with various ARM platforms, not just Zynq.
Change the Zynq dependency to ARM in the list of supported platforms
in the Kconfig dependencies for this driver.

Signed-off-by: Robert Hancock <hancock@sedsystems.ca>
---
 drivers/iio/adc/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Alexandru Ardelean June 6, 2019, 10:09 a.m. UTC | #1
On Wed, 2019-06-05 at 15:07 -0600, Robert Hancock wrote:
> [External]
> 
> 
> Since the XADC logic can be used with standalone Xilinx FPGAs, this driver
> can potentially be used with various ARM platforms, not just Zynq.
> Change the Zynq dependency to ARM in the list of supported platforms
> in the Kconfig dependencies for this driver.

To my knowledge, there are 3 FPGA platforms with ARM supported in Linux.
And symbols are ARCH_ZYNQ, ARCH_ZYNQMP & ARCH_SOCFPGA.
For these ARM + FPGA SoCs, it is usually preferred to list the supported/tested ARM + FPGA platforms in Kconfig.

I am curious: are you using something that isn't in the above list?

Thanks
Alex

> 
> Signed-off-by: Robert Hancock <hancock@sedsystems.ca>
> ---
>  drivers/iio/adc/Kconfig | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig
> index f96a770..93863bb 100644
> --- a/drivers/iio/adc/Kconfig
> +++ b/drivers/iio/adc/Kconfig
> @@ -1085,7 +1085,7 @@ config VIPERBOARD_ADC
> 
>  config XILINX_XADC
>         tristate "Xilinx XADC driver"
> -       depends on ARCH_ZYNQ || MICROBLAZE || COMPILE_TEST
> +       depends on ARM || MICROBLAZE || COMPILE_TEST
>         depends on HAS_IOMEM
>         select IIO_BUFFER
>         select IIO_TRIGGERED_BUFFER
> --
> 1.8.3.1
>
Robert Hancock June 6, 2019, 3:21 p.m. UTC | #2
On 2019-06-06 4:09 a.m., Ardelean, Alexandru wrote:
> On Wed, 2019-06-05 at 15:07 -0600, Robert Hancock wrote:
>> [External]
>>
>>
>> Since the XADC logic can be used with standalone Xilinx FPGAs, this driver
>> can potentially be used with various ARM platforms, not just Zynq.
>> Change the Zynq dependency to ARM in the list of supported platforms
>> in the Kconfig dependencies for this driver.
> 
> To my knowledge, there are 3 FPGA platforms with ARM supported in Linux.
> And symbols are ARCH_ZYNQ, ARCH_ZYNQMP & ARCH_SOCFPGA.
> For these ARM + FPGA SoCs, it is usually preferred to list the supported/tested ARM + FPGA platforms in Kconfig.
> 
> I am curious: are you using something that isn't in the above list?

Yes, we are using the XADC on a Kintex-7 FPGA through a PCIe to AXI
bridge using an iMX6D platform - not an integrated ARM+FPGA.

Using such an approach this driver could potentially be used on just
about any platform, but I didn't want to open it up too much for now in
case of some compile issues.

> 
> Thanks
> Alex
> 
>>
>> Signed-off-by: Robert Hancock <hancock@sedsystems.ca>
>> ---
>>  drivers/iio/adc/Kconfig | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig
>> index f96a770..93863bb 100644
>> --- a/drivers/iio/adc/Kconfig
>> +++ b/drivers/iio/adc/Kconfig
>> @@ -1085,7 +1085,7 @@ config VIPERBOARD_ADC
>>
>>  config XILINX_XADC
>>         tristate "Xilinx XADC driver"
>> -       depends on ARCH_ZYNQ || MICROBLAZE || COMPILE_TEST
>> +       depends on ARM || MICROBLAZE || COMPILE_TEST
>>         depends on HAS_IOMEM
>>         select IIO_BUFFER
>>         select IIO_TRIGGERED_BUFFER
>> --
>> 1.8.3.1
>>
Michal Simek June 7, 2019, 7:30 a.m. UTC | #3
On 06. 06. 19 17:21, Robert Hancock wrote:
> On 2019-06-06 4:09 a.m., Ardelean, Alexandru wrote:
>> On Wed, 2019-06-05 at 15:07 -0600, Robert Hancock wrote:
>>> [External]
>>>
>>>
>>> Since the XADC logic can be used with standalone Xilinx FPGAs, this driver
>>> can potentially be used with various ARM platforms, not just Zynq.
>>> Change the Zynq dependency to ARM in the list of supported platforms
>>> in the Kconfig dependencies for this driver.
>>
>> To my knowledge, there are 3 FPGA platforms with ARM supported in Linux.
>> And symbols are ARCH_ZYNQ, ARCH_ZYNQMP & ARCH_SOCFPGA.
>> For these ARM + FPGA SoCs, it is usually preferred to list the supported/tested ARM + FPGA platforms in Kconfig.
>>
>> I am curious: are you using something that isn't in the above list?
> 
> Yes, we are using the XADC on a Kintex-7 FPGA through a PCIe to AXI
> bridge using an iMX6D platform - not an integrated ARM+FPGA.
> 
> Using such an approach this driver could potentially be used on just
> about any platform, but I didn't want to open it up too much for now in
> case of some compile issues.

0day system should answer this for you.

M
Alexandru Ardelean June 7, 2019, 7:17 p.m. UTC | #4
On Fri, Jun 7, 2019 at 10:33 AM Michal Simek <michal.simek@xilinx.com> wrote:
>
> On 06. 06. 19 17:21, Robert Hancock wrote:
> > On 2019-06-06 4:09 a.m., Ardelean, Alexandru wrote:
> >> On Wed, 2019-06-05 at 15:07 -0600, Robert Hancock wrote:
> >>> [External]
> >>>
> >>>
> >>> Since the XADC logic can be used with standalone Xilinx FPGAs, this driver
> >>> can potentially be used with various ARM platforms, not just Zynq.
> >>> Change the Zynq dependency to ARM in the list of supported platforms
> >>> in the Kconfig dependencies for this driver.
> >>
> >> To my knowledge, there are 3 FPGA platforms with ARM supported in Linux.
> >> And symbols are ARCH_ZYNQ, ARCH_ZYNQMP & ARCH_SOCFPGA.
> >> For these ARM + FPGA SoCs, it is usually preferred to list the supported/tested ARM + FPGA platforms in Kconfig.
> >>
> >> I am curious: are you using something that isn't in the above list?
> >
> > Yes, we are using the XADC on a Kintex-7 FPGA through a PCIe to AXI
> > bridge using an iMX6D platform - not an integrated ARM+FPGA.
> >

In that case, it would be a bit more interesting to do a depends on
PCIE_XILINX, or whichever is the Kconfig symbol for the PCIe-to-AXI
bridge.

And there are some benefits to that, the major being that you can also
support other ARCHs as well (x86, ppc, mips, etc).

Naturally, if using a different PCIe-to-AXI bridge controller (other
than Xilinx's), it would be an idea to use that Kconfig symbol.

> > Using such an approach this driver could potentially be used on just
> > about any platform, but I didn't want to open it up too much for now in
> > case of some compile issues.
>
> 0day system should answer this for you.
>
> M
Robert Hancock June 7, 2019, 7:32 p.m. UTC | #5
On 2019-06-07 1:17 p.m., Alexandru Ardelean wrote:
> On Fri, Jun 7, 2019 at 10:33 AM Michal Simek <michal.simek@xilinx.com> wrote:
>>
>> On 06. 06. 19 17:21, Robert Hancock wrote:
>>> On 2019-06-06 4:09 a.m., Ardelean, Alexandru wrote:
>>>> On Wed, 2019-06-05 at 15:07 -0600, Robert Hancock wrote:
>>>>> [External]
>>>>>
>>>>>
>>>>> Since the XADC logic can be used with standalone Xilinx FPGAs, this driver
>>>>> can potentially be used with various ARM platforms, not just Zynq.
>>>>> Change the Zynq dependency to ARM in the list of supported platforms
>>>>> in the Kconfig dependencies for this driver.
>>>>
>>>> To my knowledge, there are 3 FPGA platforms with ARM supported in Linux.
>>>> And symbols are ARCH_ZYNQ, ARCH_ZYNQMP & ARCH_SOCFPGA.
>>>> For these ARM + FPGA SoCs, it is usually preferred to list the supported/tested ARM + FPGA platforms in Kconfig.
>>>>
>>>> I am curious: are you using something that isn't in the above list?
>>>
>>> Yes, we are using the XADC on a Kintex-7 FPGA through a PCIe to AXI
>>> bridge using an iMX6D platform - not an integrated ARM+FPGA.
>>>
> 
> In that case, it would be a bit more interesting to do a depends on
> PCIE_XILINX, or whichever is the Kconfig symbol for the PCIe-to-AXI
> bridge.
> 
> And there are some benefits to that, the major being that you can also
> support other ARCHs as well (x86, ppc, mips, etc).

There isn't a kernel driver for that PCIe-AXI bridge - it doesn't really
do much very interesting on its own, it just acts as a regular PCIe
endpoint and has build-time settings to map AXI memory to PCIe BARs and
host memory into AXI memory space. You have to build your own logic to
do things like map interrupts from the AXI side onto MSI interrupts from
the bridge.

It kind of seems like the easiest solution would be to just delete the
platform restriction entirely for this driver, as I really don't see
anything platform specific in there. Would anyone object to that?

> 
> Naturally, if using a different PCIe-to-AXI bridge controller (other
> than Xilinx's), it would be an idea to use that Kconfig symbol.
> 
>>> Using such an approach this driver could potentially be used on just
>>> about any platform, but I didn't want to open it up too much for now in
>>> case of some compile issues.
>>
>> 0day system should answer this for you.
>>
>> M
Jonathan Cameron June 8, 2019, noon UTC | #6
On Fri, 7 Jun 2019 13:32:11 -0600
Robert Hancock <hancock@sedsystems.ca> wrote:

> On 2019-06-07 1:17 p.m., Alexandru Ardelean wrote:
> > On Fri, Jun 7, 2019 at 10:33 AM Michal Simek <michal.simek@xilinx.com> wrote:  
> >>
> >> On 06. 06. 19 17:21, Robert Hancock wrote:  
> >>> On 2019-06-06 4:09 a.m., Ardelean, Alexandru wrote:  
> >>>> On Wed, 2019-06-05 at 15:07 -0600, Robert Hancock wrote:  
> >>>>> [External]
> >>>>>
> >>>>>
> >>>>> Since the XADC logic can be used with standalone Xilinx FPGAs, this driver
> >>>>> can potentially be used with various ARM platforms, not just Zynq.
> >>>>> Change the Zynq dependency to ARM in the list of supported platforms
> >>>>> in the Kconfig dependencies for this driver.  
> >>>>
> >>>> To my knowledge, there are 3 FPGA platforms with ARM supported in Linux.
> >>>> And symbols are ARCH_ZYNQ, ARCH_ZYNQMP & ARCH_SOCFPGA.
> >>>> For these ARM + FPGA SoCs, it is usually preferred to list the supported/tested ARM + FPGA platforms in Kconfig.
> >>>>
> >>>> I am curious: are you using something that isn't in the above list?  
> >>>
> >>> Yes, we are using the XADC on a Kintex-7 FPGA through a PCIe to AXI
> >>> bridge using an iMX6D platform - not an integrated ARM+FPGA.
> >>>  
> > 
> > In that case, it would be a bit more interesting to do a depends on
> > PCIE_XILINX, or whichever is the Kconfig symbol for the PCIe-to-AXI
> > bridge.
> > 
> > And there are some benefits to that, the major being that you can also
> > support other ARCHs as well (x86, ppc, mips, etc).  
> 
> There isn't a kernel driver for that PCIe-AXI bridge - it doesn't really
> do much very interesting on its own, it just acts as a regular PCIe
> endpoint and has build-time settings to map AXI memory to PCIe BARs and
> host memory into AXI memory space. You have to build your own logic to
> do things like map interrupts from the AXI side onto MSI interrupts from
> the bridge.
> 
> It kind of seems like the easiest solution would be to just delete the
> platform restriction entirely for this driver, as I really don't see
> anything platform specific in there. Would anyone object to that?

Sounds good to me.

Jonathan

> 
> > 
> > Naturally, if using a different PCIe-to-AXI bridge controller (other
> > than Xilinx's), it would be an idea to use that Kconfig symbol.
> >   
> >>> Using such an approach this driver could potentially be used on just
> >>> about any platform, but I didn't want to open it up too much for now in
> >>> case of some compile issues.  
> >>
> >> 0day system should answer this for you.
> >>
> >> M  
>
Alexandru Ardelean June 10, 2019, 7:34 a.m. UTC | #7
On Sat, 2019-06-08 at 13:00 +0100, Jonathan Cameron wrote:
> [External]
> 
> 
> On Fri, 7 Jun 2019 13:32:11 -0600
> Robert Hancock <hancock@sedsystems.ca> wrote:
> 
> > On 2019-06-07 1:17 p.m., Alexandru Ardelean wrote:
> > > On Fri, Jun 7, 2019 at 10:33 AM Michal Simek <michal.simek@xilinx.com> wrote:
> > > > On 06. 06. 19 17:21, Robert Hancock wrote:
> > > > > On 2019-06-06 4:09 a.m., Ardelean, Alexandru wrote:
> > > > > > On Wed, 2019-06-05 at 15:07 -0600, Robert Hancock wrote:
> > > > > > > [External]
> > > > > > > 
> > > > > > > 
> > > > > > > Since the XADC logic can be used with standalone Xilinx FPGAs, this driver
> > > > > > > can potentially be used with various ARM platforms, not just Zynq.
> > > > > > > Change the Zynq dependency to ARM in the list of supported platforms
> > > > > > > in the Kconfig dependencies for this driver.
> > > > > > 
> > > > > > To my knowledge, there are 3 FPGA platforms with ARM supported in Linux.
> > > > > > And symbols are ARCH_ZYNQ, ARCH_ZYNQMP & ARCH_SOCFPGA.
> > > > > > For these ARM + FPGA SoCs, it is usually preferred to list the supported/tested ARM + FPGA platforms in
> > > > > > Kconfig.
> > > > > > 
> > > > > > I am curious: are you using something that isn't in the above list?
> > > > > 
> > > > > Yes, we are using the XADC on a Kintex-7 FPGA through a PCIe to AXI
> > > > > bridge using an iMX6D platform - not an integrated ARM+FPGA.
> > > > > 
> > > 
> > > In that case, it would be a bit more interesting to do a depends on
> > > PCIE_XILINX, or whichever is the Kconfig symbol for the PCIe-to-AXI
> > > bridge.
> > > 
> > > And there are some benefits to that, the major being that you can also
> > > support other ARCHs as well (x86, ppc, mips, etc).
> > 
> > There isn't a kernel driver for that PCIe-AXI bridge - it doesn't really
> > do much very interesting on its own, it just acts as a regular PCIe
> > endpoint and has build-time settings to map AXI memory to PCIe BARs and
> > host memory into AXI memory space. You have to build your own logic to
> > do things like map interrupts from the AXI side onto MSI interrupts from
> > the bridge.
> > 
> > It kind of seems like the easiest solution would be to just delete the
> > platform restriction entirely for this driver, as I really don't see
> > anything platform specific in there. Would anyone object to that?
> 
> Sounds good to me.

Sounds fine to me as well.
I guess the initial intent (with ARCH_ depends) was to limit to what was tested, when the driver was written initially.

However, other users can try this on their own with different combinations (like the ones mentioned above).
Thanks for the info btw: it was informative (I learned something).

Thanks
Alex


> 
> Jonathan
> 
> > > Naturally, if using a different PCIe-to-AXI bridge controller (other
> > > than Xilinx's), it would be an idea to use that Kconfig symbol.
> > > 
> > > > > Using such an approach this driver could potentially be used on just
> > > > > about any platform, but I didn't want to open it up too much for now in
> > > > > case of some compile issues.
> > > > 
> > > > 0day system should answer this for you.
> > > > 
> > > > M
diff mbox series

Patch

diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig
index f96a770..93863bb 100644
--- a/drivers/iio/adc/Kconfig
+++ b/drivers/iio/adc/Kconfig
@@ -1085,7 +1085,7 @@  config VIPERBOARD_ADC
 
 config XILINX_XADC
 	tristate "Xilinx XADC driver"
-	depends on ARCH_ZYNQ || MICROBLAZE || COMPILE_TEST
+	depends on ARM || MICROBLAZE || COMPILE_TEST
 	depends on HAS_IOMEM
 	select IIO_BUFFER
 	select IIO_TRIGGERED_BUFFER