All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peng Fan <peng.fan@nxp.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH V2 08/32] misc: imx8: add scfw api impementation
Date: Wed, 18 Jul 2018 09:08:21 +0000	[thread overview]
Message-ID: <HE1PR04MB3004915691F8AE9F58E52D6988530@HE1PR04MB3004.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <bbcf5cc3-9d16-d1a5-9b9d-4c331db4dd9f@ti.com>

Hi Lokesh,

> -----Original Message-----
> From: Lokesh Vutla [mailto:lokeshvutla at ti.com]
> Sent: 2018年7月18日 16:54
> To: Peng Fan <peng.fan@nxp.com>; sbabic at denx.de; Fabio Estevam
> <fabio.estevam@nxp.com>
> Cc: u-boot at lists.denx.de; dl-linux-imx <linux-imx@nxp.com>
> Subject: Re: [U-Boot] [PATCH V2 08/32] misc: imx8: add scfw api impementation
> 
> 
> 
> On Wednesday 18 July 2018 07:05 AM, Peng Fan wrote:
> > Add clk/misc/pad/pm/rm scfw api implementaion for different drivers to
> > invoke. The low level code is using misc_call to invoke imx8_scu
> > driver.
> 
> Hmm.. there should be abstraction of all API specification under
> drivers/firmware and exported as firmware ops. And respective pm/clk/pad
> drivers should call the firmware ops to do respective job.
> 
> Ideally this is how the sw architecture should looks like[1]. Atleast this is how
> kernel follows. This way clock framework, PM framework can be used and DT
> can be same as kernel.

I understand.

The misc driver in this patch holding the protocol and communication part.
This patch is only the protocol part.

Other drivers will invoke misc_call to get service from scu.

I do not want add another mailbox driver here. Also the uboot firmware uclass
only has psci there.

Thanks,
Peng.

> 
> May be I am missing something, but why can the drivers in $patch follow the
> same convention?
> 
> [1]
> https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpastebi
> n.ubuntu.com%2Fp%2FJsxYx4QBZD%2F&amp;data=02%7C01%7Cpeng.fan%40n
> xp.com%7Ce1f24699457a4e4a89d108d5ec8c3236%7C686ea1d3bc2b4c6fa92cd
> 99c5c301635%7C0%7C1%7C636675009253601516&amp;sdata=J283xdFj9Q8b6
> BEhea1tcp923envUkAMgRpacHC362I%3D&amp;reserved=0
> 
> Thanks and regards,
> Lokesh
> 
> >
> > Signed-off-by: Peng Fan <peng.fan@nxp.com>
> > Cc: Stefano Babic <sbabic@denx.de>
> > ---
> >  arch/arm/include/asm/arch-imx8/sci/sci.h | 31 +++++++++-
> >  drivers/misc/imx8/Makefile               |  2 +-
> >  drivers/misc/imx8/clk.c                  | 93
> ++++++++++++++++++++++++++++++
> >  drivers/misc/imx8/misc.c                 | 88
> +++++++++++++++++++++++++++++
> >  drivers/misc/imx8/pad.c                  | 39 +++++++++++++
> >  drivers/misc/imx8/pm.c                   | 38 +++++++++++++
> >  drivers/misc/imx8/rm.c                   | 97
> ++++++++++++++++++++++++++++++++
> >  7 files changed, 386 insertions(+), 2 deletions(-)  create mode
> > 100644 drivers/misc/imx8/clk.c  create mode 100644
> > drivers/misc/imx8/misc.c  create mode 100644 drivers/misc/imx8/pad.c
> > create mode 100644 drivers/misc/imx8/pm.c  create mode 100644
> > drivers/misc/imx8/rm.c
> >
> > diff --git a/arch/arm/include/asm/arch-imx8/sci/sci.h
> > b/arch/arm/include/asm/arch-imx8/sci/sci.h
> > index b7280aee05..4704ba9699 100644
> > --- a/arch/arm/include/asm/arch-imx8/sci/sci.h
> > +++ b/arch/arm/include/asm/arch-imx8/sci/sci.h
> > @@ -46,7 +46,8 @@ static inline int sc_err_to_linux(sc_err_t err)
> >  		ret = -EIO;
> >  		break;
> >  	default:
> > -		panic("Invalid sc_err_t value\n");
> > +		ret = 0;
> > +		break;
> >  	}
> >
> >  	debug("%s %d %d\n", __func__, err, ret); @@ -54,4 +55,32 @@ static
> > inline int sc_err_to_linux(sc_err_t err)
> >  	return ret;
> >  }
> >
> > +/* PM API*/
> > +int sc_pm_set_resource_power_mode(sc_ipc_t ipc, sc_rsrc_t resource,
> > +				  sc_pm_power_mode_t mode);
> > +int sc_pm_set_clock_rate(sc_ipc_t ipc, sc_rsrc_t resource, sc_pm_clk_t clk,
> > +			 sc_pm_clock_rate_t *rate);
> > +int sc_pm_get_clock_rate(sc_ipc_t ipc, sc_rsrc_t resource, sc_pm_clk_t clk,
> > +			 sc_pm_clock_rate_t *rate);
> > +int sc_pm_set_clock_rate(sc_ipc_t ipc, sc_rsrc_t resource, sc_pm_clk_t clk,
> > +			 sc_pm_clock_rate_t *rate);
> > +int sc_pm_get_clock_rate(sc_ipc_t ipc, sc_rsrc_t resource, sc_pm_clk_t clk,
> > +			 sc_pm_clock_rate_t *rate);
> > +int sc_pm_clock_enable(sc_ipc_t ipc, sc_rsrc_t resource, sc_pm_clk_t clk,
> > +		       sc_bool_t enable, sc_bool_t autog);
> > +
> > +/* MISC API */
> > +int sc_misc_get_control(sc_ipc_t ipc, sc_rsrc_t resource, sc_ctrl_t ctrl,
> > +			u32 *val);
> > +void sc_misc_get_boot_dev(sc_ipc_t ipc, sc_rsrc_t *boot_dev); void
> > +sc_misc_boot_status(sc_ipc_t ipc, sc_misc_boot_status_t status);
> > +
> > +/* RM API */
> > +sc_bool_t sc_rm_is_memreg_owned(sc_ipc_t ipc, sc_rm_mr_t mr); int
> > +sc_rm_get_memreg_info(sc_ipc_t ipc, sc_rm_mr_t mr, sc_faddr_t
> *addr_start,
> > +			  sc_faddr_t *addr_end);
> > +sc_bool_t sc_rm_is_resource_owned(sc_ipc_t ipc, sc_rsrc_t resource);
> > +
> > +/* PAD API */
> > +int sc_pad_set(sc_ipc_t ipc, sc_pad_t pad, u32 val);
> >  #endif
> > diff --git a/drivers/misc/imx8/Makefile b/drivers/misc/imx8/Makefile
> > index 3395340d22..4fc08ade50 100644
> > --- a/drivers/misc/imx8/Makefile
> > +++ b/drivers/misc/imx8/Makefile
> > @@ -1,3 +1,3 @@
> >  # SPDX-License-Identifier: GPL-2.0+
> >
> > -obj-y += scu.o
> > +obj-y += pm.o clk.o misc.o pad.o rm.o scu.o
> > diff --git a/drivers/misc/imx8/clk.c b/drivers/misc/imx8/clk.c new
> > file mode 100644 index 0000000000..618b2c386f
> > --- /dev/null
> > +++ b/drivers/misc/imx8/clk.c
> > @@ -0,0 +1,93 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * Copyright 2018 NXP
> > + *
> > + * Peng Fan <peng.fan@nxp.com>
> > + */
> > +
> > +#include <common.h>
> > +#include <asm/io.h>
> > +#include <dm.h>
> > +#include <asm/arch/sci/sci.h>
> > +#include <misc.h>
> > +
> > +DECLARE_GLOBAL_DATA_PTR;
> > +
> > +int sc_pm_set_clock_rate(sc_ipc_t ipc, sc_rsrc_t resource, sc_pm_clk_t clk,
> > +			 sc_pm_clock_rate_t *rate)
> > +{
> > +	struct udevice *dev = gd->arch.scu_dev;
> > +	int size = sizeof(sc_rpc_msg_t);
> > +	sc_rpc_msg_t msg;
> > +	int ret;
> > +
> > +	RPC_VER(&msg) = SC_RPC_VERSION;
> > +	RPC_SVC(&msg) = (u8)SC_RPC_SVC_PM;
> > +	RPC_FUNC(&msg) = (u8)PM_FUNC_SET_CLOCK_RATE;
> > +	RPC_U32(&msg, 0U) = *(u32 *)rate;
> > +	RPC_U16(&msg, 4U) = (u16)resource;
> > +	RPC_U8(&msg, 6U) = (u8)clk;
> > +	RPC_SIZE(&msg) = 3U;
> > +
> > +	ret = misc_call(dev, SC_FALSE, &msg, size, &msg, size);
> > +	if (ret)
> > +		printf("%s: rate:%u resource:%u: clk:%u res:%d\n",
> > +		       __func__, *rate, resource, clk, RPC_R8(&msg));
> > +
> > +	*rate = RPC_U32(&msg, 0U);
> > +
> > +	return ret;
> > +}
> > +
> > +int sc_pm_get_clock_rate(sc_ipc_t ipc, sc_rsrc_t resource, sc_pm_clk_t clk,
> > +			 sc_pm_clock_rate_t *rate)
> > +{
> > +	struct udevice *dev = gd->arch.scu_dev;
> > +	int size = sizeof(sc_rpc_msg_t);
> > +	sc_rpc_msg_t msg;
> > +	int ret;
> > +
> > +	RPC_VER(&msg) = SC_RPC_VERSION;
> > +	RPC_SVC(&msg) = (u8)SC_RPC_SVC_PM;
> > +	RPC_FUNC(&msg) = (u8)PM_FUNC_GET_CLOCK_RATE;
> > +	RPC_U16(&msg, 0U) = (u16)resource;
> > +	RPC_U8(&msg, 2U) = (u8)clk;
> > +	RPC_SIZE(&msg) = 2U;
> > +
> > +	ret = misc_call(dev, SC_FALSE, &msg, size, &msg, size);
> > +	if (ret) {
> > +		printf("%s: resource:%d clk:%d: res:%d\n",
> > +		       __func__, resource, clk, RPC_R8(&msg));
> > +		return ret;
> > +	}
> > +
> > +	if (rate)
> > +		*rate = RPC_U32(&msg, 0U);
> > +
> > +	return 0;
> > +}
> > +
> > +int sc_pm_clock_enable(sc_ipc_t ipc, sc_rsrc_t resource, sc_pm_clk_t clk,
> > +		       sc_bool_t enable, sc_bool_t autog) {
> > +	struct udevice *dev = gd->arch.scu_dev;
> > +	int size = sizeof(sc_rpc_msg_t);
> > +	sc_rpc_msg_t msg;
> > +	int ret;
> > +
> > +	RPC_VER(&msg) = SC_RPC_VERSION;
> > +	RPC_SVC(&msg) = (u8)SC_RPC_SVC_PM;
> > +	RPC_FUNC(&msg) = (u8)PM_FUNC_CLOCK_ENABLE;
> > +	RPC_U16(&msg, 0U) = (u16)resource;
> > +	RPC_U8(&msg, 2U) = (u8)clk;
> > +	RPC_U8(&msg, 3U) = (u8)enable;
> > +	RPC_U8(&msg, 4U) = (u8)autog;
> > +	RPC_SIZE(&msg) = 3U;
> > +
> > +	ret = misc_call(dev, SC_FALSE, &msg, size, &msg, size);
> > +	if (ret)
> > +		printf("%s: resource:%d clk:%d: enable:%d autog: %d, res:%d\n",
> > +		       __func__, resource, clk, enable, autog, RPC_R8(&msg));
> > +
> > +	return ret;
> > +}
> > diff --git a/drivers/misc/imx8/misc.c b/drivers/misc/imx8/misc.c new
> > file mode 100644 index 0000000000..7557384b64
> > --- /dev/null
> > +++ b/drivers/misc/imx8/misc.c
> > @@ -0,0 +1,88 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * Copyright 2018 NXP
> > + *
> > + * Peng Fan <peng.fan@nxp.com>
> > + */
> > +
> > +#include <common.h>
> > +#include <asm/io.h>
> > +#include <dm.h>
> > +#include <asm/arch/sci/sci.h>
> > +#include <misc.h>
> > +
> > +DECLARE_GLOBAL_DATA_PTR;
> > +
> > +int sc_misc_get_control(sc_ipc_t ipc, sc_rsrc_t resource, sc_ctrl_t ctrl,
> > +			u32 *val)
> > +{
> > +	struct udevice *dev = gd->arch.scu_dev;
> > +	int size = sizeof(sc_rpc_msg_t);
> > +	struct sc_rpc_msg_s msg;
> > +	int ret;
> > +
> > +	if (!dev)
> > +		hang();
> > +
> > +	RPC_VER(&msg) = SC_RPC_VERSION;
> > +	RPC_SVC(&msg) = (u8)SC_RPC_SVC_MISC;
> > +	RPC_FUNC(&msg) = (u8)MISC_FUNC_GET_CONTROL;
> > +	RPC_U32(&msg, 0U) = (u32)ctrl;
> > +	RPC_U16(&msg, 4U) = (u16)resource;
> > +	RPC_SIZE(&msg) = 3U;
> > +
> > +	ret = misc_call(dev, SC_FALSE, &msg, size, &msg, size);
> > +	if (ret)
> > +		printf("%s: ctrl:%d resource:%d: res:%d\n",
> > +		       __func__, ctrl, resource, RPC_R8(&msg));
> > +
> > +	if (!val)
> > +		*val = RPC_U32(&msg, 0U);
> > +
> > +	return ret;
> > +}
> > +
> > +void sc_misc_get_boot_dev(sc_ipc_t ipc, sc_rsrc_t *boot_dev) {
> > +	struct udevice *dev = gd->arch.scu_dev;
> > +	int size = sizeof(sc_rpc_msg_t);
> > +	struct sc_rpc_msg_s msg;
> > +	int ret;
> > +
> > +	if (!dev)
> > +		hang();
> > +
> > +	RPC_VER(&msg) = SC_RPC_VERSION;
> > +	RPC_SVC(&msg) = (u8)SC_RPC_SVC_MISC;
> > +	RPC_FUNC(&msg) = (u8)MISC_FUNC_GET_BOOT_DEV;
> > +	RPC_SIZE(&msg) = 1U;
> > +
> > +	ret = misc_call(dev, SC_FALSE, &msg, size, &msg, size);
> > +	if (ret)
> > +		printf("%s: res:%d\n", __func__, RPC_R8(&msg));
> > +
> > +	if (!boot_dev)
> > +		*boot_dev = RPC_U16(&msg, 0U);
> > +}
> > +
> > +void sc_misc_boot_status(sc_ipc_t ipc, sc_misc_boot_status_t status)
> > +{
> > +	struct udevice *dev = gd->arch.scu_dev;
> > +	int size = sizeof(sc_rpc_msg_t);
> > +	struct sc_rpc_msg_s msg;
> > +	int ret;
> > +
> > +	if (!dev)
> > +		hang();
> > +
> > +	RPC_VER(&msg) = SC_RPC_VERSION;
> > +	RPC_SVC(&msg) = (u8)SC_RPC_SVC_MISC;
> > +	RPC_FUNC(&msg) = (u8)MISC_FUNC_BOOT_STATUS;
> > +	RPC_U8(&msg, 0U) = (u8)status;
> > +	RPC_SIZE(&msg) = 2U;
> > +
> > +	ret = misc_call(dev, SC_TRUE, &msg, size, &msg, size);
> > +	if (ret)
> > +		printf("%s: status:%d res:%d\n",
> > +		       __func__, status, RPC_R8(&msg)); }
> > diff --git a/drivers/misc/imx8/pad.c b/drivers/misc/imx8/pad.c new
> > file mode 100644 index 0000000000..06cbdc90bf
> > --- /dev/null
> > +++ b/drivers/misc/imx8/pad.c
> > @@ -0,0 +1,39 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * Copyright 2018 NXP
> > + *
> > + * Peng Fan <peng.fan@nxp.com>
> > + */
> > +
> > +#include <common.h>
> > +#include <asm/io.h>
> > +#include <dm.h>
> > +#include <asm/arch/sci/sci.h>
> > +#include <misc.h>
> > +
> > +DECLARE_GLOBAL_DATA_PTR;
> > +
> > +int sc_pad_set(sc_ipc_t ipc, sc_pad_t pad, u32 val) {
> > +	struct udevice *dev = gd->arch.scu_dev;
> > +	int size = sizeof(sc_rpc_msg_t);
> > +	struct sc_rpc_msg_s msg;
> > +	int ret;
> > +
> > +	if (!dev)
> > +		hang();
> > +
> > +	RPC_VER(&msg) = SC_RPC_VERSION;
> > +	RPC_SVC(&msg) = (u8)SC_RPC_SVC_PAD;
> > +	RPC_FUNC(&msg) = (u8)PAD_FUNC_SET;
> > +	RPC_U32(&msg, 0U) = (u32)val;
> > +	RPC_U16(&msg, 4U) = (u16)pad;
> > +	RPC_SIZE(&msg) = 3U;
> > +
> > +	ret = misc_call(dev, SC_FALSE, &msg, size, &msg, size);
> > +	if (ret)
> > +		printf("%s: val:%d pad:%d: res:%d\n",
> > +		       __func__, val, pad, RPC_R8(&msg));
> > +
> > +	return ret;
> > +}
> > diff --git a/drivers/misc/imx8/pm.c b/drivers/misc/imx8/pm.c new file
> > mode 100644 index 0000000000..c857138e36
> > --- /dev/null
> > +++ b/drivers/misc/imx8/pm.c
> > @@ -0,0 +1,38 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * Copyright 2018 NXP
> > + *
> > + * Peng Fan <peng.fan@nxp.com>
> > + */
> > +
> > +#include <common.h>
> > +#include <asm/io.h>
> > +#include <dm.h>
> > +#include <asm/arch/sci/sci.h>
> > +#include <misc.h>
> > +
> > +int sc_pm_set_resource_power_mode(sc_ipc_t ipc, sc_rsrc_t resource,
> > +				  sc_pm_power_mode_t mode)
> > +{
> > +	struct udevice *dev = gd->arch.scu_dev;
> > +	int size = sizeof(sc_rpc_msg_t);
> > +	struct sc_rpc_msg_s msg;
> > +	int ret;
> > +
> > +	if (!dev)
> > +		hang();
> > +
> > +	RPC_VER(&msg) = SC_RPC_VERSION;
> > +	RPC_SVC(&msg) = (u8)SC_RPC_SVC_PM;
> > +	RPC_FUNC(&msg) = (u8)PM_FUNC_SET_RESOURCE_POWER_MODE;
> > +	RPC_U16(&msg, 0U) = (u16)resource;
> > +	RPC_U8(&msg, 2U) = (u8)mode;
> > +	RPC_SIZE(&msg) = 2U;
> > +
> > +	ret = misc_call(dev, SC_FALSE, &msg, size, &msg, size);
> > +	if (ret)
> > +		printf("%s: resource:%d mode:%d: res:%d\n",
> > +		       __func__, resource, mode, RPC_R8(&msg));
> > +
> > +	return ret;
> > +}
> > diff --git a/drivers/misc/imx8/rm.c b/drivers/misc/imx8/rm.c new file
> > mode 100644 index 0000000000..33de1f525b
> > --- /dev/null
> > +++ b/drivers/misc/imx8/rm.c
> > @@ -0,0 +1,97 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * Copyright 2018 NXP
> > + *
> > + * Peng Fan <peng.fan@nxp.com>
> > + */
> > +
> > +#include <common.h>
> > +#include <asm/io.h>
> > +#include <dm.h>
> > +#include <asm/arch/sci/sci.h>
> > +#include <misc.h>
> > +
> > +DECLARE_GLOBAL_DATA_PTR;
> > +
> > +sc_bool_t sc_rm_is_memreg_owned(sc_ipc_t ipc, sc_rm_mr_t mr) {
> > +	struct udevice *dev = gd->arch.scu_dev;
> > +	int size = sizeof(sc_rpc_msg_t);
> > +	struct sc_rpc_msg_s msg;
> > +	sc_err_t result;
> > +
> > +	if (!dev)
> > +		hang();
> > +
> > +	RPC_VER(&msg) = SC_RPC_VERSION;
> > +	RPC_SVC(&msg) = (u8)SC_RPC_SVC_RM;
> > +	RPC_FUNC(&msg) = (u8)RM_FUNC_IS_MEMREG_OWNED;
> > +	RPC_U8(&msg, 0U) = (u8)mr;
> > +	RPC_SIZE(&msg) = 2U;
> > +
> > +	misc_call(dev, SC_FALSE, &msg, size, &msg, size);
> > +
> > +	result = RPC_R8(&msg);
> > +
> > +	if (result != 0 && result != 1)
> > +		printf("%s: mr:%d res:%d\n", __func__, mr, RPC_R8(&msg));
> > +
> > +	return (sc_bool_t)result;
> > +}
> > +
> > +int sc_rm_get_memreg_info(sc_ipc_t ipc, sc_rm_mr_t mr, sc_faddr_t
> *addr_start,
> > +			  sc_faddr_t *addr_end)
> > +{
> > +	struct udevice *dev = gd->arch.scu_dev;
> > +	int size = sizeof(sc_rpc_msg_t);
> > +	struct sc_rpc_msg_s msg;
> > +	int ret;
> > +
> > +	if (!dev)
> > +		hang();
> > +
> > +	RPC_VER(&msg) = SC_RPC_VERSION;
> > +	RPC_SVC(&msg) = (u8)SC_RPC_SVC_RM;
> > +	RPC_FUNC(&msg) = (u8)RM_FUNC_GET_MEMREG_INFO;
> > +	RPC_U8(&msg, 0U) = (u8)mr;
> > +	RPC_SIZE(&msg) = 2U;
> > +
> > +	ret = misc_call(dev, SC_FALSE, &msg, size, &msg, size);
> > +	if (ret)
> > +		printf("%s: mr:%d res:%d\n", __func__, mr, RPC_R8(&msg));
> > +
> > +	if (addr_start)
> > +		*addr_start = ((u64)RPC_U32(&msg, 0U) << 32U) |
> > +			RPC_U32(&msg, 4U);
> > +
> > +	if (addr_end)
> > +		*addr_end = ((u64)RPC_U32(&msg, 8U) << 32U) |
> > +			RPC_U32(&msg, 12U);
> > +
> > +	return ret;
> > +}
> > +
> > +sc_bool_t sc_rm_is_resource_owned(sc_ipc_t ipc, sc_rsrc_t resource) {
> > +	struct udevice *dev = gd->arch.scu_dev;
> > +	int size = sizeof(sc_rpc_msg_t);
> > +	struct sc_rpc_msg_s msg;
> > +	u8 result;
> > +
> > +	if (!dev)
> > +		hang();
> > +
> > +	RPC_VER(&msg) = SC_RPC_VERSION;
> > +	RPC_SVC(&msg) = (u8)SC_RPC_SVC_RM;
> > +	RPC_FUNC(&msg) = (u8)RM_FUNC_IS_RESOURCE_OWNED;
> > +	RPC_U16(&msg, 0U) = (u16)resource;
> > +	RPC_SIZE(&msg) = 2U;
> > +
> > +	misc_call(dev, SC_FALSE, &msg, size, &msg, size);
> > +	result = RPC_R8(&msg);
> > +	if (result != 0 && result != 1)
> > +		printf("%s: resource:%d res:%d\n",
> > +		       __func__, resource, RPC_R8(&msg));
> > +
> > +	return !!result;
> > +}
> >

  reply	other threads:[~2018-07-18  9:08 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-18  1:35 [U-Boot] [PATCH V2 00/32] i.MX: Add i.MX8QXP support Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 01/32] dt-bindings: pinctrl: add i.MX8QXP pads definition Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 02/32] dt-bindings: clock: dt-bindings: pinctrl: add i.MX8QXP clocks definition Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 03/32] dt-bindings: soc: add i.MX8QXP pm and rsrc definition Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 04/32] imx8: add scfw macro definition Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 05/32] imx: add Kconfig entry for i.MX8QXP Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 06/32] arm: build mach-imx for i.MX8 Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 07/32] misc: add i.MX8 misc driver Peng Fan
2018-07-18  8:37   ` Lokesh Vutla
2018-07-18  8:52     ` Peng Fan
2018-07-18  9:04       ` Lokesh Vutla
2018-07-18  9:15         ` Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 08/32] misc: imx8: add scfw api impementation Peng Fan
2018-07-18  8:54   ` Lokesh Vutla
2018-07-18  9:08     ` Peng Fan [this message]
2018-07-18  1:35 ` [U-Boot] [PATCH V2 09/32] arm: global_data: add scu_dev for i.MX8 Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 10/32] imx: boot_mode: Add FLEXSPI boot entry Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 11/32] imx8: add imx-regs header file Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 12/32] imx8: pins: include i.MX8QXP pin header when CONFIG_IMX8QXP defined Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 13/32] imx: add i.MX8 cpu type Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 14/32] armv8: add cpu core helper functions Peng Fan
2018-07-19 13:58   ` Fabio Estevam
2018-07-18  1:35 ` [U-Boot] [PATCH V2 15/32] imx8: add basic cpu support Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 16/32] imx8: add boot device detection Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 17/32] imx8: implement mmc_get_env_dev Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 18/32] imx8: add mmu and dram related functiions Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 19/32] imx8: add arch_cpu_init arch_cpu_init_dm Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 20/32] imx8: add iomux configuration api Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 21/32] imx8: add dummy clock Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 22/32] gpio: mxc_gpio: add support for i.MX8 Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 23/32] pinctrl: Add pinctrl driver " Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 24/32] power: Add power domain " Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 25/32] clk: imx: add clk driver for i.MX8QXP Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 26/32] serial_lpuart: Update lpuart driver to support i.MX8 Peng Fan
2018-07-19 14:03   ` Fabio Estevam
2018-07-18  1:35 ` [U-Boot] [PATCH V2 27/32] serial: lpuart: Enable RX and TX FIFO Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 28/32] serial: lpuart: support uclass clk api Peng Fan
2018-07-18  1:35 ` [U-Boot] [PATCH V2 29/32] fsl_esdhc: Update usdhc driver to support i.MX8 Peng Fan
2018-07-19 14:01   ` Fabio Estevam
2018-07-19 14:04     ` Peng Fan
2018-07-23 19:26       ` Fabio Estevam
2018-07-24  0:45         ` Peng Fan
2018-07-24  0:51           ` Fabio Estevam
2018-07-24 18:27             ` Troy Kisky
2018-07-24 18:28               ` Fabio Estevam
2018-07-25  0:06               ` Peng Fan
2018-07-18  1:36 ` [U-Boot] [PATCH V2 30/32] mmc: fsl_esdhc: add uclass clk support Peng Fan
2018-07-18  1:36 ` [U-Boot] [PATCH V2 31/32] arm: dts: introduce dtsi for i.MX8QXP Peng Fan
2018-07-18  1:36 ` [U-Boot] [PATCH V2 32/32] imx: add i.MX8QXP MEK board support Peng Fan
2018-07-18  8:29 ` [U-Boot] [PATCH V2 00/32] i.MX: Add i.MX8QXP support Lokesh Vutla
2018-07-18 12:05   ` Peng Fan
2018-07-18 12:43     ` Peter Robinson
2018-07-18 12:47       ` Peng Fan
2018-07-19 13:41 ` Fabio Estevam
2018-07-19 14:02   ` Peng Fan
2018-07-19 14:15     ` Fabio Estevam
2018-07-19 14:28     ` Anatolij Gustschin
2018-07-27  7:54 ` Peng Fan
2018-07-27 17:58   ` Troy Kisky
2018-07-28  2:43     ` Peng Fan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=HE1PR04MB3004915691F8AE9F58E52D6988530@HE1PR04MB3004.eurprd04.prod.outlook.com \
    --to=peng.fan@nxp.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.