On Tue, 18 Dec 2018, Julien Grall wrote:
> Hi Stefano,
>
> On 12/17/18 10:10 PM, Stefano Stabellini wrote:
> > From: "Edgar E. Iglesias" <[email protected]>
> >
> > From: Edgar E. Iglesias <[email protected]>
> >
> > Introduce zynqmp specific defines for the firmware calls.
> > See EEMI:
> > https://www.xilinx.com/support/documentation/user_guides/ug1200-eemi-api.pdf
> >
> > The error codes are described, under XIlPM Error Codes:
> > https://www.xilinx.com/support/documentation/user_guides/ug1137-zynq-ultrascale-mpsoc-swdev.pdf
> >
> > - pm_api_id
> > These are the EEMI function IDs. Unavoidable.
> >
> > - pm_ret_status
> > These are the EEMI return statuses. Unavoidable.
> >
> > Signed-off-by: Edgar E. Iglesias <[email protected]>
> > Signed-off-by: Stefano Stabellini <[email protected]>
> >
> > ---
> >
> > Changes in v7:
> > - introduce EEMI_FID
> > - remove tabs
> >
> > Changes in v6:
> > - improve commit message
> > - remove MM_*, node ids and reset ids
> >
> > Changes in v5:
> > - remove MMIO access related definitions
> >
> > Changes in v4:
> > - define PM_MMIO_SHIFT
> > ---
> > xen/include/asm-arm/platforms/xilinx-zynqmp-eemi.h | 90
> > ++++++++++++++++++++++
> > 1 file changed, 90 insertions(+)
> >
> > diff --git a/xen/include/asm-arm/platforms/xilinx-zynqmp-eemi.h
> > b/xen/include/asm-arm/platforms/xilinx-zynqmp-eemi.h
> > index 43cefb5..9779b6a 100644
> > --- a/xen/include/asm-arm/platforms/xilinx-zynqmp-eemi.h
> > +++ b/xen/include/asm-arm/platforms/xilinx-zynqmp-eemi.h
> > @@ -15,6 +15,96 @@
> > #define __ASM_ASM_PLATFORMS_ZYNQMP_H
> > #include <asm/processor.h>
> > +#include <asm/smccc.h>
> > +
> > +/* Service calls. */
> > +#define PM_GET_TRUSTZONE_VERSION 0xa03
>
> Why does not this belong to the pm_api_id below?
You are right, I'll move it below into the enum.
> > +
> > +/* SMC function IDs for SiP Service queries */
> > +#define ZYNQMP_SIP_SVC_CALL_COUNT 0xff00
> > +#define ZYNQMP_SIP_SVC_UID 0xff01
> > +#define ZYNQMP_SIP_SVC_VERSION 0xff03 > +
> > +#define EEMI_FID(fid) ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, \
> > + ARM_SMCCC_CONV_64, \
> > + ARM_SMCCC_OWNER_SIP, \
> > + fid)
> > +
> > +enum pm_api_id {
> > + /* Miscellaneous API functions: */
> > + PM_GET_API_VERSION = 1, /* Do not change or move */
> > + PM_SET_CONFIGURATION,
> > + PM_GET_NODE_STATUS,
> > + PM_GET_OP_CHARACTERISTIC,
> > + PM_REGISTER_NOTIFIER,
> > + /* API for suspending of PUs: */
> > + PM_REQ_SUSPEND,
> > + PM_SELF_SUSPEND,
> > + PM_FORCE_POWERDOWN,
> > + PM_ABORT_SUSPEND,
> > + PM_REQ_WAKEUP,
> > + PM_SET_WAKEUP_SOURCE,
> > + PM_SYSTEM_SHUTDOWN,
> > + /* API for managing PM slaves: */
> > + PM_REQ_NODE,
> > + PM_RELEASE_NODE,
> > + PM_SET_REQUIREMENT,
> > + PM_SET_MAX_LATENCY,
> > + /* Direct control API functions: */
> > + PM_RESET_ASSERT,
> > + PM_RESET_GET_STATUS,
> > + PM_MMIO_WRITE,
> > + PM_MMIO_READ,
> > + PM_INIT,
> > + PM_FPGA_LOAD,
> > + PM_FPGA_GET_STATUS,
> > + PM_GET_CHIPID,
> > + /* ID 25 is been used by U-boot to process secure boot images */
> > + /* Secure library generic API functions */
> > + PM_SECURE_SHA = 26,
> > + PM_SECURE_RSA,
> > + /* Pin control API functions */
> > + PM_PINCTRL_REQUEST,
> > + PM_PINCTRL_RELEASE,
> > + PM_PINCTRL_GET_FUNCTION,
> > + PM_PINCTRL_SET_FUNCTION,
> > + PM_PINCTRL_CONFIG_PARAM_GET,
> > + PM_PINCTRL_CONFIG_PARAM_SET,
> > + /* PM IOCTL API */
> > + PM_IOCTL,
> > + /* API to query information from firmware */
> > + PM_QUERY_DATA,
> > + /* Clock control API functions */
> > + PM_CLOCK_ENABLE,
> > + PM_CLOCK_DISABLE,
> > + PM_CLOCK_GETSTATE,
> > + PM_CLOCK_SETDIVIDER,
> > + PM_CLOCK_GETDIVIDER,
> > + PM_CLOCK_SETRATE,
> > + PM_CLOCK_GETRATE,
> > + PM_CLOCK_SETPARENT,
> > + PM_CLOCK_GETPARENT,
> > + PM_API_MAX
> > +};
> > +
> > +/**
> > + * @XST_PM_SUCCESS: Success
> > + * @XST_PM_INTERNAL: Unexpected error
> > + * @XST_PM_CONFLICT: Conflicting requirements
> > + * @XST_PM_NO_ACCESS: Access rights violation
> > + * @XST_PM_INVALID_NODE: Does not apply to node passed as argument
> > + * @XST_PM_DOUBLE_REQ: Duplicate request
> > + * @XST_PM_ABORT_SUSPEND: Target has aborted suspend
> > + */
> > +enum pm_ret_status {
> > + XST_PM_SUCCESS = 0,
> > + XST_PM_INTERNAL = 2000,
> > + XST_PM_CONFLICT,
> > + XST_PM_NO_ACCESS,
> > + XST_PM_INVALID_NODE,
> > + XST_PM_DOUBLE_REQ,
> > + XST_PM_ABORT_SUSPEND,
> > +};
> > extern bool zynqmp_eemi(struct cpu_user_regs *regs);
_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xenproject.org/mailman/listinfo/xen-devel