Lines Matching refs:mhi_cntrl

13 u32 mhi_ep_mmio_read(struct mhi_ep_cntrl *mhi_cntrl, u32 offset)  in mhi_ep_mmio_read()  argument
15 return readl(mhi_cntrl->mmio + offset); in mhi_ep_mmio_read()
18 void mhi_ep_mmio_write(struct mhi_ep_cntrl *mhi_cntrl, u32 offset, u32 val) in mhi_ep_mmio_write() argument
20 writel(val, mhi_cntrl->mmio + offset); in mhi_ep_mmio_write()
23 void mhi_ep_mmio_masked_write(struct mhi_ep_cntrl *mhi_cntrl, u32 offset, u32 mask, u32 val) in mhi_ep_mmio_masked_write() argument
27 regval = mhi_ep_mmio_read(mhi_cntrl, offset); in mhi_ep_mmio_masked_write()
30 mhi_ep_mmio_write(mhi_cntrl, offset, regval); in mhi_ep_mmio_masked_write()
44 void mhi_ep_mmio_get_mhi_state(struct mhi_ep_cntrl *mhi_cntrl, enum mhi_state *state, in mhi_ep_mmio_get_mhi_state() argument
49 regval = mhi_ep_mmio_read(mhi_cntrl, EP_MHICTRL); in mhi_ep_mmio_get_mhi_state()
54 static void mhi_ep_mmio_set_chdb(struct mhi_ep_cntrl *mhi_cntrl, u32 ch_id, bool enable) in mhi_ep_mmio_set_chdb() argument
64 mhi_ep_mmio_masked_write(mhi_cntrl, MHI_CHDB_INT_MASK_n(chdb_idx), chid_mask, val); in mhi_ep_mmio_set_chdb()
67 mhi_cntrl->chdb[chdb_idx].mask &= ~chid_mask; in mhi_ep_mmio_set_chdb()
68 mhi_cntrl->chdb[chdb_idx].mask |= val << chid_shift; in mhi_ep_mmio_set_chdb()
71 void mhi_ep_mmio_enable_chdb(struct mhi_ep_cntrl *mhi_cntrl, u32 ch_id) in mhi_ep_mmio_enable_chdb() argument
73 mhi_ep_mmio_set_chdb(mhi_cntrl, ch_id, true); in mhi_ep_mmio_enable_chdb()
76 void mhi_ep_mmio_disable_chdb(struct mhi_ep_cntrl *mhi_cntrl, u32 ch_id) in mhi_ep_mmio_disable_chdb() argument
78 mhi_ep_mmio_set_chdb(mhi_cntrl, ch_id, false); in mhi_ep_mmio_disable_chdb()
81 static void mhi_ep_mmio_set_chdb_interrupts(struct mhi_ep_cntrl *mhi_cntrl, bool enable) in mhi_ep_mmio_set_chdb_interrupts() argument
88 mhi_ep_mmio_write(mhi_cntrl, MHI_CHDB_INT_MASK_n(i), val); in mhi_ep_mmio_set_chdb_interrupts()
89 mhi_cntrl->chdb[i].mask = val; in mhi_ep_mmio_set_chdb_interrupts()
93 void mhi_ep_mmio_enable_chdb_interrupts(struct mhi_ep_cntrl *mhi_cntrl) in mhi_ep_mmio_enable_chdb_interrupts() argument
95 mhi_ep_mmio_set_chdb_interrupts(mhi_cntrl, true); in mhi_ep_mmio_enable_chdb_interrupts()
98 static void mhi_ep_mmio_mask_chdb_interrupts(struct mhi_ep_cntrl *mhi_cntrl) in mhi_ep_mmio_mask_chdb_interrupts() argument
100 mhi_ep_mmio_set_chdb_interrupts(mhi_cntrl, false); in mhi_ep_mmio_mask_chdb_interrupts()
103 bool mhi_ep_mmio_read_chdb_status_interrupts(struct mhi_ep_cntrl *mhi_cntrl) in mhi_ep_mmio_read_chdb_status_interrupts() argument
109 mhi_cntrl->chdb[i].status = mhi_ep_mmio_read(mhi_cntrl, MHI_CHDB_INT_STATUS_n(i)); in mhi_ep_mmio_read_chdb_status_interrupts()
110 if (mhi_cntrl->chdb[i].status) in mhi_ep_mmio_read_chdb_status_interrupts()
118 static void mhi_ep_mmio_set_erdb_interrupts(struct mhi_ep_cntrl *mhi_cntrl, bool enable) in mhi_ep_mmio_set_erdb_interrupts() argument
125 mhi_ep_mmio_write(mhi_cntrl, MHI_ERDB_INT_MASK_n(i), val); in mhi_ep_mmio_set_erdb_interrupts()
128 static void mhi_ep_mmio_mask_erdb_interrupts(struct mhi_ep_cntrl *mhi_cntrl) in mhi_ep_mmio_mask_erdb_interrupts() argument
130 mhi_ep_mmio_set_erdb_interrupts(mhi_cntrl, false); in mhi_ep_mmio_mask_erdb_interrupts()
133 void mhi_ep_mmio_enable_ctrl_interrupt(struct mhi_ep_cntrl *mhi_cntrl) in mhi_ep_mmio_enable_ctrl_interrupt() argument
135 mhi_ep_mmio_masked_write(mhi_cntrl, MHI_CTRL_INT_MASK, in mhi_ep_mmio_enable_ctrl_interrupt()
139 void mhi_ep_mmio_disable_ctrl_interrupt(struct mhi_ep_cntrl *mhi_cntrl) in mhi_ep_mmio_disable_ctrl_interrupt() argument
141 mhi_ep_mmio_masked_write(mhi_cntrl, MHI_CTRL_INT_MASK, in mhi_ep_mmio_disable_ctrl_interrupt()
145 void mhi_ep_mmio_enable_cmdb_interrupt(struct mhi_ep_cntrl *mhi_cntrl) in mhi_ep_mmio_enable_cmdb_interrupt() argument
147 mhi_ep_mmio_masked_write(mhi_cntrl, MHI_CTRL_INT_MASK, in mhi_ep_mmio_enable_cmdb_interrupt()
151 void mhi_ep_mmio_disable_cmdb_interrupt(struct mhi_ep_cntrl *mhi_cntrl) in mhi_ep_mmio_disable_cmdb_interrupt() argument
153 mhi_ep_mmio_masked_write(mhi_cntrl, MHI_CTRL_INT_MASK, in mhi_ep_mmio_disable_cmdb_interrupt()
157 void mhi_ep_mmio_mask_interrupts(struct mhi_ep_cntrl *mhi_cntrl) in mhi_ep_mmio_mask_interrupts() argument
159 mhi_ep_mmio_disable_ctrl_interrupt(mhi_cntrl); in mhi_ep_mmio_mask_interrupts()
160 mhi_ep_mmio_disable_cmdb_interrupt(mhi_cntrl); in mhi_ep_mmio_mask_interrupts()
161 mhi_ep_mmio_mask_chdb_interrupts(mhi_cntrl); in mhi_ep_mmio_mask_interrupts()
162 mhi_ep_mmio_mask_erdb_interrupts(mhi_cntrl); in mhi_ep_mmio_mask_interrupts()
165 static void mhi_ep_mmio_clear_interrupts(struct mhi_ep_cntrl *mhi_cntrl) in mhi_ep_mmio_clear_interrupts() argument
170 mhi_ep_mmio_write(mhi_cntrl, MHI_CHDB_INT_CLEAR_n(i), in mhi_ep_mmio_clear_interrupts()
174 mhi_ep_mmio_write(mhi_cntrl, MHI_ERDB_INT_CLEAR_n(i), in mhi_ep_mmio_clear_interrupts()
177 mhi_ep_mmio_write(mhi_cntrl, MHI_CTRL_INT_CLEAR, in mhi_ep_mmio_clear_interrupts()
183 void mhi_ep_mmio_get_chc_base(struct mhi_ep_cntrl *mhi_cntrl) in mhi_ep_mmio_get_chc_base() argument
187 regval = mhi_ep_mmio_read(mhi_cntrl, EP_CCABAP_HIGHER); in mhi_ep_mmio_get_chc_base()
188 mhi_cntrl->ch_ctx_host_pa = regval; in mhi_ep_mmio_get_chc_base()
189 mhi_cntrl->ch_ctx_host_pa <<= 32; in mhi_ep_mmio_get_chc_base()
191 regval = mhi_ep_mmio_read(mhi_cntrl, EP_CCABAP_LOWER); in mhi_ep_mmio_get_chc_base()
192 mhi_cntrl->ch_ctx_host_pa |= regval; in mhi_ep_mmio_get_chc_base()
195 void mhi_ep_mmio_get_erc_base(struct mhi_ep_cntrl *mhi_cntrl) in mhi_ep_mmio_get_erc_base() argument
199 regval = mhi_ep_mmio_read(mhi_cntrl, EP_ECABAP_HIGHER); in mhi_ep_mmio_get_erc_base()
200 mhi_cntrl->ev_ctx_host_pa = regval; in mhi_ep_mmio_get_erc_base()
201 mhi_cntrl->ev_ctx_host_pa <<= 32; in mhi_ep_mmio_get_erc_base()
203 regval = mhi_ep_mmio_read(mhi_cntrl, EP_ECABAP_LOWER); in mhi_ep_mmio_get_erc_base()
204 mhi_cntrl->ev_ctx_host_pa |= regval; in mhi_ep_mmio_get_erc_base()
207 void mhi_ep_mmio_get_crc_base(struct mhi_ep_cntrl *mhi_cntrl) in mhi_ep_mmio_get_crc_base() argument
211 regval = mhi_ep_mmio_read(mhi_cntrl, EP_CRCBAP_HIGHER); in mhi_ep_mmio_get_crc_base()
212 mhi_cntrl->cmd_ctx_host_pa = regval; in mhi_ep_mmio_get_crc_base()
213 mhi_cntrl->cmd_ctx_host_pa <<= 32; in mhi_ep_mmio_get_crc_base()
215 regval = mhi_ep_mmio_read(mhi_cntrl, EP_CRCBAP_LOWER); in mhi_ep_mmio_get_crc_base()
216 mhi_cntrl->cmd_ctx_host_pa |= regval; in mhi_ep_mmio_get_crc_base()
221 struct mhi_ep_cntrl *mhi_cntrl = ring->mhi_cntrl; in mhi_ep_mmio_get_db() local
225 regval = mhi_ep_mmio_read(mhi_cntrl, ring->db_offset_h); in mhi_ep_mmio_get_db()
229 regval = mhi_ep_mmio_read(mhi_cntrl, ring->db_offset_l); in mhi_ep_mmio_get_db()
235 void mhi_ep_mmio_set_env(struct mhi_ep_cntrl *mhi_cntrl, u32 value) in mhi_ep_mmio_set_env() argument
237 mhi_ep_mmio_write(mhi_cntrl, EP_BHI_EXECENV, value); in mhi_ep_mmio_set_env()
240 void mhi_ep_mmio_clear_reset(struct mhi_ep_cntrl *mhi_cntrl) in mhi_ep_mmio_clear_reset() argument
242 mhi_ep_mmio_masked_write(mhi_cntrl, EP_MHICTRL, MHICTRL_RESET_MASK, 0); in mhi_ep_mmio_clear_reset()
245 void mhi_ep_mmio_reset(struct mhi_ep_cntrl *mhi_cntrl) in mhi_ep_mmio_reset() argument
247 mhi_ep_mmio_write(mhi_cntrl, EP_MHICTRL, 0); in mhi_ep_mmio_reset()
248 mhi_ep_mmio_write(mhi_cntrl, EP_MHISTATUS, 0); in mhi_ep_mmio_reset()
249 mhi_ep_mmio_clear_interrupts(mhi_cntrl); in mhi_ep_mmio_reset()
252 void mhi_ep_mmio_init(struct mhi_ep_cntrl *mhi_cntrl) in mhi_ep_mmio_init() argument
256 mhi_cntrl->chdb_offset = mhi_ep_mmio_read(mhi_cntrl, EP_CHDBOFF); in mhi_ep_mmio_init()
257 mhi_cntrl->erdb_offset = mhi_ep_mmio_read(mhi_cntrl, EP_ERDBOFF); in mhi_ep_mmio_init()
259 regval = mhi_ep_mmio_read(mhi_cntrl, EP_MHICFG); in mhi_ep_mmio_init()
260 mhi_cntrl->event_rings = FIELD_GET(MHICFG_NER_MASK, regval); in mhi_ep_mmio_init()
261 mhi_cntrl->hw_event_rings = FIELD_GET(MHICFG_NHWER_MASK, regval); in mhi_ep_mmio_init()
263 mhi_ep_mmio_reset(mhi_cntrl); in mhi_ep_mmio_init()
266 void mhi_ep_mmio_update_ner(struct mhi_ep_cntrl *mhi_cntrl) in mhi_ep_mmio_update_ner() argument
270 regval = mhi_ep_mmio_read(mhi_cntrl, EP_MHICFG); in mhi_ep_mmio_update_ner()
271 mhi_cntrl->event_rings = FIELD_GET(MHICFG_NER_MASK, regval); in mhi_ep_mmio_update_ner()
272 mhi_cntrl->hw_event_rings = FIELD_GET(MHICFG_NHWER_MASK, regval); in mhi_ep_mmio_update_ner()