Re: [PATCH v14 0/9] LPC: legacy ISA I/O support

2018-02-22 Thread John Garry

On 21/02/2018 23:15, dann frazier wrote:

On Tue, Feb 20, 2018 at 01:48:31AM +0800, John Garry wrote:

This patchset supports the IPMI-bt device attached to the Low-Pin-Count
interface implemented on Hisilicon Hip06/Hip07 SoC.
---
| LPC host|
| |
---
 |
_V___LPC
  |   |
  V   V
 
 |  BT(ipmi)|
 



[...]


 .../arm/hisilicon/hisilicon-low-pin-count.txt  |  33 ++
 MAINTAINERS|   7 +
 drivers/acpi/pci_root.c|   8 +-
 drivers/acpi/scan.c|  14 +
 drivers/bus/Kconfig|   8 +
 drivers/bus/Makefile   |   1 +
 drivers/bus/hisi_lpc.c | 646 +
 drivers/of/address.c   |  96 ++-
 drivers/pci/pci.c  |  95 +--
 include/asm-generic/io.h   |   4 +-
 include/linux/logic_pio.h  | 131 +
 include/linux/pci.h|   3 +-
 lib/Kconfig|  15 +
 lib/Makefile   |   2 +
 lib/logic_pio.c| 285 +
 15 files changed, 1250 insertions(+), 98 deletions(-)
 create mode 100644 
Documentation/devicetree/bindings/arm/hisilicon/hisilicon-low-pin-count.txt
 create mode 100644 drivers/bus/hisi_lpc.c
 create mode 100644 include/linux/logic_pio.h
 create mode 100644 lib/logic_pio.c


Tested this version on a D05 board, no problems. So, for the series:

Tested-by: dann frazier 

.


Thanks Dann.

I think I still need 1/2 more series review/test/sob tags to get me 
across the line.


John








Re: [PATCH v14 0/9] LPC: legacy ISA I/O support

2018-02-22 Thread John Garry

On 21/02/2018 23:15, dann frazier wrote:

On Tue, Feb 20, 2018 at 01:48:31AM +0800, John Garry wrote:

This patchset supports the IPMI-bt device attached to the Low-Pin-Count
interface implemented on Hisilicon Hip06/Hip07 SoC.
---
| LPC host|
| |
---
 |
_V___LPC
  |   |
  V   V
 
 |  BT(ipmi)|
 



[...]


 .../arm/hisilicon/hisilicon-low-pin-count.txt  |  33 ++
 MAINTAINERS|   7 +
 drivers/acpi/pci_root.c|   8 +-
 drivers/acpi/scan.c|  14 +
 drivers/bus/Kconfig|   8 +
 drivers/bus/Makefile   |   1 +
 drivers/bus/hisi_lpc.c | 646 +
 drivers/of/address.c   |  96 ++-
 drivers/pci/pci.c  |  95 +--
 include/asm-generic/io.h   |   4 +-
 include/linux/logic_pio.h  | 131 +
 include/linux/pci.h|   3 +-
 lib/Kconfig|  15 +
 lib/Makefile   |   2 +
 lib/logic_pio.c| 285 +
 15 files changed, 1250 insertions(+), 98 deletions(-)
 create mode 100644 
Documentation/devicetree/bindings/arm/hisilicon/hisilicon-low-pin-count.txt
 create mode 100644 drivers/bus/hisi_lpc.c
 create mode 100644 include/linux/logic_pio.h
 create mode 100644 lib/logic_pio.c


Tested this version on a D05 board, no problems. So, for the series:

Tested-by: dann frazier 

.


Thanks Dann.

I think I still need 1/2 more series review/test/sob tags to get me 
across the line.


John








Re: [PATCH v14 0/9] LPC: legacy ISA I/O support

2018-02-21 Thread dann frazier
On Tue, Feb 20, 2018 at 01:48:31AM +0800, John Garry wrote:
> This patchset supports the IPMI-bt device attached to the Low-Pin-Count
> interface implemented on Hisilicon Hip06/Hip07 SoC.
> ---
> | LPC host|
> | |
> ---
>  |
> _V___LPC
>   |   |
>   V   V
>  
>  |  BT(ipmi)|
>  
> 
> When master accesses those peripherals beneath the Hip06/Hip07 LPC, a specific
> LPC driver is needed to make LPC host generate the standard LPC I/O cycles 
> with
> the target peripherals'I/O port addresses. But on curent arm64 world, there is
> no real I/O accesses. All the I/O operations through in/out accessors are 
> based
> on MMIO ranges; on Hip06/Hip07 LPC the I/O accesses are performed through 
> driver
> specific accessors rather than MMIO.
> To solve this issue and keep the relevant existing peripherals' drivers 
> untouched,
> this patchset:
>- introduces a generic I/O space management framework, logical PIO, to 
> support
>   I/O operations on host controllers operating either on MMIO buses or on 
> buses
>  requiring specific driver I/O accessors;
>- redefines the in/out accessors to provide a unified interface for both 
> MMIO
>  and driver specific I/O operations. Using logical PIO, th call of 
> in/out() from
>  the host children drivers, such as ipmi-si, will be redirected to the
>  corresponding device-specific I/O hooks to perform the I/O accesses.
> 
> Based on this patch-set, all the I/O accesses to Hip06/Hip07 LPC peripherals 
> can
> be supported without any changes on the existing ipmi-si driver.
> 
> The whole patchset has been tested on Hip07 D05 board both using DTB and ACPI.
> 
> Differences to v13:
> - dropped ACPI scan handler and added patch to not enumerate children
>   of indirect IO hosts in ACPI code
> - tidied up logic_pio.c a bit for kerneldoc and made some APIs clearer
>   to understand
> - tided (and simplified) hisi_lpc.c and added new ACPI probe code
>   (same as previous ACPI scan handler code, so comments from Rafael
>   and Andy included)
> - reinstated PCI range upper limit check in pci_pio_to_address()
> - dropped Dann Frazier's "tested-by" tag in light of changes
> - rebase to linuxnext 20180219 (had to fix locally arm64 build issue)
> 
> Differences to v12:
> - Addressed ACPI comments from Rafael and Andy, including:
>  - added SPDX license identifiers (other new files in the series got this 
> also)
>  - fixed style issues, like superflous newlines and symbol naming
>  - add fuller acpi_indirectio.c patch commit message
>  - dropped acpi_indirectio_host_data (author's decision) to simplify
> - added Rob Herring's tag
> - rebase to linux-next 20180212
> 
> Differences to v11:
> - fixed build errors for i386, m68k, and tile
> - added a comment in LPC driver commit log why we set
>the kernel config as bool
> - some tidying logic_pio code
> 
> Differences to v10:
> - dropped CONFIG_LOGIC_PIO. Reason is that CONFIG_PCI
>   depends on this, and CONFIG_PCI is a per-arch CONFIG.
>   So we would require all arch's kconfig to select this.
> - Addressed Dann Frazier's comments on LPC driver, and
>   sopme other cleanup
> - Moved logic_pio.h to be included in generic asm io.h
> - Fixed ACPI indirect IO host setup to handle >1 child
> - Relocated ACPI indirect IO host setup code to
>   drivers/acpi
> - Rebased to linux next-20180118
> 
> Changes from v9:
>   - patch 2 has been split into 3 patches according to Bjorn comments on
> v9 thread
>   - patch 1 has been reworked accordign to Bjorn comments on v9
>   - now logic_pio_trans_hwaddr() has a sanity check to make sure the resource
> size fits into the assigned range
>   - in patch 5 the MFD framework has been used to probe the LPC children
> according to the suggestion from Mika Westerberg
>   - Maintaner has changed to Huawei Linuxarm mailing list
> 
> Changes from v8:
>   - Simplified LIB IO framewrok
>   - Moved INDIRECT PIO ACPI framework under acpi/arm64
>   - Renamed occurrences of "lib io" and "indirect io" to "lib pio" and
> "indirect pio" to keep the patchset nomenclature consistent
>   - Removed Alignment reuqirements
>   - Moved LPC specific code out of ACPI common framework
>   - Now PIO indirect HW ranges can overlap
>   - Changed HiSilicon LPC driver maintainer (Gabriele Paoloni now) and split
> maintaner file modifications in a separate commit
>   - Removed the commit with the DT nodes support for hip06 and hip07 (to be
> pushed separately)
>   - Added a checking on ioport_map() not to break that 

Re: [PATCH v14 0/9] LPC: legacy ISA I/O support

2018-02-21 Thread dann frazier
On Tue, Feb 20, 2018 at 01:48:31AM +0800, John Garry wrote:
> This patchset supports the IPMI-bt device attached to the Low-Pin-Count
> interface implemented on Hisilicon Hip06/Hip07 SoC.
> ---
> | LPC host|
> | |
> ---
>  |
> _V___LPC
>   |   |
>   V   V
>  
>  |  BT(ipmi)|
>  
> 
> When master accesses those peripherals beneath the Hip06/Hip07 LPC, a specific
> LPC driver is needed to make LPC host generate the standard LPC I/O cycles 
> with
> the target peripherals'I/O port addresses. But on curent arm64 world, there is
> no real I/O accesses. All the I/O operations through in/out accessors are 
> based
> on MMIO ranges; on Hip06/Hip07 LPC the I/O accesses are performed through 
> driver
> specific accessors rather than MMIO.
> To solve this issue and keep the relevant existing peripherals' drivers 
> untouched,
> this patchset:
>- introduces a generic I/O space management framework, logical PIO, to 
> support
>   I/O operations on host controllers operating either on MMIO buses or on 
> buses
>  requiring specific driver I/O accessors;
>- redefines the in/out accessors to provide a unified interface for both 
> MMIO
>  and driver specific I/O operations. Using logical PIO, th call of 
> in/out() from
>  the host children drivers, such as ipmi-si, will be redirected to the
>  corresponding device-specific I/O hooks to perform the I/O accesses.
> 
> Based on this patch-set, all the I/O accesses to Hip06/Hip07 LPC peripherals 
> can
> be supported without any changes on the existing ipmi-si driver.
> 
> The whole patchset has been tested on Hip07 D05 board both using DTB and ACPI.
> 
> Differences to v13:
> - dropped ACPI scan handler and added patch to not enumerate children
>   of indirect IO hosts in ACPI code
> - tidied up logic_pio.c a bit for kerneldoc and made some APIs clearer
>   to understand
> - tided (and simplified) hisi_lpc.c and added new ACPI probe code
>   (same as previous ACPI scan handler code, so comments from Rafael
>   and Andy included)
> - reinstated PCI range upper limit check in pci_pio_to_address()
> - dropped Dann Frazier's "tested-by" tag in light of changes
> - rebase to linuxnext 20180219 (had to fix locally arm64 build issue)
> 
> Differences to v12:
> - Addressed ACPI comments from Rafael and Andy, including:
>  - added SPDX license identifiers (other new files in the series got this 
> also)
>  - fixed style issues, like superflous newlines and symbol naming
>  - add fuller acpi_indirectio.c patch commit message
>  - dropped acpi_indirectio_host_data (author's decision) to simplify
> - added Rob Herring's tag
> - rebase to linux-next 20180212
> 
> Differences to v11:
> - fixed build errors for i386, m68k, and tile
> - added a comment in LPC driver commit log why we set
>the kernel config as bool
> - some tidying logic_pio code
> 
> Differences to v10:
> - dropped CONFIG_LOGIC_PIO. Reason is that CONFIG_PCI
>   depends on this, and CONFIG_PCI is a per-arch CONFIG.
>   So we would require all arch's kconfig to select this.
> - Addressed Dann Frazier's comments on LPC driver, and
>   sopme other cleanup
> - Moved logic_pio.h to be included in generic asm io.h
> - Fixed ACPI indirect IO host setup to handle >1 child
> - Relocated ACPI indirect IO host setup code to
>   drivers/acpi
> - Rebased to linux next-20180118
> 
> Changes from v9:
>   - patch 2 has been split into 3 patches according to Bjorn comments on
> v9 thread
>   - patch 1 has been reworked accordign to Bjorn comments on v9
>   - now logic_pio_trans_hwaddr() has a sanity check to make sure the resource
> size fits into the assigned range
>   - in patch 5 the MFD framework has been used to probe the LPC children
> according to the suggestion from Mika Westerberg
>   - Maintaner has changed to Huawei Linuxarm mailing list
> 
> Changes from v8:
>   - Simplified LIB IO framewrok
>   - Moved INDIRECT PIO ACPI framework under acpi/arm64
>   - Renamed occurrences of "lib io" and "indirect io" to "lib pio" and
> "indirect pio" to keep the patchset nomenclature consistent
>   - Removed Alignment reuqirements
>   - Moved LPC specific code out of ACPI common framework
>   - Now PIO indirect HW ranges can overlap
>   - Changed HiSilicon LPC driver maintainer (Gabriele Paoloni now) and split
> maintaner file modifications in a separate commit
>   - Removed the commit with the DT nodes support for hip06 and hip07 (to be
> pushed separately)
>   - Added a checking on ioport_map() not to break that 

Re: [PATCH v14 0/9] LPC: legacy ISA I/O support

2018-02-20 Thread John Garry

On 20/02/2018 14:54, Andy Shevchenko wrote:

On Mon, Feb 19, 2018 at 7:48 PM, John Garry  wrote:

> This patchset supports the IPMI-bt device attached to the Low-Pin-Count
> interface implemented on Hisilicon Hip06/Hip07 SoC.
> ---
> | LPC host|
> | |
> ---
>  |
> _V___LPC
>   |   |
>   V   V
>  
>  |  BT(ipmi)|
>  
>
> When master accesses those peripherals beneath the Hip06/Hip07 LPC, a specific
> LPC driver is needed to make LPC host generate the standard LPC I/O cycles 
with
> the target peripherals'I/O port addresses. But on curent arm64 world, there is
> no real I/O accesses. All the I/O operations through in/out accessors are 
based
> on MMIO ranges; on Hip06/Hip07 LPC the I/O accesses are performed through 
driver
> specific accessors rather than MMIO.
> To solve this issue and keep the relevant existing peripherals' drivers 
untouched,
> this patchset:
>- introduces a generic I/O space management framework, logical PIO, to 
support
>   I/O operations on host controllers operating either on MMIO buses or on 
buses
>  requiring specific driver I/O accessors;
>- redefines the in/out accessors to provide a unified interface for both 
MMIO
>  and driver specific I/O operations. Using logical PIO, th call of 
in/out() from
>  the host children drivers, such as ipmi-si, will be redirected to the
>  corresponding device-specific I/O hooks to perform the I/O accesses.
>
> Based on this patch-set, all the I/O accesses to Hip06/Hip07 LPC peripherals 
can
> be supported without any changes on the existing ipmi-si driver.
>
> The whole patchset has been tested on Hip07 D05 board both using DTB and ACPI.
>
> Differences to v13:
> - dropped ACPI scan handler and added patch to not enumerate children
>   of indirect IO hosts in ACPI code
> - tidied up logic_pio.c a bit for kerneldoc and made some APIs clearer
>   to understand
> - tided (and simplified) hisi_lpc.c and added new ACPI probe code
>   (same as previous ACPI scan handler code, so comments from Rafael
>   and Andy included)
> - reinstated PCI range upper limit check in pci_pio_to_address()
> - dropped Dann Frazier's "tested-by" tag in light of changes
> - rebase to linuxnext 20180219 (had to fix locally arm64 build issue)
>

Some minor comments per patches, otherwise FWIW

Reviewed-by: Andy Shevchenko 



Thanks, the comments in the other 2 patches I did not reply to are ok.

John



Re: [PATCH v14 0/9] LPC: legacy ISA I/O support

2018-02-20 Thread John Garry

On 20/02/2018 14:54, Andy Shevchenko wrote:

On Mon, Feb 19, 2018 at 7:48 PM, John Garry  wrote:

> This patchset supports the IPMI-bt device attached to the Low-Pin-Count
> interface implemented on Hisilicon Hip06/Hip07 SoC.
> ---
> | LPC host|
> | |
> ---
>  |
> _V___LPC
>   |   |
>   V   V
>  
>  |  BT(ipmi)|
>  
>
> When master accesses those peripherals beneath the Hip06/Hip07 LPC, a specific
> LPC driver is needed to make LPC host generate the standard LPC I/O cycles 
with
> the target peripherals'I/O port addresses. But on curent arm64 world, there is
> no real I/O accesses. All the I/O operations through in/out accessors are 
based
> on MMIO ranges; on Hip06/Hip07 LPC the I/O accesses are performed through 
driver
> specific accessors rather than MMIO.
> To solve this issue and keep the relevant existing peripherals' drivers 
untouched,
> this patchset:
>- introduces a generic I/O space management framework, logical PIO, to 
support
>   I/O operations on host controllers operating either on MMIO buses or on 
buses
>  requiring specific driver I/O accessors;
>- redefines the in/out accessors to provide a unified interface for both 
MMIO
>  and driver specific I/O operations. Using logical PIO, th call of 
in/out() from
>  the host children drivers, such as ipmi-si, will be redirected to the
>  corresponding device-specific I/O hooks to perform the I/O accesses.
>
> Based on this patch-set, all the I/O accesses to Hip06/Hip07 LPC peripherals 
can
> be supported without any changes on the existing ipmi-si driver.
>
> The whole patchset has been tested on Hip07 D05 board both using DTB and ACPI.
>
> Differences to v13:
> - dropped ACPI scan handler and added patch to not enumerate children
>   of indirect IO hosts in ACPI code
> - tidied up logic_pio.c a bit for kerneldoc and made some APIs clearer
>   to understand
> - tided (and simplified) hisi_lpc.c and added new ACPI probe code
>   (same as previous ACPI scan handler code, so comments from Rafael
>   and Andy included)
> - reinstated PCI range upper limit check in pci_pio_to_address()
> - dropped Dann Frazier's "tested-by" tag in light of changes
> - rebase to linuxnext 20180219 (had to fix locally arm64 build issue)
>

Some minor comments per patches, otherwise FWIW

Reviewed-by: Andy Shevchenko 



Thanks, the comments in the other 2 patches I did not reply to are ok.

John



Re: [PATCH v14 0/9] LPC: legacy ISA I/O support

2018-02-20 Thread Andy Shevchenko
On Mon, Feb 19, 2018 at 7:48 PM, John Garry  wrote:
> This patchset supports the IPMI-bt device attached to the Low-Pin-Count
> interface implemented on Hisilicon Hip06/Hip07 SoC.
> ---
> | LPC host|
> | |
> ---
>  |
> _V___LPC
>   |   |
>   V   V
>  
>  |  BT(ipmi)|
>  
>
> When master accesses those peripherals beneath the Hip06/Hip07 LPC, a specific
> LPC driver is needed to make LPC host generate the standard LPC I/O cycles 
> with
> the target peripherals'I/O port addresses. But on curent arm64 world, there is
> no real I/O accesses. All the I/O operations through in/out accessors are 
> based
> on MMIO ranges; on Hip06/Hip07 LPC the I/O accesses are performed through 
> driver
> specific accessors rather than MMIO.
> To solve this issue and keep the relevant existing peripherals' drivers 
> untouched,
> this patchset:
>- introduces a generic I/O space management framework, logical PIO, to 
> support
>   I/O operations on host controllers operating either on MMIO buses or on 
> buses
>  requiring specific driver I/O accessors;
>- redefines the in/out accessors to provide a unified interface for both 
> MMIO
>  and driver specific I/O operations. Using logical PIO, th call of 
> in/out() from
>  the host children drivers, such as ipmi-si, will be redirected to the
>  corresponding device-specific I/O hooks to perform the I/O accesses.
>
> Based on this patch-set, all the I/O accesses to Hip06/Hip07 LPC peripherals 
> can
> be supported without any changes on the existing ipmi-si driver.
>
> The whole patchset has been tested on Hip07 D05 board both using DTB and ACPI.
>
> Differences to v13:
> - dropped ACPI scan handler and added patch to not enumerate children
>   of indirect IO hosts in ACPI code
> - tidied up logic_pio.c a bit for kerneldoc and made some APIs clearer
>   to understand
> - tided (and simplified) hisi_lpc.c and added new ACPI probe code
>   (same as previous ACPI scan handler code, so comments from Rafael
>   and Andy included)
> - reinstated PCI range upper limit check in pci_pio_to_address()
> - dropped Dann Frazier's "tested-by" tag in light of changes
> - rebase to linuxnext 20180219 (had to fix locally arm64 build issue)
>

Some minor comments per patches, otherwise FWIW

Reviewed-by: Andy Shevchenko 

> Differences to v12:
> - Addressed ACPI comments from Rafael and Andy, including:
>  - added SPDX license identifiers (other new files in the series got this 
> also)
>  - fixed style issues, like superflous newlines and symbol naming
>  - add fuller acpi_indirectio.c patch commit message
>  - dropped acpi_indirectio_host_data (author's decision) to simplify
> - added Rob Herring's tag
> - rebase to linux-next 20180212
>
> Differences to v11:
> - fixed build errors for i386, m68k, and tile
> - added a comment in LPC driver commit log why we set
>the kernel config as bool
> - some tidying logic_pio code
>
> Differences to v10:
> - dropped CONFIG_LOGIC_PIO. Reason is that CONFIG_PCI
>   depends on this, and CONFIG_PCI is a per-arch CONFIG.
>   So we would require all arch's kconfig to select this.
> - Addressed Dann Frazier's comments on LPC driver, and
>   sopme other cleanup
> - Moved logic_pio.h to be included in generic asm io.h
> - Fixed ACPI indirect IO host setup to handle >1 child
> - Relocated ACPI indirect IO host setup code to
>   drivers/acpi
> - Rebased to linux next-20180118
>
> Changes from v9:
>   - patch 2 has been split into 3 patches according to Bjorn comments on
> v9 thread
>   - patch 1 has been reworked accordign to Bjorn comments on v9
>   - now logic_pio_trans_hwaddr() has a sanity check to make sure the resource
> size fits into the assigned range
>   - in patch 5 the MFD framework has been used to probe the LPC children
> according to the suggestion from Mika Westerberg
>   - Maintaner has changed to Huawei Linuxarm mailing list
>
> Changes from v8:
>   - Simplified LIB IO framewrok
>   - Moved INDIRECT PIO ACPI framework under acpi/arm64
>   - Renamed occurrences of "lib io" and "indirect io" to "lib pio" and
> "indirect pio" to keep the patchset nomenclature consistent
>   - Removed Alignment reuqirements
>   - Moved LPC specific code out of ACPI common framework
>   - Now PIO indirect HW ranges can overlap
>   - Changed HiSilicon LPC driver maintainer (Gabriele Paoloni now) and split
> maintaner file modifications in a separate commit
>   - Removed the commit with the DT nodes support 

Re: [PATCH v14 0/9] LPC: legacy ISA I/O support

2018-02-20 Thread Andy Shevchenko
On Mon, Feb 19, 2018 at 7:48 PM, John Garry  wrote:
> This patchset supports the IPMI-bt device attached to the Low-Pin-Count
> interface implemented on Hisilicon Hip06/Hip07 SoC.
> ---
> | LPC host|
> | |
> ---
>  |
> _V___LPC
>   |   |
>   V   V
>  
>  |  BT(ipmi)|
>  
>
> When master accesses those peripherals beneath the Hip06/Hip07 LPC, a specific
> LPC driver is needed to make LPC host generate the standard LPC I/O cycles 
> with
> the target peripherals'I/O port addresses. But on curent arm64 world, there is
> no real I/O accesses. All the I/O operations through in/out accessors are 
> based
> on MMIO ranges; on Hip06/Hip07 LPC the I/O accesses are performed through 
> driver
> specific accessors rather than MMIO.
> To solve this issue and keep the relevant existing peripherals' drivers 
> untouched,
> this patchset:
>- introduces a generic I/O space management framework, logical PIO, to 
> support
>   I/O operations on host controllers operating either on MMIO buses or on 
> buses
>  requiring specific driver I/O accessors;
>- redefines the in/out accessors to provide a unified interface for both 
> MMIO
>  and driver specific I/O operations. Using logical PIO, th call of 
> in/out() from
>  the host children drivers, such as ipmi-si, will be redirected to the
>  corresponding device-specific I/O hooks to perform the I/O accesses.
>
> Based on this patch-set, all the I/O accesses to Hip06/Hip07 LPC peripherals 
> can
> be supported without any changes on the existing ipmi-si driver.
>
> The whole patchset has been tested on Hip07 D05 board both using DTB and ACPI.
>
> Differences to v13:
> - dropped ACPI scan handler and added patch to not enumerate children
>   of indirect IO hosts in ACPI code
> - tidied up logic_pio.c a bit for kerneldoc and made some APIs clearer
>   to understand
> - tided (and simplified) hisi_lpc.c and added new ACPI probe code
>   (same as previous ACPI scan handler code, so comments from Rafael
>   and Andy included)
> - reinstated PCI range upper limit check in pci_pio_to_address()
> - dropped Dann Frazier's "tested-by" tag in light of changes
> - rebase to linuxnext 20180219 (had to fix locally arm64 build issue)
>

Some minor comments per patches, otherwise FWIW

Reviewed-by: Andy Shevchenko 

> Differences to v12:
> - Addressed ACPI comments from Rafael and Andy, including:
>  - added SPDX license identifiers (other new files in the series got this 
> also)
>  - fixed style issues, like superflous newlines and symbol naming
>  - add fuller acpi_indirectio.c patch commit message
>  - dropped acpi_indirectio_host_data (author's decision) to simplify
> - added Rob Herring's tag
> - rebase to linux-next 20180212
>
> Differences to v11:
> - fixed build errors for i386, m68k, and tile
> - added a comment in LPC driver commit log why we set
>the kernel config as bool
> - some tidying logic_pio code
>
> Differences to v10:
> - dropped CONFIG_LOGIC_PIO. Reason is that CONFIG_PCI
>   depends on this, and CONFIG_PCI is a per-arch CONFIG.
>   So we would require all arch's kconfig to select this.
> - Addressed Dann Frazier's comments on LPC driver, and
>   sopme other cleanup
> - Moved logic_pio.h to be included in generic asm io.h
> - Fixed ACPI indirect IO host setup to handle >1 child
> - Relocated ACPI indirect IO host setup code to
>   drivers/acpi
> - Rebased to linux next-20180118
>
> Changes from v9:
>   - patch 2 has been split into 3 patches according to Bjorn comments on
> v9 thread
>   - patch 1 has been reworked accordign to Bjorn comments on v9
>   - now logic_pio_trans_hwaddr() has a sanity check to make sure the resource
> size fits into the assigned range
>   - in patch 5 the MFD framework has been used to probe the LPC children
> according to the suggestion from Mika Westerberg
>   - Maintaner has changed to Huawei Linuxarm mailing list
>
> Changes from v8:
>   - Simplified LIB IO framewrok
>   - Moved INDIRECT PIO ACPI framework under acpi/arm64
>   - Renamed occurrences of "lib io" and "indirect io" to "lib pio" and
> "indirect pio" to keep the patchset nomenclature consistent
>   - Removed Alignment reuqirements
>   - Moved LPC specific code out of ACPI common framework
>   - Now PIO indirect HW ranges can overlap
>   - Changed HiSilicon LPC driver maintainer (Gabriele Paoloni now) and split
> maintaner file modifications in a separate commit
>   - Removed the commit with the DT nodes support for hip06 and hip07 (to be
> pushed 

[PATCH v14 0/9] LPC: legacy ISA I/O support

2018-02-19 Thread John Garry
This patchset supports the IPMI-bt device attached to the Low-Pin-Count
interface implemented on Hisilicon Hip06/Hip07 SoC.
---
| LPC host|
| |
---
 |
_V___LPC
  |   |
  V   V
 
 |  BT(ipmi)|
 

When master accesses those peripherals beneath the Hip06/Hip07 LPC, a specific
LPC driver is needed to make LPC host generate the standard LPC I/O cycles with
the target peripherals'I/O port addresses. But on curent arm64 world, there is
no real I/O accesses. All the I/O operations through in/out accessors are based
on MMIO ranges; on Hip06/Hip07 LPC the I/O accesses are performed through driver
specific accessors rather than MMIO.
To solve this issue and keep the relevant existing peripherals' drivers 
untouched,
this patchset:
   - introduces a generic I/O space management framework, logical PIO, to 
support
  I/O operations on host controllers operating either on MMIO buses or on 
buses
 requiring specific driver I/O accessors;
   - redefines the in/out accessors to provide a unified interface for both MMIO
 and driver specific I/O operations. Using logical PIO, th call of in/out() 
from
 the host children drivers, such as ipmi-si, will be redirected to the
 corresponding device-specific I/O hooks to perform the I/O accesses.

Based on this patch-set, all the I/O accesses to Hip06/Hip07 LPC peripherals can
be supported without any changes on the existing ipmi-si driver.

The whole patchset has been tested on Hip07 D05 board both using DTB and ACPI.

Differences to v13:
- dropped ACPI scan handler and added patch to not enumerate children
  of indirect IO hosts in ACPI code
- tidied up logic_pio.c a bit for kerneldoc and made some APIs clearer
  to understand
- tided (and simplified) hisi_lpc.c and added new ACPI probe code
  (same as previous ACPI scan handler code, so comments from Rafael
  and Andy included)
- reinstated PCI range upper limit check in pci_pio_to_address()
- dropped Dann Frazier's "tested-by" tag in light of changes
- rebase to linuxnext 20180219 (had to fix locally arm64 build issue)

Differences to v12:
- Addressed ACPI comments from Rafael and Andy, including:
 - added SPDX license identifiers (other new files in the series got this 
also)
 - fixed style issues, like superflous newlines and symbol naming
 - add fuller acpi_indirectio.c patch commit message
 - dropped acpi_indirectio_host_data (author's decision) to simplify
- added Rob Herring's tag
- rebase to linux-next 20180212

Differences to v11:
- fixed build errors for i386, m68k, and tile
- added a comment in LPC driver commit log why we set
   the kernel config as bool
- some tidying logic_pio code

Differences to v10:
- dropped CONFIG_LOGIC_PIO. Reason is that CONFIG_PCI
  depends on this, and CONFIG_PCI is a per-arch CONFIG.
  So we would require all arch's kconfig to select this.
- Addressed Dann Frazier's comments on LPC driver, and
  sopme other cleanup
- Moved logic_pio.h to be included in generic asm io.h
- Fixed ACPI indirect IO host setup to handle >1 child
- Relocated ACPI indirect IO host setup code to
  drivers/acpi
- Rebased to linux next-20180118

Changes from v9:
  - patch 2 has been split into 3 patches according to Bjorn comments on
v9 thread
  - patch 1 has been reworked accordign to Bjorn comments on v9
  - now logic_pio_trans_hwaddr() has a sanity check to make sure the resource
size fits into the assigned range
  - in patch 5 the MFD framework has been used to probe the LPC children
according to the suggestion from Mika Westerberg
  - Maintaner has changed to Huawei Linuxarm mailing list

Changes from v8:
  - Simplified LIB IO framewrok
  - Moved INDIRECT PIO ACPI framework under acpi/arm64
  - Renamed occurrences of "lib io" and "indirect io" to "lib pio" and
"indirect pio" to keep the patchset nomenclature consistent
  - Removed Alignment reuqirements
  - Moved LPC specific code out of ACPI common framework
  - Now PIO indirect HW ranges can overlap
  - Changed HiSilicon LPC driver maintainer (Gabriele Paoloni now) and split
maintaner file modifications in a separate commit
  - Removed the commit with the DT nodes support for hip06 and hip07 (to be
pushed separately)
  - Added a checking on ioport_map() not to break that function as Arnd points
out in V7 review thread;
  - fixed the compile issues on alpha, m68k;

Changes from V7:
  - Based on Arnd's comment, rename the LIBIO as LOGIC_PIO;
  - Improved the mapping process in LOGIC_PIO to gain better efficiency when
redirecting the I/O 

[PATCH v14 0/9] LPC: legacy ISA I/O support

2018-02-19 Thread John Garry
This patchset supports the IPMI-bt device attached to the Low-Pin-Count
interface implemented on Hisilicon Hip06/Hip07 SoC.
---
| LPC host|
| |
---
 |
_V___LPC
  |   |
  V   V
 
 |  BT(ipmi)|
 

When master accesses those peripherals beneath the Hip06/Hip07 LPC, a specific
LPC driver is needed to make LPC host generate the standard LPC I/O cycles with
the target peripherals'I/O port addresses. But on curent arm64 world, there is
no real I/O accesses. All the I/O operations through in/out accessors are based
on MMIO ranges; on Hip06/Hip07 LPC the I/O accesses are performed through driver
specific accessors rather than MMIO.
To solve this issue and keep the relevant existing peripherals' drivers 
untouched,
this patchset:
   - introduces a generic I/O space management framework, logical PIO, to 
support
  I/O operations on host controllers operating either on MMIO buses or on 
buses
 requiring specific driver I/O accessors;
   - redefines the in/out accessors to provide a unified interface for both MMIO
 and driver specific I/O operations. Using logical PIO, th call of in/out() 
from
 the host children drivers, such as ipmi-si, will be redirected to the
 corresponding device-specific I/O hooks to perform the I/O accesses.

Based on this patch-set, all the I/O accesses to Hip06/Hip07 LPC peripherals can
be supported without any changes on the existing ipmi-si driver.

The whole patchset has been tested on Hip07 D05 board both using DTB and ACPI.

Differences to v13:
- dropped ACPI scan handler and added patch to not enumerate children
  of indirect IO hosts in ACPI code
- tidied up logic_pio.c a bit for kerneldoc and made some APIs clearer
  to understand
- tided (and simplified) hisi_lpc.c and added new ACPI probe code
  (same as previous ACPI scan handler code, so comments from Rafael
  and Andy included)
- reinstated PCI range upper limit check in pci_pio_to_address()
- dropped Dann Frazier's "tested-by" tag in light of changes
- rebase to linuxnext 20180219 (had to fix locally arm64 build issue)

Differences to v12:
- Addressed ACPI comments from Rafael and Andy, including:
 - added SPDX license identifiers (other new files in the series got this 
also)
 - fixed style issues, like superflous newlines and symbol naming
 - add fuller acpi_indirectio.c patch commit message
 - dropped acpi_indirectio_host_data (author's decision) to simplify
- added Rob Herring's tag
- rebase to linux-next 20180212

Differences to v11:
- fixed build errors for i386, m68k, and tile
- added a comment in LPC driver commit log why we set
   the kernel config as bool
- some tidying logic_pio code

Differences to v10:
- dropped CONFIG_LOGIC_PIO. Reason is that CONFIG_PCI
  depends on this, and CONFIG_PCI is a per-arch CONFIG.
  So we would require all arch's kconfig to select this.
- Addressed Dann Frazier's comments on LPC driver, and
  sopme other cleanup
- Moved logic_pio.h to be included in generic asm io.h
- Fixed ACPI indirect IO host setup to handle >1 child
- Relocated ACPI indirect IO host setup code to
  drivers/acpi
- Rebased to linux next-20180118

Changes from v9:
  - patch 2 has been split into 3 patches according to Bjorn comments on
v9 thread
  - patch 1 has been reworked accordign to Bjorn comments on v9
  - now logic_pio_trans_hwaddr() has a sanity check to make sure the resource
size fits into the assigned range
  - in patch 5 the MFD framework has been used to probe the LPC children
according to the suggestion from Mika Westerberg
  - Maintaner has changed to Huawei Linuxarm mailing list

Changes from v8:
  - Simplified LIB IO framewrok
  - Moved INDIRECT PIO ACPI framework under acpi/arm64
  - Renamed occurrences of "lib io" and "indirect io" to "lib pio" and
"indirect pio" to keep the patchset nomenclature consistent
  - Removed Alignment reuqirements
  - Moved LPC specific code out of ACPI common framework
  - Now PIO indirect HW ranges can overlap
  - Changed HiSilicon LPC driver maintainer (Gabriele Paoloni now) and split
maintaner file modifications in a separate commit
  - Removed the commit with the DT nodes support for hip06 and hip07 (to be
pushed separately)
  - Added a checking on ioport_map() not to break that function as Arnd points
out in V7 review thread;
  - fixed the compile issues on alpha, m68k;

Changes from V7:
  - Based on Arnd's comment, rename the LIBIO as LOGIC_PIO;
  - Improved the mapping process in LOGIC_PIO to gain better efficiency when
redirecting the I/O