[PATCH 1/6] firmware: xilinx: add register notifier in zynqmp firmware

Abhyuday Godhasara agodhasa at xilinx.com
Fri Jun 25 06:37:18 PDT 2021


Hi,

> -----Original Message-----
> From: Michal Simek <michal.simek at xilinx.com>
> Sent: Monday, June 21, 2021 5:16 PM
> To: Abhyuday Godhasara <agodhasa at xilinx.com>; Michal Simek
> <michals at xilinx.com>
> Cc: Rajan Vaja <RAJANV at xilinx.com>; Manish Narani <MNARANI at xilinx.com>;
> zou_wei at huawei.com; Amit Sunil Dhamne <amitsuni at xlnx.xilinx.com>; Sai
> Krishna Potthuri <lakshmis at xilinx.com>; Jiaying Liang <jliang at xilinx.com>;
> linux-kernel at vger.kernel.org; linux-arm-kernel at lists.infradead.org; Tejas Patel
> <tejasp at xlnx.xilinx.com>
> Subject: Re: [PATCH 1/6] firmware: xilinx: add register notifier in zynqmp
> firmware
> 
> 
> 
> On 5/28/21 5:59 PM, Abhyuday Godhasara wrote:
> > In zynqmp-firmware, register notifier is not supported, add support of
> > register notifier in zynqmp-firmware.
> >
> > Signed-off-by: Tejas Patel <tejas.patel at xilinx.com>
> > Signed-off-by: Abhyuday Godhasara <abhyuday.godhasara at xilinx.com>
> > ---
> >  drivers/firmware/xilinx/zynqmp-debug.c |  2 +-
> >  drivers/firmware/xilinx/zynqmp.c       | 23 +++++++++++++++++++++++
> >  include/linux/firmware/xlnx-zynqmp.h   | 11 ++++++++++-
> >  3 files changed, 34 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/firmware/xilinx/zynqmp-debug.c
> > b/drivers/firmware/xilinx/zynqmp-debug.c
> > index 99606b3..7841cb7 100644
> > --- a/drivers/firmware/xilinx/zynqmp-debug.c
> > +++ b/drivers/firmware/xilinx/zynqmp-debug.c
> > @@ -2,7 +2,7 @@
> >  /*
> >   * Xilinx Zynq MPSoC Firmware layer for debugfs APIs
> >   *
> > - *  Copyright (C) 2014-2018 Xilinx, Inc.
> > + *  Copyright (C) 2014-2021 Xilinx, Inc.
> 
> no reason for this change when you don't change this file.
[Abhyuday] I will remove this in next patch series.

> 
> >   *
> >   *  Michal Simek <michal.simek at xilinx.com>
> >   *  Davorin Mista <davorin.mista at aggios.com> diff --git
> > a/drivers/firmware/xilinx/zynqmp.c b/drivers/firmware/xilinx/zynqmp.c
> > index 15b13832..33f190e 100644
> > --- a/drivers/firmware/xilinx/zynqmp.c
> > +++ b/drivers/firmware/xilinx/zynqmp.c
> > @@ -1037,6 +1037,29 @@ int zynqmp_pm_aes_engine(const u64 address,
> u32
> > *out)  EXPORT_SYMBOL_GPL(zynqmp_pm_aes_engine);
> >
> >  /**
> > + * zynqmp_pm_register_notifier() - PM API for register a subsystem
> > + *                                to be notified about specific
> > + *                                event/error.
> > + * @node:	Node ID to which the event is related.
> > + * @event:	Event Mask of Error events for which wants to get notified.
> > + * @wake:	Wake subsystem upon capturing the event if value 1
> > + * @enable:	Enable the registration for value 1, disable for value 0
> > + *
> > + * This function is used to register/un-register for particular
> > + node-event
> > + * combination in firmware.
> > + *
> > + * Return: Returns status, either success or error+reason */
> > +
> > +int zynqmp_pm_register_notifier(const u32 node, const u32 event,
> > +				const u32 wake, const u32 enable) {
> > +	return zynqmp_pm_invoke_fn(PM_REGISTER_NOTIFIER, node, event,
> > +				   wake, enable, NULL);
> > +}
> > +EXPORT_SYMBOL_GPL(zynqmp_pm_register_notifier);
> > +
> > +/**
> >   * zynqmp_pm_system_shutdown - PM call to request a system shutdown or
> restart
> >   * @type:	Shutdown or restart? 0 for shutdown, 1 for restart
> >   * @subtype:	Specifies which system should be restarted or shut down
> > diff --git a/include/linux/firmware/xlnx-zynqmp.h
> > b/include/linux/firmware/xlnx-zynqmp.h
> > index 9d1a5c1..6557832 100644
> > --- a/include/linux/firmware/xlnx-zynqmp.h
> > +++ b/include/linux/firmware/xlnx-zynqmp.h
> > @@ -2,7 +2,7 @@
> >  /*
> >   * Xilinx Zynq MPSoC Firmware layer
> >   *
> > - *  Copyright (C) 2014-2019 Xilinx
> > + *  Copyright (C) 2014-2021 Xilinx
> >   *
> >   *  Michal Simek <michal.simek at xilinx.com>
> >   *  Davorin Mista <davorin.mista at aggios.com> @@ -62,6 +62,7 @@
> >
> >  enum pm_api_id {
> >  	PM_GET_API_VERSION = 1,
> > +	PM_REGISTER_NOTIFIER = 5,
> >  	PM_SYSTEM_SHUTDOWN = 12,
> >  	PM_REQUEST_NODE = 13,
> >  	PM_RELEASE_NODE = 14,
> > @@ -411,6 +412,8 @@ int zynqmp_pm_pinctrl_get_config(const u32 pin,
> const u32 param,
> >  				 u32 *value);
> >  int zynqmp_pm_pinctrl_set_config(const u32 pin, const u32 param,
> >  				 u32 value);
> > +int zynqmp_pm_register_notifier(const u32 node, const u32 event,
> > +				const u32 wake, const u32 enable);
> >  #else
> >  static inline int zynqmp_pm_get_api_version(u32 *version)  { @@
> > -622,6 +625,12 @@ static inline int zynqmp_pm_pinctrl_set_config(const
> > u32 pin, const u32 param,  {
> >  	return -ENODEV;
> >  }
> > +
> > +static inline int zynqmp_pm_register_notifier(const u32 node, const u32
> event,
> > +					      const u32 wake, const u32 enable)
> {
> > +	return -ENODEV;
> > +}
> >  #endif
> >
> >  #endif /* __FIRMWARE_ZYNQMP_H__ */
> >
> 
> M
Thanks,
Abhyuday


More information about the linux-arm-kernel mailing list