Loading drivers/bus/mhi/core/mhi_init.c +26 −2 Original line number Diff line number Diff line /* Copyright (c) 2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -1247,6 +1247,7 @@ EXPORT_SYMBOL(mhi_alloc_controller); int mhi_prepare_for_power_up(struct mhi_controller *mhi_cntrl) { int ret; u32 bhie_off; mutex_lock(&mhi_cntrl->pm_mutex); Loading @@ -1266,16 +1267,39 @@ int mhi_prepare_for_power_up(struct mhi_controller *mhi_cntrl) * allocate rddm table if specified, this table is for debug purpose * so we'll ignore erros */ if (mhi_cntrl->rddm_size) if (mhi_cntrl->rddm_size) { mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->rddm_image, mhi_cntrl->rddm_size); /* * This controller supports rddm, we need to manually clear * BHIE RX registers since por values are undefined. */ ret = mhi_read_reg(mhi_cntrl, mhi_cntrl->regs, BHIEOFF, &bhie_off); if (ret) { MHI_ERR("Error getting bhie offset\n"); goto bhie_error; } memset_io(mhi_cntrl->regs + bhie_off + BHIE_RXVECADDR_LOW_OFFS, 0, BHIE_RXVECSTATUS_OFFS - BHIE_RXVECADDR_LOW_OFFS + 4); } mhi_cntrl->pre_init = true; mutex_unlock(&mhi_cntrl->pm_mutex); return 0; bhie_error: if (mhi_cntrl->rddm_image) { mhi_free_bhie_table(mhi_cntrl, mhi_cntrl->rddm_image); mhi_cntrl->rddm_image = NULL; } mhi_deinit_free_irq(mhi_cntrl); error_setup_irq: mhi_deinit_dev_ctxt(mhi_cntrl); Loading Loading
drivers/bus/mhi/core/mhi_init.c +26 −2 Original line number Diff line number Diff line /* Copyright (c) 2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -1247,6 +1247,7 @@ EXPORT_SYMBOL(mhi_alloc_controller); int mhi_prepare_for_power_up(struct mhi_controller *mhi_cntrl) { int ret; u32 bhie_off; mutex_lock(&mhi_cntrl->pm_mutex); Loading @@ -1266,16 +1267,39 @@ int mhi_prepare_for_power_up(struct mhi_controller *mhi_cntrl) * allocate rddm table if specified, this table is for debug purpose * so we'll ignore erros */ if (mhi_cntrl->rddm_size) if (mhi_cntrl->rddm_size) { mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->rddm_image, mhi_cntrl->rddm_size); /* * This controller supports rddm, we need to manually clear * BHIE RX registers since por values are undefined. */ ret = mhi_read_reg(mhi_cntrl, mhi_cntrl->regs, BHIEOFF, &bhie_off); if (ret) { MHI_ERR("Error getting bhie offset\n"); goto bhie_error; } memset_io(mhi_cntrl->regs + bhie_off + BHIE_RXVECADDR_LOW_OFFS, 0, BHIE_RXVECSTATUS_OFFS - BHIE_RXVECADDR_LOW_OFFS + 4); } mhi_cntrl->pre_init = true; mutex_unlock(&mhi_cntrl->pm_mutex); return 0; bhie_error: if (mhi_cntrl->rddm_image) { mhi_free_bhie_table(mhi_cntrl, mhi_cntrl->rddm_image); mhi_cntrl->rddm_image = NULL; } mhi_deinit_free_irq(mhi_cntrl); error_setup_irq: mhi_deinit_dev_ctxt(mhi_cntrl); Loading