Messages in this thread | | | Date | Mon, 14 Feb 2022 17:14:33 -0800 | Subject | Re: [PATCH v3 11/25] bus: mhi: ep: Add support for managing MMIO registers | From | Hemant Kumar <> |
| |
Hi Mani
On 2/12/2022 10:21 AM, Manivannan Sadhasivam wrote: > Add support for managing the Memory Mapped Input Output (MMIO) registers > of the MHI bus. All MHI operations are carried out using the MMIO registers > by both host and the endpoint device. > > The MMIO registers reside inside the endpoint device memory (fixed > location based on the platform) and the address is passed by the MHI EP > controller driver during its registration. > > Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> > --- > drivers/bus/mhi/ep/Makefile | 2 +- > drivers/bus/mhi/ep/internal.h | 37 +++++ > drivers/bus/mhi/ep/main.c | 6 +- > drivers/bus/mhi/ep/mmio.c | 274 ++++++++++++++++++++++++++++++++++ > include/linux/mhi_ep.h | 18 +++ > 5 files changed, 335 insertions(+), 2 deletions(-) > create mode 100644 drivers/bus/mhi/ep/mmio.c > > diff --git a/drivers/bus/mhi/ep/Makefile b/drivers/bus/mhi/ep/Makefile > index 64e29252b608..a1555ae287ad 100644 > --- a/drivers/bus/mhi/ep/Makefile > +++ b/drivers/bus/mhi/ep/Makefile > @@ -1,2 +1,2 @@ > obj-$(CONFIG_MHI_BUS_EP) += mhi_ep.o > -mhi_ep-y := main.o > +mhi_ep-y := main.o mmio.o > diff --git a/drivers/bus/mhi/ep/internal.h b/drivers/bus/mhi/ep/internal.h > index e313a2546664..2c756a90774c 100644 > --- a/drivers/bus/mhi/ep/internal.h > +++ b/drivers/bus/mhi/ep/internal.h > @@ -101,6 +101,17 @@ struct mhi_generic_ctx { > __u64 wp __packed __aligned(4); > }; > > +/** > + * enum mhi_ep_execenv - MHI Endpoint Execution Environment > + * @MHI_EP_SBL_EE: Secondary Bootloader > + * @MHI_EP_AMSS_EE: Advanced Mode Subscriber Software > + */ > +enum mhi_ep_execenv { > + MHI_EP_SBL_EE = 1, > + MHI_EP_AMSS_EE = 2, > + MHI_EP_UNRESERVED > +}; can we move or use the exec env definitions from common header ? > + > enum mhi_ep_ring_type { > RING_TYPE_CMD = 0, > RING_TYPE_ER, > @@ -157,4 +168,30 @@ struct mhi_ep_chan { > bool skip_td; > }; > > +/* MMIO related functions */ > +u32 mhi_ep_mmio_read(struct mhi_ep_cntrl *mhi_cntrl, u32 offset); > +void mhi_ep_mmio_write(struct mhi_ep_cntrl *mhi_cntrl, u32 offset, u32 val); > +void mhi_ep_mmio_masked_write(struct mhi_ep_cntrl *mhi_cntrl, u32 offset, u32 mask, u32 val); > +u32 mhi_ep_mmio_masked_read(struct mhi_ep_cntrl *dev, u32 offset, u32 mask); > +void mhi_ep_mmio_enable_ctrl_interrupt(struct mhi_ep_cntrl *mhi_cntrl); > +void mhi_ep_mmio_disable_ctrl_interrupt(struct mhi_ep_cntrl *mhi_cntrl); > +void mhi_ep_mmio_enable_cmdb_interrupt(struct mhi_ep_cntrl *mhi_cntrl); > +void mhi_ep_mmio_disable_cmdb_interrupt(struct mhi_ep_cntrl *mhi_cntrl); > +void mhi_ep_mmio_enable_chdb_a7(struct mhi_ep_cntrl *mhi_cntrl, u32 chdb_id); can we get rid of a7 from function and macros ? > +void mhi_ep_mmio_disable_chdb_a7(struct mhi_ep_cntrl *mhi_cntrl, u32 chdb_id); [..] -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project
| |