Messages in this thread | | | Subject | Re: [PATCH v2 1/3] firmware: xilinx: Add zynqmp_pm_get_chipid() API | From | Srinivas Kandagatla <> | Date | Sun, 3 Feb 2019 08:50:30 +0000 |
| |
Hi Kishore,
I need ack for this patch from Michal Simek to take this via nvmem tree.
thanks, srini
On 04/02/2019 07:09, Nava kishore Manne wrote: > This patch adds a new API to provide access to the > hardware related data like soc revision, IDCODE... etc. > > Signed-off-by: Nava kishore Manne <nava.manne@xilinx.com> > --- > Changes for v2: > -None. > Changes for v1: > -None. > > Changes for RFC-V3: > -corrected typo error in commit msg. > > Changes for RFC-v2: > -New Patch. > > drivers/firmware/xilinx/zynqmp.c | 24 ++++++++++++++++++++++++ > include/linux/firmware/xlnx-zynqmp.h | 2 ++ > 2 files changed, 26 insertions(+) > > diff --git a/drivers/firmware/xilinx/zynqmp.c b/drivers/firmware/xilinx/zynqmp.c > index 9a1c72a9280f..af2a209fc2da 100644 > --- a/drivers/firmware/xilinx/zynqmp.c > +++ b/drivers/firmware/xilinx/zynqmp.c > @@ -186,6 +186,29 @@ static int zynqmp_pm_get_api_version(u32 *version) > return ret; > } > > +/** > + * zynqmp_pm_get_chipid - Get silicon ID registers > + * @idcode: IDCODE register > + * @version: version register > + * > + * Return: Returns the status of the operation and the idcode and version > + * registers in @idcode and @version. > + */ > +static int zynqmp_pm_get_chipid(u32 *idcode, u32 *version) > +{ > + u32 ret_payload[PAYLOAD_ARG_CNT]; > + int ret; > + > + if (!idcode || !version) > + return -EINVAL; > + > + ret = zynqmp_pm_invoke_fn(PM_GET_CHIPID, 0, 0, 0, 0, ret_payload); > + *idcode = ret_payload[1]; > + *version = ret_payload[2]; > + > + return ret; > +} > + > /** > * zynqmp_pm_get_trustzone_version() - Get secure trustzone firmware version > * @version: Returned version value > @@ -471,6 +494,7 @@ static int zynqmp_pm_ioctl(u32 node_id, u32 ioctl_id, u32 arg1, u32 arg2, > > static const struct zynqmp_eemi_ops eemi_ops = { > .get_api_version = zynqmp_pm_get_api_version, > + .get_chipid = zynqmp_pm_get_chipid, > .query_data = zynqmp_pm_query_data, > .clock_enable = zynqmp_pm_clock_enable, > .clock_disable = zynqmp_pm_clock_disable, > diff --git a/include/linux/firmware/xlnx-zynqmp.h b/include/linux/firmware/xlnx-zynqmp.h > index 3c3c28eff56a..c435f4b35adf 100644 > --- a/include/linux/firmware/xlnx-zynqmp.h > +++ b/include/linux/firmware/xlnx-zynqmp.h > @@ -34,6 +34,7 @@ > > enum pm_api_id { > PM_GET_API_VERSION = 1, > + PM_GET_CHIPID = 22, > PM_IOCTL = 34, > PM_QUERY_DATA, > PM_CLOCK_ENABLE, > @@ -91,6 +92,7 @@ struct zynqmp_pm_query_data { > > struct zynqmp_eemi_ops { > int (*get_api_version)(u32 *version); > + int (*get_chipid)(u32 *idcode, u32 *version); > int (*query_data)(struct zynqmp_pm_query_data qdata, u32 *out); > int (*clock_enable)(u32 clock_id); > int (*clock_disable)(u32 clock_id); >
| |