Loading arch/arm/configs/vendor/sdxlemur-debug.config +3 −0 Original line number Diff line number Diff line Loading @@ -46,3 +46,6 @@ CONFIG_EXT4_FS=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y CONFIG_VFAT_FS=y CONFIG_MHI_BUS=y CONFIG_MHI_DEBUG=y CONFIG_MHI_UCI=y arch/arm/configs/vendor/sdxlemur.config +2 −0 Original line number Diff line number Diff line Loading @@ -232,3 +232,5 @@ CONFIG_CLOCK_CPU_SDXLEMUR=y CONFIG_AQFWD=y CONFIG_ATLFWD_FWD=y # CONFIG_ATLFWD_FWD_NETLINK is not set CONFIG_MHI_BUS=y CONFIG_MHI_UCI=y drivers/bus/mhi/core/mhi_boot.c +7 −7 Original line number Diff line number Diff line Loading @@ -210,10 +210,10 @@ static int __mhi_download_rddm_in_panic(struct mhi_controller *mhi_cntrl) int ret; u32 rx_status; enum mhi_ee ee; const u32 delayus = 5000; u32 retry = (mhi_cntrl->timeout_ms * 1000) / delayus; const u32 rddm_timeout_us = 200000; int rddm_retry = rddm_timeout_us / delayus; /* time to enter rddm */ const u32 delayms = 5; u32 retry = (mhi_cntrl->timeout_ms) / delayms; const u32 rddm_timeout_ms = 200; int rddm_retry = rddm_timeout_ms / delayms; /* time to enter rddm */ void __iomem *base = mhi_cntrl->bhie; MHI_CNTRL_LOG("Entered with pm_state:%s dev_state:%s ee:%s\n", Loading Loading @@ -256,7 +256,7 @@ static int __mhi_download_rddm_in_panic(struct mhi_controller *mhi_cntrl) if (ee == MHI_EE_RDDM) break; udelay(delayus); mdelay(delayms); } if (rddm_retry <= 0) { Loading @@ -266,7 +266,7 @@ static int __mhi_download_rddm_in_panic(struct mhi_controller *mhi_cntrl) mhi_cntrl->write_reg(mhi_cntrl, mhi_cntrl->regs, MHI_SOC_RESET_REQ_OFFSET, MHI_SOC_RESET_REQ); udelay(delayus); mdelay(delayms); } ee = mhi_get_exec_env(mhi_cntrl); Loading @@ -287,7 +287,7 @@ static int __mhi_download_rddm_in_panic(struct mhi_controller *mhi_cntrl) return 0; } udelay(delayus); mdelay(delayms); } ee = mhi_get_exec_env(mhi_cntrl); Loading drivers/bus/mhi/core/mhi_init.c +16 −4 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. */ #include <asm/arch_timer.h> #include <linux/debugfs.h> #include <linux/device.h> #include <linux/dma-direction.h> Loading Loading @@ -324,10 +325,19 @@ static const struct attribute_group mhi_sysfs_group = { void mhi_create_sysfs(struct mhi_controller *mhi_cntrl) { sysfs_create_group(&mhi_cntrl->mhi_dev->dev.kobj, &mhi_sysfs_group); if (mhi_cntrl->mhi_tsync) sysfs_create_group(&mhi_cntrl->mhi_dev->dev.kobj, int ret; ret = sysfs_create_group(&mhi_cntrl->mhi_dev->dev.kobj, &mhi_sysfs_group); if (ret) MHI_CNTRL_LOG("Failed to create mhi_sysfs_group"); if (mhi_cntrl->mhi_tsync) { ret = sysfs_create_group(&mhi_cntrl->mhi_dev->dev.kobj, &mhi_tsync_group); if (ret) MHI_CNTRL_LOG("Failed to create mhi_tsync_group"); } } void mhi_destroy_sysfs(struct mhi_controller *mhi_cntrl) Loading Loading @@ -808,8 +818,10 @@ static int mhi_init_timesync(struct mhi_controller *mhi_cntrl) /* save time_offset for obtaining time */ MHI_CNTRL_LOG("TIME OFFS:0x%x\n", time_offset); mhi_tsync->time_reg = mhi_cntrl->regs + time_offset mhi_tsync->time_reg_lo = mhi_cntrl->regs + time_offset + TIMESYNC_TIME_LOW_OFFSET; mhi_tsync->time_reg_hi = mhi_cntrl->regs + time_offset + TIMESYNC_TIME_HIGH_OFFSET; mhi_cntrl->mhi_tsync = mhi_tsync; Loading drivers/bus/mhi/core/mhi_internal.h +10 −5 Original line number Diff line number Diff line Loading @@ -723,7 +723,8 @@ struct tsync_node { }; struct mhi_timesync { void __iomem *time_reg; void __iomem *time_reg_lo; void __iomem *time_reg_hi; u32 int_sequence; u64 local_time; u64 remote_time; Loading Loading @@ -856,10 +857,14 @@ void mhi_write_reg_offload(struct mhi_controller *mhi_cntrl, static inline void mhi_timesync_log(struct mhi_controller *mhi_cntrl) { struct mhi_timesync *mhi_tsync = mhi_cntrl->mhi_tsync; u64 time_val; if (mhi_tsync && mhi_cntrl->tsync_log) mhi_cntrl->tsync_log(mhi_cntrl, readq_no_log(mhi_tsync->time_reg)); if (mhi_tsync && mhi_cntrl->tsync_log) { time_val = (u64)readl_relaxed_no_log(mhi_tsync->time_reg_hi) << 32 | readl_relaxed_no_log(mhi_tsync->time_reg_lo); mhi_cntrl->tsync_log(mhi_cntrl, time_val); } } /* memory allocation methods */ Loading Loading
arch/arm/configs/vendor/sdxlemur-debug.config +3 −0 Original line number Diff line number Diff line Loading @@ -46,3 +46,6 @@ CONFIG_EXT4_FS=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y CONFIG_VFAT_FS=y CONFIG_MHI_BUS=y CONFIG_MHI_DEBUG=y CONFIG_MHI_UCI=y
arch/arm/configs/vendor/sdxlemur.config +2 −0 Original line number Diff line number Diff line Loading @@ -232,3 +232,5 @@ CONFIG_CLOCK_CPU_SDXLEMUR=y CONFIG_AQFWD=y CONFIG_ATLFWD_FWD=y # CONFIG_ATLFWD_FWD_NETLINK is not set CONFIG_MHI_BUS=y CONFIG_MHI_UCI=y
drivers/bus/mhi/core/mhi_boot.c +7 −7 Original line number Diff line number Diff line Loading @@ -210,10 +210,10 @@ static int __mhi_download_rddm_in_panic(struct mhi_controller *mhi_cntrl) int ret; u32 rx_status; enum mhi_ee ee; const u32 delayus = 5000; u32 retry = (mhi_cntrl->timeout_ms * 1000) / delayus; const u32 rddm_timeout_us = 200000; int rddm_retry = rddm_timeout_us / delayus; /* time to enter rddm */ const u32 delayms = 5; u32 retry = (mhi_cntrl->timeout_ms) / delayms; const u32 rddm_timeout_ms = 200; int rddm_retry = rddm_timeout_ms / delayms; /* time to enter rddm */ void __iomem *base = mhi_cntrl->bhie; MHI_CNTRL_LOG("Entered with pm_state:%s dev_state:%s ee:%s\n", Loading Loading @@ -256,7 +256,7 @@ static int __mhi_download_rddm_in_panic(struct mhi_controller *mhi_cntrl) if (ee == MHI_EE_RDDM) break; udelay(delayus); mdelay(delayms); } if (rddm_retry <= 0) { Loading @@ -266,7 +266,7 @@ static int __mhi_download_rddm_in_panic(struct mhi_controller *mhi_cntrl) mhi_cntrl->write_reg(mhi_cntrl, mhi_cntrl->regs, MHI_SOC_RESET_REQ_OFFSET, MHI_SOC_RESET_REQ); udelay(delayus); mdelay(delayms); } ee = mhi_get_exec_env(mhi_cntrl); Loading @@ -287,7 +287,7 @@ static int __mhi_download_rddm_in_panic(struct mhi_controller *mhi_cntrl) return 0; } udelay(delayus); mdelay(delayms); } ee = mhi_get_exec_env(mhi_cntrl); Loading
drivers/bus/mhi/core/mhi_init.c +16 −4 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. */ #include <asm/arch_timer.h> #include <linux/debugfs.h> #include <linux/device.h> #include <linux/dma-direction.h> Loading Loading @@ -324,10 +325,19 @@ static const struct attribute_group mhi_sysfs_group = { void mhi_create_sysfs(struct mhi_controller *mhi_cntrl) { sysfs_create_group(&mhi_cntrl->mhi_dev->dev.kobj, &mhi_sysfs_group); if (mhi_cntrl->mhi_tsync) sysfs_create_group(&mhi_cntrl->mhi_dev->dev.kobj, int ret; ret = sysfs_create_group(&mhi_cntrl->mhi_dev->dev.kobj, &mhi_sysfs_group); if (ret) MHI_CNTRL_LOG("Failed to create mhi_sysfs_group"); if (mhi_cntrl->mhi_tsync) { ret = sysfs_create_group(&mhi_cntrl->mhi_dev->dev.kobj, &mhi_tsync_group); if (ret) MHI_CNTRL_LOG("Failed to create mhi_tsync_group"); } } void mhi_destroy_sysfs(struct mhi_controller *mhi_cntrl) Loading Loading @@ -808,8 +818,10 @@ static int mhi_init_timesync(struct mhi_controller *mhi_cntrl) /* save time_offset for obtaining time */ MHI_CNTRL_LOG("TIME OFFS:0x%x\n", time_offset); mhi_tsync->time_reg = mhi_cntrl->regs + time_offset mhi_tsync->time_reg_lo = mhi_cntrl->regs + time_offset + TIMESYNC_TIME_LOW_OFFSET; mhi_tsync->time_reg_hi = mhi_cntrl->regs + time_offset + TIMESYNC_TIME_HIGH_OFFSET; mhi_cntrl->mhi_tsync = mhi_tsync; Loading
drivers/bus/mhi/core/mhi_internal.h +10 −5 Original line number Diff line number Diff line Loading @@ -723,7 +723,8 @@ struct tsync_node { }; struct mhi_timesync { void __iomem *time_reg; void __iomem *time_reg_lo; void __iomem *time_reg_hi; u32 int_sequence; u64 local_time; u64 remote_time; Loading Loading @@ -856,10 +857,14 @@ void mhi_write_reg_offload(struct mhi_controller *mhi_cntrl, static inline void mhi_timesync_log(struct mhi_controller *mhi_cntrl) { struct mhi_timesync *mhi_tsync = mhi_cntrl->mhi_tsync; u64 time_val; if (mhi_tsync && mhi_cntrl->tsync_log) mhi_cntrl->tsync_log(mhi_cntrl, readq_no_log(mhi_tsync->time_reg)); if (mhi_tsync && mhi_cntrl->tsync_log) { time_val = (u64)readl_relaxed_no_log(mhi_tsync->time_reg_hi) << 32 | readl_relaxed_no_log(mhi_tsync->time_reg_lo); mhi_cntrl->tsync_log(mhi_cntrl, time_val); } } /* memory allocation methods */ Loading