On Mon, Aug 07, 2023 at 03:59:52PM +0800, Qiang Yu wrote: > From: Mayank Rana <quic_mrana@xxxxxxxxxxx> > Subject prefix should be: "bus: mhi:..." > Some devices (e.g. WLAN chips) are unable to handle the non-standard ELF > format of the FBC image and thus need special handling of the FBC image. > Which WLAN chip? Is the driver for the chip already upstreamed? > Add standard_elf_image flag which makes decision in terms of how FBC image > based AMSS image is being downloaded with connected endpoint. > FBC image is having two image combine: SBL image + AMSS image. > 1. FBC image download using legacy single ELF header image format: > - SBL image: 512KB of FBC image is downloaded using BHI. > - AMSS image: full FBC image is downloaded using BHIe. > 2. FBC image download using separate ELF header image format: > - SBL image: 512 KB of FBC image is downloaded using BHI. > - AMSS image: 512 KB onward FBC image is downloaded using BHIe. > There is no change for SBL image download. Although AMSS image start > address is end address of SBL image while using separate ELF header format. > > Signed-off-by: Mayank Rana <quic_mrana@xxxxxxxxxxx> > [quic_qianyu@xxxxxxxxxxx: Update commit message, minor updates] > Signed-off-by: Qiang Yu <quic_qianyu@xxxxxxxxxxx> > --- > v1->v2: modify commit message > correct author > rebase on latest mhi-next branch, resolve conflicts > > drivers/bus/mhi/host/boot.c | 7 +++++++ > include/linux/mhi.h | 2 ++ > 2 files changed, 9 insertions(+) > > diff --git a/drivers/bus/mhi/host/boot.c b/drivers/bus/mhi/host/boot.c > index edc0ec5..586d551 100644 > --- a/drivers/bus/mhi/host/boot.c > +++ b/drivers/bus/mhi/host/boot.c > @@ -495,6 +495,13 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl) > * device transitioning into MHI READY state > */ > if (mhi_cntrl->fbc_download) { > + dev_dbg(dev, "standard_elf_image: %s\n", > + (mhi_cntrl->standard_elf_image ? "True" : "False")); > + if (mhi_cntrl->standard_elf_image) { Commit message is saying that the devices cannot handle non-standard ELF image. But this check is for standard ELF image. I'm confused. > + fw_data = firmware->data + mhi_cntrl->sbl_size; > + fw_sz = fw_sz - mhi_cntrl->sbl_size; > + } > + > ret = mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image, fw_sz); > if (ret) { > release_firmware(firmware); > diff --git a/include/linux/mhi.h b/include/linux/mhi.h > index 039943e..e065101 100644 > --- a/include/linux/mhi.h > +++ b/include/linux/mhi.h > @@ -310,6 +310,7 @@ struct mhi_controller_config { > * @reg_len: Length of the MHI MMIO region (required) > * @fbc_image: Points to firmware image buffer > * @rddm_image: Points to RAM dump buffer > + * @standard_elf_image: Flag to make decision about firmware download start address (optional) > * @mhi_chan: Points to the channel configuration table > * @lpm_chans: List of channels that require LPM notifications > * @irq: base irq # to request (required) > @@ -456,6 +457,7 @@ struct mhi_controller { > bool bounce_buf; > bool fbc_download; > bool wake_set; > + bool standard_elf_image; Which driver is making use of this flag? - Mani > unsigned long irq_flags; > u32 mru; > }; > -- > 2.7.4 > > -- மணிவண்ணன் சதாசிவம்