oweals/u-boot.git
6 years agoarm: zynq: Add ps7_init for cc108
Michal Simek [Fri, 10 Nov 2017 11:41:10 +0000 (12:41 +0100)]
arm: zynq: Add ps7_init for cc108

After some generic cleanup adding ps7_init* to repository
is not big pain now.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm: zynq: Show information about silicon version
Michal Simek [Fri, 10 Nov 2017 12:01:10 +0000 (13:01 +0100)]
arm: zynq: Show information about silicon version

Show information about silicon in bootlog.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm: zynq: Do not show information from checkboard twice
Michal Simek [Fri, 10 Nov 2017 12:03:50 +0000 (13:03 +0100)]
arm: zynq: Do not show information from checkboard twice

There is no reason to show information about board twice.
Remove boardinfo late calls.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm: zynq: Use unsigned type with comparison with ARRAY_SIZE
Michal Simek [Fri, 10 Nov 2017 12:28:07 +0000 (13:28 +0100)]
arm: zynq: Use unsigned type with comparison with ARRAY_SIZE

Sparse is return warning about this:
arch/arm/mach-zynq/slcr.c: In function 'zynq_slcr_get_mio_pin_status':
arch/arm/mach-zynq/slcr.c:185:16: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
  for (i = 0; i < ARRAY_SIZE(mio_periphs); i++) {
                ^

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm: zynq: Convert all board to use arch ps7_init code
Michal Simek [Fri, 10 Nov 2017 10:00:42 +0000 (11:00 +0100)]
arm: zynq: Convert all board to use arch ps7_init code

Use generic implementation. It will also reduce config data size for
converted boards.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm: zynq: Add support for EMIT_WRITE operation
Michal Simek [Fri, 10 Nov 2017 10:03:47 +0000 (11:03 +0100)]
arm: zynq: Add support for EMIT_WRITE operation

Add proper support for EMIT_WRITE operation which is write only.
Do not use EMIT_MASKWRITE which is read-modify-write.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm: zynq: Add ps7GetSiliconVersion() to ps7_spl_init
Michal Simek [Fri, 10 Nov 2017 10:06:02 +0000 (11:06 +0100)]
arm: zynq: Add ps7GetSiliconVersion() to ps7_spl_init

Unfortunately camelcase is coming from ps7_init* format.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm: zynq: Move common ps7_init* initialization to arch code
Michal Simek [Fri, 10 Nov 2017 08:47:28 +0000 (09:47 +0100)]
arm: zynq: Move common ps7_init* initialization to arch code

This patch is based on work done in topic board where the first address
word also storing operation which should be done. This is reducing size
of configuration data.
This patch is not breaking an option to copy default ps7_init_gpl* files
from hdf file but it is doing preparation for ps7_init* consolidation.

The patch is also marking ps7_config as weak function.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm: zynq: Get rid of ps7_reset_apu() for syzygy board
Michal Simek [Fri, 10 Nov 2017 08:51:17 +0000 (09:51 +0100)]
arm: zynq: Get rid of ps7_reset_apu() for syzygy board

There is no reason to call separate function.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm: zynq: Move ps7_* to separate file
Michal Simek [Wed, 8 Nov 2017 15:14:47 +0000 (16:14 +0100)]
arm: zynq: Move ps7_* to separate file

Extract ps7_* from spl code to prepare for extension.
And also return value.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm: zynq: Remove ps7_debug code
Michal Simek [Fri, 10 Nov 2017 08:09:48 +0000 (09:09 +0100)]
arm: zynq: Remove ps7_debug code

SPL is not calling this code that's why it is dead code and can be
removed.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm: zynq: Enable debug uart on zc706
Michal Simek [Fri, 10 Nov 2017 08:26:40 +0000 (09:26 +0100)]
arm: zynq: Enable debug uart on zc706

Enable debug uart by default.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm: zynq: Add missing ps7_post_config declaration
Michal Simek [Wed, 8 Nov 2017 15:10:35 +0000 (16:10 +0100)]
arm: zynq: Add missing ps7_post_config declaration

Add missing declaration to header.

Warning log:
arch/arm/mach-zynq/spl.c:94:12: warning: symbol 'ps7_post_config' was
not declared. Should it be static?

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agonet: xilinx_axi_emac: Add support for non processor mode
Siva Durga Prasad Paladugu [Fri, 6 Jan 2017 10:57:15 +0000 (16:27 +0530)]
net: xilinx_axi_emac: Add support for non processor mode

Add support for non processor mode, this mode doesn't have
access to some of the registers and hence this patch
bypasses it and also length has to be calculated from
status instead of app4 in this mode.

Signed-off-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
6 years agonet: xilinx_axi_emac: Read dma address using fdtdec_get_addr
Siva Durga Prasad Paladugu [Thu, 22 Jun 2017 05:44:55 +0000 (11:14 +0530)]
net: xilinx_axi_emac: Read dma address using fdtdec_get_addr

Read dma address using fdtdec_get_addr as it checks for
address cells and size cells and reads the address
properly. fdtdec_get_int always assume address is of int
size which goes wrong if using it on 64-bit architecture.

Signed-off-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agonet: xilinx_axi_emac: Use wait_for_bit instead of while loop
Siva Durga Prasad Paladugu [Fri, 6 Jan 2017 10:48:50 +0000 (16:18 +0530)]
net: xilinx_axi_emac: Use wait_for_bit instead of while loop

Use wait_for_bit instead while loop during init

Signed-off-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
6 years agoarm64: zynqmp: Add revision to identification string
Michal Simek [Wed, 8 Nov 2017 14:48:57 +0000 (15:48 +0100)]
arm64: zynqmp: Add revision to identification string

It is good to see revision in boot log.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Enable watchdog by default
Shubhrajyoti Datta [Thu, 6 Apr 2017 06:58:14 +0000 (12:28 +0530)]
arm64: zynqmp: Enable watchdog by default

Enable watchdog in dts for zcu102.

Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Add note about si5328 interrupt
Michal Simek [Thu, 2 Nov 2017 11:45:10 +0000 (12:45 +0100)]
arm64: zynqmp: Add note about si5328 interrupt

Add comment about irq present on the board connected to PL.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: usb: Correct IOMMU node for making SMMU work with USB
Anurag Kumar Vulisha [Tue, 20 Jun 2017 10:55:16 +0000 (16:25 +0530)]
arm64: zynqmp: usb: Correct IOMMU node for making SMMU work with USB

This patch makes SMMU work by moving the iommus node under the dwc3 child
entry from parent node.

Signed-off-by: Anurag Kumar Vulisha <anuragku@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Remove clock setting from dtsi
Michal Simek [Thu, 2 Nov 2017 11:41:34 +0000 (12:41 +0100)]
arm64: zynqmp: Remove clock setting from dtsi

clock setting is handled via clk dtsi file.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Uncomment snps,quirk-frame-length-adjustment flag in dwc3
Anurag Kumar Vulisha [Fri, 10 Mar 2017 13:48:17 +0000 (19:18 +0530)]
arm64: zynqmp: Uncomment snps,quirk-frame-length-adjustment flag in dwc3

This patch uncomments snps,quirk-frame-length-adjustment which has
the value to adjust the SOF/ITP generated from the controller.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Add USB OTG interrupts support in dt
Manish Narani [Wed, 18 Jan 2017 12:04:48 +0000 (17:34 +0530)]
arm64: zynqmp: Add USB OTG interrupts support in dt

This patch adds OTG interrupt support in device tree. It will add
an extra interrupt line number dedicated to OTG events. This will
enable OTG interrupts to serve in DWC3 OTG driver.

Signed-off-by: Manish Narani <mnarani@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Enabled CCI support for USB
Manish Narani [Mon, 27 Mar 2017 12:17:00 +0000 (17:47 +0530)]
arm64: zynqmp: Enabled CCI support for USB

This patch adds CCI support for USB when CCI is enabled in design.
This patch also adds 'reg' property for Xilinx USB 3.0 IP. The 'reg'
property is added in order to modify a register in that to enable
coherency in Hardware.

Also add address to unit name to avoid dtc warning

Signed-off-by: Manish Narani <mnarani@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Add support reading SoC revision using nvmem driver in dwc3
Anurag Kumar Vulisha [Thu, 2 Mar 2017 09:10:51 +0000 (14:40 +0530)]
arm64: zynqmp: Add support reading SoC revision using nvmem driver in dwc3

This patch adds support for reading silicon revision using zynqmp nvmem
driver.

Signed-off-by: Anurag Kumar Vulisha <anuragku@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Move nodes which have no reg property out of bus
Michal Simek [Wed, 5 Jul 2017 12:51:42 +0000 (14:51 +0200)]
arm64: zynqmp: Move nodes which have no reg property out of bus

Nodes without reg properties shouldn't be placed in amba node.
Move them out.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: dt: Add AMS node
Michal Simek [Thu, 2 Nov 2017 11:04:43 +0000 (12:04 +0100)]
arm64: zynqmp: dt: Add AMS node

The AMS includes an ADC as well as on-chip sensors that can be used to
sample external voltages and monitor on-die operating conditions, such as
temperature and supply voltage levels.

Signed-off-by: Rajnikant Bhojani <rajnikant.bhojani@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: sdhci: set host quirk2 for no 1.8V support for 1.0 silicon
Manish Narani [Wed, 19 Jul 2017 15:46:33 +0000 (21:16 +0530)]
arm64: zynqmp: sdhci: set host quirk2 for no 1.8V support for 1.0 silicon

This patch sets host quirk2 bit field for No 1.8V supported in case of
1.0 silicon. The 1.0 silicon doesn't have support for UHS-I modes. This
property will ensure the SD runs on High Speed mode.

Signed-off-by: Manish Narani <mnarani@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Use reset controller framework for asserting/de-asserting reset
Anurag Kumar Vulisha [Wed, 8 Feb 2017 11:39:10 +0000 (17:09 +0530)]
arm64: zynqmp: Use reset controller framework for asserting/de-asserting reset

This patch modifies the phy_zynqmp.c driver to use reset-controller
framework for asserting/de-asserting reset for High Speed modules.

Also fix documentation and dtsi.

Signed-off-by: Anurag Kumar Vulisha <anuragku@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Add reset-controller support in serdes driver
Anurag Kumar Vulisha [Mon, 6 Feb 2017 16:10:34 +0000 (21:40 +0530)]
arm64: zynqmp: Add reset-controller support in serdes driver

This patch add the reset nodes in zynqmp.dtsi which are used by
reset-controller framework

Signed-off-by: Anurag Kumar Vulisha <anuragku@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Remove tx_termination_fix detection on silicon v1
Michal Simek [Tue, 17 Jan 2017 13:36:54 +0000 (14:36 +0100)]
arm64: zynqmp: Remove tx_termination_fix detection on silicon v1

Only silicon v1 requires this termination fix. With new nvmem soc
revision nvmem detection driver this can be autodetected at run time and
this flag is not needed.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Add support for zynqmp nvmem firmware driver
Nava kishore Manne [Tue, 17 Jan 2017 11:27:24 +0000 (16:57 +0530)]
arm64: zynqmp: Add support for zynqmp nvmem firmware driver

Add support for zynqmp nvmem firmware driver.

Signed-off-by: Nava kishore Manne <navam@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Add support for zcu102 1.0 rev
Michal Simek [Thu, 2 Nov 2017 10:42:12 +0000 (11:42 +0100)]
arm64: zynqmp: Add support for zcu102 1.0 rev

1.0 rev is the latest rev. Describe information in eeprom.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Update device tree for pinmux
Michal Simek [Thu, 2 Nov 2017 10:51:59 +0000 (11:51 +0100)]
arm64: zynqmp: Update device tree for pinmux

Added pin control support in device tree for zynqmp.

Signed-off-by: Chirag Parekh <chirag.parekh@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Remove local-mac-address from dtsi file
Michal Simek [Fri, 10 Feb 2017 13:11:54 +0000 (14:11 +0100)]
arm64: zynqmp: Remove local-mac-address from dtsi file

Generic dtsi file can't use the same mac address for all.
U-Boot read mac from eeprom in zcu102 case and for others random mac
address is generated.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Use SPDX license with dc4
Michal Simek [Thu, 9 Feb 2017 13:38:36 +0000 (14:38 +0100)]
arm64: zynqmp: Use SPDX license with dc4

Just header change.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Remove leading 0s from mtd table for spi flashes
Michal Simek [Wed, 5 Jul 2017 12:50:44 +0000 (14:50 +0200)]
arm64: zynqmp: Remove leading 0s from mtd table for spi flashes

dtc reports issues with it.
arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm016-dc2.dtb: Warning
(unit_address_format): Node
/amba/spi@ff040000/spi0_flash0@0/spi0_flash0@00000000 unit name should
not have leading 0s
arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm016-dc2.dtb: Warning
(unit_address_format): Node
/amba/spi@ff050000/spi1_flash0@0/spi1_flash0@00000000 unit name should
not have leading 0s
arch/arm64/boot/dts/xilinx/zynqmp-ep108.dtb: Warning
(unit_address_format): Node
/amba/spi@ff040000/spi0_flash0@0/spi0_flash0@00000000 unit name should
not have leading 0s
arch/arm64/boot/dts/xilinx/zynqmp-ep108.dtb: Warning
(unit_address_format): Node
/amba/spi@ff050000/spi1_flash0@0/spi1_flash0@00000000 unit name should
not have leading 0s

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Add missing alias for gem0 for ep108
Michal Simek [Thu, 11 May 2017 08:15:15 +0000 (10:15 +0200)]
arm64: zynqmp: Add missing alias for gem0 for ep108

Add missing alias for gem0 for ep108 to have proper sequence number.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: zcu102: Modifying GTR lane-0 to PCIe
Bharat Kumar Gogada [Mon, 30 Jan 2017 06:36:02 +0000 (12:06 +0530)]
arm64: zynqmp: zcu102: Modifying GTR lane-0 to PCIe

- Enabling GTR lane-0 to PCIe
- Enabling PCIe node in device tree

Signed-off-by: Bharat Kumar Gogada <bharatku@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Update device tree for gpio
Chirag Parekh [Wed, 25 Jan 2017 15:00:57 +0000 (07:00 -0800)]
arm64: zynqmp: Update device tree for gpio

Used defines rather than raw values for gpio configurations.

Signed-off-by: Chirag Parekh <chirag.parekh@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Add revB string to compatible string
Michal Simek [Thu, 2 Nov 2017 09:22:27 +0000 (10:22 +0100)]
arm64: zynqmp: Add revB string to compatible string

Some user space libraries reading platform compatible string and based
on that changing behavior. Mark revB board with revB string.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Use revision in dts file description
Michal Simek [Thu, 2 Nov 2017 09:21:08 +0000 (10:21 +0100)]
arm64: zynqmp: Use revision in dts file description

Trivial change.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: PM: Specify power domains for DP related nodes
Jyotheeswar Reddy Mutthareddyvari [Mon, 2 Jan 2017 09:04:51 +0000 (14:34 +0530)]
arm64: zynqmp: PM: Specify power domains for DP related nodes

Currently DP power domain (pd_dp) is not attached to any of the DP nodes which is
causing genpd to trigger a power down request for DP domain, making all DP related
peripherals unusable. So assign power domains for all DP related nodes to enable
proper accounting of DP power domain usage.

Signed-off-by: Jyotheeswar Reddy <jyothee@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: disable smmu
Naga Sureshkumar Relli [Thu, 9 Mar 2017 14:30:13 +0000 (20:00 +0530)]
arm64: zynqmp: disable smmu

This patch disables the smmu and also removes the mmu-masters

Signed-off-by: Naga Sureshkumar Relli <nagasure@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: rtc: Add calibration
Nava kishore Manne [Fri, 27 Jan 2017 12:50:14 +0000 (18:20 +0530)]
arm64: zynqmp: rtc: Add calibration

This patch adds the calibration property with required value,
calculated based on rtc input crystal oscillator frequency (32.768Khz).

Signed-off-by: Nava kishore Manne <navam@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Add SMMU support for SATA IP
Anurag Kumar Vulisha [Tue, 4 Jul 2017 14:33:42 +0000 (20:03 +0530)]
arm64: zynqmp: Add SMMU support for SATA IP

AXI master interface in CEVA AHCI controller requires two unique
Write/Read ID tags per port. This is because, ahci controller uses
different AXI ID[3:0] bits for identifying non-data transfers(like
reading descriptors, updating PRD tables, etc) and data transfers
(like sending/receiving FIS).To make SMMU work with SATA we need to
add correct SMMU stream id for SATA. SMMU stream id for SATA is
determined based on the AXI ID[1:0] as shown below

SATA SMMU ID =  <TBU number>, 0011, 00, 00, AXI ID[1:0]
Note: SATA in  ZynqMp uses TBU1 so TBU number = 0x1, so
      SMMU ID = 001, 0011, 00, 00, AXI ID[1:0]

Since we have four different AXI ID[3:0] (2 for port0 & 2 for port1
as said above) we get four different SMMU stream id's combinations
for SATA. These AXI ID can be configured using PAXIC register.
In this patch we assumed the below AXI ID values

 Read ID/ Write ID for Non-Data Port0 transfers = 0
 Read ID/ Write ID for Data Port0 transfers = 1
 Read ID/ Write ID for Non-Data Port1 transfers = 2
 Read ID/ Write ID for Data Port1 transfers = 3

Based on the above values,SMMU stream ID's for SATA will be 0x4c0 &
0x4c1 for PORT0, 0x4c2 & 0x4c3 for PORT1. These values needed to be
added to iommus dts property. This patch does the same.

Signed-off-by: Anurag Kumar Vulisha <anuragku@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: dts: xilinx: fix PCI bus dtc warnings
Rob Herring [Wed, 22 Mar 2017 02:03:13 +0000 (21:03 -0500)]
arm64: dts: xilinx: fix PCI bus dtc warnings

dtc recently added PCI bus checks. Fix these warnings.

Signed-off-by: Rob Herring <robh@kernel.org>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: "Sören Brinkmann" <soren.brinkmann@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Add missing gpio property to dtsi
Michal Simek [Wed, 30 Aug 2017 06:06:11 +0000 (08:06 +0200)]
arm64: zynqmp: Add missing gpio property to dtsi

All gpio controllers should contain this property.
This property is not checked by the code that's why this issue wasn't
found earlier.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Update the GPU address size
Hyun Kwon [Tue, 22 Aug 2017 01:54:29 +0000 (18:54 -0700)]
arm64: zynqmp: Update the GPU address size

The correct register size is 0x10000, otherwise
it overlaps with other register space.

Signed-off-by: Hyun Kwon <hyun.kwon@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Add clock name for GPU
Madhurkiran Harikrishnan [Fri, 17 Feb 2017 12:14:45 +0000 (04:14 -0800)]
arm64: zynqmp: Add clock name for GPU

This patch will add names to the clocks used by GPU.

Signed-off-by: Madhurkiran Harikrishnan <madhurki@xilinx.com>
Reviewed-by: Hyun Kwon <hyun.kwon@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Label whole PL part as fpga_full region
Nava kishore Manne [Mon, 22 May 2017 06:35:17 +0000 (12:05 +0530)]
arm64: zynqmp: Label whole PL part as fpga_full region

This will simplify dt overlay structure for the whole PL.

Signed-off-by: Nava kishore Manne <navam@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Fix broken architected timer interrupt trigger
Michal Simek [Thu, 9 Feb 2017 13:45:12 +0000 (14:45 +0100)]
arm64: zynqmp: Fix broken architected timer interrupt trigger

Extract from Linux mainline patch:
The ARM architected timer specification mandates that the interrupt
associated with each timer is level triggered (which corresponds to
the "counter >= comparator" condition).

A number of DTs are being remarkably creative, declaring the interrupt
to be edge triggered. A quick look at the TRM for the corresponding ARM
CPUs clearly shows that this is wrong, and I've corrected those.
For non-ARM designs (and in the absence of a publicly available TRM),
I've made them active low as well, which can't be completely wrong
as the GIC cannot disinguish between level low and level high.

The respective maintainers are of course welcome to prove me wrong.

While I was at it, I took the liberty to fix a couple of related issue,
such as some spurious affinity bits on ThunderX, and their complete
absence on ls1043a (both of which seem to be related to copy-pasting
from other DTs).

Acked-by: Duc Dang <dhdang@apm.com>
Acked-by: Carlo Caione <carlo@endlessm.com>
Acked-by: Michal Simek <michal.simek@xilinx.com>
Acked-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Acked-by: Dinh Nguyen <dinguyen@opensource.altera.com>
Acked-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: PM: Add IRQ
Soren Brinkmann [Tue, 22 Nov 2016 00:12:05 +0000 (16:12 -0800)]
arm64: zynqmp: PM: Add IRQ

PM callbacks are delivered to the NS OS. Let the PM driver handle the
IRQ and retrieve callback data from the secure HW.

Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Reduced min-residency time for idle state node
Jolly Shah [Wed, 14 Jun 2017 22:03:52 +0000 (15:03 -0700)]
arm64: zynqmp: Reduced min-residency time for idle state node

Changed min-residence to 10ms(was 100 ms) for cpu-sleep-0.
Tried lower values 5ms and 8ms and it worked fine with Debug Off.
But to accommodate PM Debug On case, 10 ms is required. With this
change, low power idle state is into effect more frequently.
Measured boot time with PM debugs On and Off. No change observed
compared to 100ms value.

Signed-off-by: Jolly Shah <jollys@xilinx.com>
Acked-by: Will Wong <willw@xilinx.com>
Tested-by: Koteswararao Nayudu <kotin@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: DT: Fix typo in idle-states node definition
Jyotheeswar Reddy [Fri, 13 Jan 2017 10:43:39 +0000 (16:13 +0530)]
arm64: zynqmp: DT: Fix typo in idle-states node definition

Fixed a typo in specifying "entry-method"

Signed-off-by: Jyotheeswar Reddy <jyothee@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Update the OPPs for cpu freq
Shubhrajyoti Datta [Mon, 13 Feb 2017 10:28:55 +0000 (15:58 +0530)]
arm64: zynqmp: Update the OPPs for cpu freq

Add operating-points-v2.

Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Add references to cpu nodes
Michal Simek [Mon, 6 Feb 2017 09:09:53 +0000 (10:09 +0100)]
arm64: zynqmp: Add references to cpu nodes

Add missing references to all cpu nodes.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Wire QSPI boot mode for SPL
Michal Simek [Thu, 2 Nov 2017 08:15:05 +0000 (09:15 +0100)]
arm64: zynqmp: Wire QSPI boot mode for SPL

ZynqMP qspi driver is on the way to mainline

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Enable debug uart for zc1751 dc5
Michal Simek [Tue, 31 Oct 2017 13:23:27 +0000 (14:23 +0100)]
arm64: zynqmp: Enable debug uart for zc1751 dc5

Showing uart earlier.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Add new ID for RFSoC
Michal Simek [Fri, 2 Jun 2017 06:08:59 +0000 (08:08 +0200)]
arm64: zynqmp: Add new ID for RFSoC

This ID is available on zc1254.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Add support for CG/EG/EV device detection
Michal Simek [Tue, 22 Aug 2017 12:58:53 +0000 (14:58 +0200)]
arm64: zynqmp: Add support for CG/EG/EV device detection

Version string has unused fields 31:20 which can be used for exporting 9
bits from efuse IPDISABLE regs to recognize eg/cg/ev devices.

These efuse bits are setup for certain devices.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Use u32 type instead of uint32_t
Michal Simek [Mon, 6 Nov 2017 11:55:59 +0000 (12:55 +0100)]
arm64: zynqmp: Use u32 type instead of uint32_t

Warning is reported by checkpatch.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Add SD1 level shifter mode to alternative selection
Michal Simek [Wed, 15 Feb 2017 08:41:53 +0000 (09:41 +0100)]
arm64: zynqmp: Add SD1 level shifter mode to alternative selection

Extend Kconfig to cover SD1 level shifter mode.

Reported-by: Jason Wu <jason.hy.wu@gmail.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Enable config DEFINE_TCM_OCM_MMAP if CONFIG_MP defined
Siva Durga Prasad Paladugu [Tue, 1 Aug 2017 10:54:50 +0000 (16:24 +0530)]
arm64: zynqmp: Enable config DEFINE_TCM_OCM_MMAP if CONFIG_MP defined

This modifies default value of config DEFINE_TCM_OCM_MMAP
to yes if CONFIG_MP is defined MP supports needs OCM and TCM
part of memory map.

Signed-off-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agotools: mkimage: Extend mkimage to also include pmufw
Michal Simek [Fri, 21 Oct 2016 10:58:17 +0000 (12:58 +0200)]
tools: mkimage: Extend mkimage to also include pmufw

The patch is adding external pmufw "Platform Management Unit firmware"
to boot.bin image. Boot.bin is a Xilinx format which bootrom is capable
to read and boot the system. pmufw is copied to the header data section
follows by u-boot-spl.bin. pmufw is consumed by PMU unit (Microblaze)
and SPL runs on a53-0.

This is generated command line when PMUFW_INIT_FILE is setup.

./tools/mkimage -T zynqmpimage -R ./"" -n
./"board/xilinx/zynqmp/pmufw.bin" -d spl/u-boot-spl.bin spl/boot.bin

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
6 years agoarm64: zynqmp: Provide a Kconfig option to use specified memory for MMU table
Siva Durga Prasad Paladugu [Thu, 13 Jul 2017 13:31:11 +0000 (19:01 +0530)]
arm64: zynqmp: Provide a Kconfig option to use specified memory for MMU table

This patch provides a Kconfig option to use specified
memory for MMU table using reserve_mmu platform specific
routine. Here we used TCM space for MMU table.

Signed-off-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: mp: Correct the R5 release sequence
Siva Durga Prasad Paladugu [Tue, 1 Aug 2017 10:54:52 +0000 (16:24 +0530)]
arm64: zynqmp: mp: Correct the R5 release sequence

This patch corrects the R5 release sequence by adding the
below steps.
1. Flush dcache to ensure that image loaded into memory.
2. Keep R5 reset just to ensure R5 in reset.
3. Disable caches before accessing TCM as with out this
   A53 can do speculative and may result in ECC failures
   if TCM's are not initialized. So, it is always better
   to disable dcaches before accessing TCM and enable back.

Signed-off-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Reported-by: John Linn <linnj@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: Remove slcr with mio status pin detection
Michal Simek [Thu, 2 Nov 2017 07:48:48 +0000 (08:48 +0100)]
arm64: zynqmp: Remove slcr with mio status pin detection

This code is not used on this platform and it is not called.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoata: Fix ahci wording
Michal Simek [Thu, 2 Nov 2017 14:53:56 +0000 (15:53 +0100)]
ata: Fix ahci wording

s/achi_/ahci_/g

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
6 years agoarm: zynq: Add mini u-boot configuration for zynq
Michal Simek [Thu, 2 Nov 2017 09:54:48 +0000 (10:54 +0100)]
arm: zynq: Add mini u-boot configuration for zynq

Add configuration files/dtses for mini u-boot configurations which runs
out of OCM.

ram top is calculated from 0 that's why +#define CONFIG_SYS_SDRAM_BASE
0xfffc0000
+#define CONFIG_SYS_SDRAM_SIZE  0x40000
was hardcoded.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
6 years agoarm: zynq: Sort dts names
Michal Simek [Thu, 2 Nov 2017 10:46:43 +0000 (11:46 +0100)]
arm: zynq: Sort dts names

Sort names.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
6 years agoarm: zynq: Move ZYNQ_SERIAL to Kconfig
Michal Simek [Mon, 6 Nov 2017 08:16:05 +0000 (09:16 +0100)]
arm: zynq: Move ZYNQ_SERIAL to Kconfig

Move cadence/zynq serial driver via Kconfig

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
6 years agoarm: zynq: Enable FPGA/FPGA_XILINX via Kconfig
Michal Simek [Fri, 3 Nov 2017 14:53:56 +0000 (15:53 +0100)]
arm: zynq: Enable FPGA/FPGA_XILINX via Kconfig

Enabling fpga via Kconfig.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm: zynq: Return value from fdtdec_setup_memory_banksize directly
Michal Simek [Fri, 3 Nov 2017 14:25:51 +0000 (15:25 +0100)]
arm: zynq: Return value from fdtdec_setup_memory_banksize directly

There is no reason not to return return value from above function.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm: zynq: Add board support for cc108
Michal Simek [Thu, 2 Nov 2017 08:18:42 +0000 (09:18 +0100)]
arm: zynq: Add board support for cc108

cc108 board is wiring uart via PL which is good platform for SPL fpga
support.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
6 years agoarm: zynq: Enable qspi for zc770_xm013
Michal Simek [Thu, 2 Nov 2017 09:46:15 +0000 (10:46 +0100)]
arm: zynq: Enable qspi for zc770_xm013

Enable qspi driver and flashes for this board.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm: zynq: Enable MACRONIX flash for zc702/zc706/zc770 xm010
Michal Simek [Thu, 2 Nov 2017 09:44:48 +0000 (10:44 +0100)]
arm: zynq: Enable MACRONIX flash for zc702/zc706/zc770 xm010

Enable MACRONIX flash for boards with QSPI enabled.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm: zynq: Enable debug console on zc770 xm010 by default
Michal Simek [Thu, 2 Nov 2017 09:40:57 +0000 (10:40 +0100)]
arm: zynq: Enable debug console on zc770 xm010 by default

Enable debug console.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm: zynq: Enable bootz command for Xilinx platforms
Michal Simek [Thu, 2 Nov 2017 09:38:16 +0000 (10:38 +0100)]
arm: zynq: Enable bootz command for Xilinx platforms

bootz command is valid way how to boot Linux kernel. Enable it by
default.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm: zynq: Sync location of DT properties with Linux
Michal Simek [Thu, 2 Nov 2017 08:24:12 +0000 (09:24 +0100)]
arm: zynq: Sync location of DT properties with Linux

This is trival change which only ensures the same location with Linux
kernel.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm: zynq: Remove empty ifdef env structures from config file
Michal Simek [Thu, 2 Nov 2017 08:29:15 +0000 (09:29 +0100)]
arm: zynq: Remove empty ifdef env structures from config file

All these configs were moved to Kconfig that's why this empty ifdef
structure is not needed anymore.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm: zynq: Add device-type property for zynq ethernet phy nodes
Sai Pavan Boddu [Mon, 6 Mar 2017 12:47:19 +0000 (18:17 +0530)]
arm: zynq: Add device-type property for zynq ethernet phy nodes

Mention device-type = "ethernet-phy", as qemu will need this in absence
of compatible.

Signed-off-by: Sai Pavan Boddu <saipava@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm: zynq: Add SCL & SDA GPIO entries for recovery
Chirag Parekh [Tue, 27 Dec 2016 16:37:58 +0000 (22:07 +0530)]
arm: zynq: Add SCL & SDA GPIO entries for recovery

Wire i2c pinmuxing gpio recovery for zc702.

Signed-off-by: Chirag Parekh <chiragp@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agomtd: nand: zynq: Add a config option to use 1st stage bootloader timing
Jeff Westfahl [Mon, 6 Nov 2017 08:34:46 +0000 (00:34 -0800)]
mtd: nand: zynq: Add a config option to use 1st stage bootloader timing

In legacy method, 1st stage bootloader was used to configure the HW
setting such as NAND timing. Hence, adding a config option in Zynq
NAND driver for the compatibility of device that using 1st stage
bootloder instead of U-boot SPL.

This commit is to add config option
CONFIG_NAND_ZYNQ_USE_BOOTLOADER1_TIMINGS that allow NAND driver use
timing values set by the 1st stage bootloader, instead of the hard-coded
values in the Zynq NAND driver.

Signed-off-by: Jeff Westfahl <jeff.westfahl@ni.com>
Signed-off-by: Wilson Lee <wilson.lee@ni.com>
Cc: Joe Hershberger <joe.hershberger@ni.com>
Cc: Keng Soon Cheah <keng.soon.cheah@ni.com>
Cc: Chen Yee Chew <chen.yee.chew@ni.com>
Cc: Siva Durga Prasad Paladugu <siva.durga.paladugu@xilinx.com>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: Scott Wood <oss@buserror.net>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm: zynq: Add support for SYZYGY Hub board
Tom McLeod [Thu, 28 Sep 2017 00:53:26 +0000 (17:53 -0700)]
arm: zynq: Add support for SYZYGY Hub board

Add the Zynq-based SYZYGY Hub board from Opal Kelly. The board
contains a Xilinx Zynq xc7z012s SoC, 1GB DDR3 RAM, and supports
booting from SD.

Signed-off-by: Tom McLeod <tom.mcleod@opalkelly.com>
Cc: Michal Simek <monstr@monstr.eu>
CC: Albert Aribaud <albert.u.boot@aribaud.net>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agoarm64: zynqmp: remove unnecessary logical constraint
Heinrich Schuchardt [Thu, 12 Oct 2017 23:14:27 +0000 (01:14 +0200)]
arm64: zynqmp: remove unnecessary logical constraint

In

if (a || b)
else if (!a)

the constraint (!a) is always true if else is reached and
can be removed.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
6 years agotest: Correct operation when tests pass
Simon Glass [Mon, 27 Nov 2017 03:25:55 +0000 (20:25 -0700)]
test: Correct operation when tests pass

When tests pass an error message is printed because of a variable that is
not initialised. Fix this.

Signed-off-by: Simon Glass <sjg@chromium.org>
6 years agospl: TI: Do not default to SPL_FIT_IMAGE_TINY being enabled
Tom Rini [Tue, 28 Nov 2017 01:07:47 +0000 (20:07 -0500)]
spl: TI: Do not default to SPL_FIT_IMAGE_TINY being enabled

This option prevents booting on am335x_evm at least along with most
likely other platforms.

Fixes: 337bbb629777 ("spl: fit: add SPL_FIT_IMAGE_TINY config to reduce code-size")
Signed-off-by: Tom Rini <trini@konsulko.com>
6 years agoMerge git://www.denx.de/git/u-boot-imx
Tom Rini [Mon, 27 Nov 2017 12:22:11 +0000 (07:22 -0500)]
Merge git://www.denx.de/git/u-boot-imx

Signed-off-by: Tom Rini <trini@konsulko.com>
6 years agoconfigs: icore-rqs: Enable falcon mode
Jagan Teki [Mon, 20 Nov 2017 18:32:18 +0000 (00:02 +0530)]
configs: icore-rqs: Enable falcon mode

Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
6 years agoengicam: imx6q: Return mmc dev 0 for icore
Jagan Teki [Mon, 20 Nov 2017 18:32:17 +0000 (00:02 +0530)]
engicam: imx6q: Return mmc dev 0 for icore

icorem6 has sd on usdhci1 which is devno 0 so return proper
devno from board_mmc_get_env_dev for icorem6 and icorem_6rqs

Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
6 years agoi.MX6: engicam: Add imx6q/imx6ul boards for existing boards
Jagan Teki [Mon, 20 Nov 2017 18:32:16 +0000 (00:02 +0530)]
i.MX6: engicam: Add imx6q/imx6ul boards for existing boards

Add new board names for existing board support
imx6q - icore and icore_rqs boards
imx6ul - geam6ul and isiot boards

Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
6 years agoboard: icore-rqs: Fix mmc get env device
Jagan Teki [Mon, 20 Nov 2017 18:32:15 +0000 (00:02 +0530)]
board: icore-rqs: Fix mmc get env device

As per USDHC boot eFUSE descriptions:
USDHC3 => devno 2
USDHC4 => devno 3

Linux will detect mmc0, mmc1, mmc2 based on the status
"okay" on usdhc so imx6qdl-icore-rqs.dtsi has enabled
usdhc1, usdhc3 and usdhc4.But U-Boot can detect based
on the aliases so add mmc1, mmc2 for usdhc3 and usdhc4
respectively and return the board_mmc_get_env_dev
by subtracting -1

Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
6 years agoi.MX6UL: icore: Add SPL_OF_CONTROL support
Jagan Teki [Mon, 20 Nov 2017 18:32:14 +0000 (00:02 +0530)]
i.MX6UL: icore: Add SPL_OF_CONTROL support

Add OF_CONTROL support for SPL code.

Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
6 years agopinctrl: imx6ul: Fix pinctrl data overlapped with DT area
Jagan Teki [Mon, 20 Nov 2017 18:32:13 +0000 (00:02 +0530)]
pinctrl: imx6ul: Fix pinctrl data overlapped with DT area

before relocation pinctrl data BSS is overlapping DT area,
when .data is using uninitialized global variable,
imx6_pinctrl_soc_info. So assign them flags ZERO_OFFSET_VALID
to prevent BSS overlap

Suggested-by: Lokesh Vutla <lokeshvutla@ti.com>
Reported-by: Jagan Teki <jagan@amarulasolutions.com>
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
6 years agoi.MX6Q: icore: Add SPL_OF_CONTROL support
Jagan Teki [Mon, 20 Nov 2017 18:32:12 +0000 (00:02 +0530)]
i.MX6Q: icore: Add SPL_OF_CONTROL support

Add OF_CONTROL support for SPL code.

Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
6 years agoi.MX6Q: icorem6: Move spl load fit to common/spl
Jagan Teki [Mon, 20 Nov 2017 18:32:11 +0000 (00:02 +0530)]
i.MX6Q: icorem6: Move spl load fit to common/spl

Move spl load fit code into common/spl

Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
6 years agoi.MX6: engicam: Move set_fdt_file to common
Jagan Teki [Mon, 20 Nov 2017 18:32:10 +0000 (00:02 +0530)]
i.MX6: engicam: Move set_fdt_file to common

setenv_fdt_file to common code and set dtb based on
CONFIG_DEFAULT_DEVICE_TREE and cpu_type.

Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
6 years agomx6sxsabresd: Use PARTUUID to specify the rootfs location
Fabio Estevam [Wed, 22 Nov 2017 13:15:28 +0000 (11:15 -0200)]
mx6sxsabresd: Use PARTUUID to specify the rootfs location

mx6sxsabresd can run different kernel versions, such as NXP 4.1 or mainline.

Currently the rootfs location is passed via mmcblk number and the
problem with this approach is that the mmcblk number for the SD
card changes depending on the kernel version.

In order to avoid such issue, use the UUID method to specify the
rootfs location.

Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
Reviewed-by: Stefano Babic <sbabic@denx.de>
Reviewed-by: Lukasz Majewski <lukma@denx.de>
6 years agoimx: Remove boolean parameter from wdog powerdown function
Fabio Estevam [Thu, 23 Nov 2017 12:55:33 +0000 (10:55 -0200)]
imx: Remove boolean parameter from wdog powerdown function

imx_set_wdog_powerdown() is always used to disable the power down
enable bit, so remove the boolean parameter of the function.

It is also a bit strange to write a boolean value into registers,
so this new version makes explicit that we are writing 0.

While at it, rename it to imx_wdog_disable_powerdown().

Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>