Lines Matching refs:ctx
139 int mec_hal_i2c_smb_reset(struct mec_i2c_smb_ctx *ctx) in mec_hal_i2c_smb_reset() argument
141 if (!ctx) { in mec_hal_i2c_smb_reset()
145 const struct mec_i2c_info *info = get_i2c_smb_info(ctx->base); in mec_hal_i2c_smb_reset()
165 static void i2c_config(struct mec_i2c_smb_ctx *ctx, struct mec_i2c_smb_cfg *config, in i2c_config() argument
168 struct mec_i2c_smb_regs *base = ctx->base; in i2c_config()
177 ctx->i2c_ctrl_cached = control; in i2c_config()
197 ctx->i2c_ctrl_cached = control; in i2c_config()
210 int mec_hal_i2c_smb_bus_freq_get(struct mec_i2c_smb_ctx *ctx, uint32_t *bus_freq_hz) in mec_hal_i2c_smb_bus_freq_get() argument
212 if (!ctx || !ctx->base || !bus_freq_hz) { in mec_hal_i2c_smb_bus_freq_get()
216 struct mec_i2c_smb_regs *regs = ctx->base; in mec_hal_i2c_smb_bus_freq_get()
226 int mec_hal_i2c_smb_init(struct mec_i2c_smb_ctx *ctx, struct mec_i2c_smb_cfg *config, in mec_hal_i2c_smb_init() argument
231 if (!ctx) { in mec_hal_i2c_smb_init()
235 const struct mec_i2c_info *info = get_i2c_smb_info(ctx->base); in mec_hal_i2c_smb_init()
241 ctx->devi = info->devi; in mec_hal_i2c_smb_init()
244 own_addrs = ctx->base->OWN_ADDR; in mec_hal_i2c_smb_init()
263 i2c_config(ctx, config, custom_freq_cfg); in mec_hal_i2c_smb_init()
266 mec_hal_girq_clr_src(ctx->devi); in mec_hal_i2c_smb_init()
275 static int mec_hal_i2c_smb_own_addr(struct mec_i2c_smb_ctx *ctx, uint8_t tid, in mec_hal_i2c_smb_own_addr() argument
281 if (!ctx) { in mec_hal_i2c_smb_own_addr()
285 const struct mec_i2c_info *info = get_i2c_smb_info(ctx->base); in mec_hal_i2c_smb_own_addr()
304 struct mec_i2c_smb_regs *regs = ctx->base; in mec_hal_i2c_smb_own_addr()
316 int mec_hal_i2c_smb_get_target_addr(struct mec_i2c_smb_ctx *ctx, uint8_t target_id, in mec_hal_i2c_smb_get_target_addr() argument
323 return mec_hal_i2c_smb_own_addr(ctx, target_id, 0u, target_addr); in mec_hal_i2c_smb_get_target_addr()
326 int mec_hal_i2c_smb_set_target_addr(struct mec_i2c_smb_ctx *ctx, uint8_t target_id, in mec_hal_i2c_smb_set_target_addr() argument
329 return mec_hal_i2c_smb_own_addr(ctx, target_id, target_addr, NULL); in mec_hal_i2c_smb_set_target_addr()
332 int mec_hal_i2c_smb_clr_target_addr(struct mec_i2c_smb_ctx *ctx, uint16_t target_addr) in mec_hal_i2c_smb_clr_target_addr() argument
334 if (!ctx) { in mec_hal_i2c_smb_clr_target_addr()
338 struct mec_i2c_smb_regs *regs = ctx->base; in mec_hal_i2c_smb_clr_target_addr()
354 int mec_hal_i2c_smb_girq_status_clr(struct mec_i2c_smb_ctx *ctx) in mec_hal_i2c_smb_girq_status_clr() argument
356 if (!ctx) { in mec_hal_i2c_smb_girq_status_clr()
360 mec_hal_girq_clr_src(ctx->devi); in mec_hal_i2c_smb_girq_status_clr()
366 int mec_hal_i2c_smb_girq_ctrl(struct mec_i2c_smb_ctx *ctx, int flags) in mec_hal_i2c_smb_girq_ctrl() argument
368 if (!ctx) { in mec_hal_i2c_smb_girq_ctrl()
373 mec_hal_girq_ctrl(ctx->devi, 0); in mec_hal_i2c_smb_girq_ctrl()
377 mec_hal_girq_clr_src(ctx->devi); in mec_hal_i2c_smb_girq_ctrl()
381 mec_hal_girq_ctrl(ctx->devi, 1); in mec_hal_i2c_smb_girq_ctrl()
387 int mec_hal_i2c_smb_girq_status(struct mec_i2c_smb_ctx *ctx) in mec_hal_i2c_smb_girq_status() argument
389 if (!ctx) { in mec_hal_i2c_smb_girq_status()
393 return (int)mec_hal_girq_src(ctx->devi); in mec_hal_i2c_smb_girq_status()
396 int mec_hal_i2c_smb_girq_result(struct mec_i2c_smb_ctx *ctx) in mec_hal_i2c_smb_girq_result() argument
398 if (!ctx) { in mec_hal_i2c_smb_girq_result()
402 return (int)mec_hal_girq_result(ctx->devi); in mec_hal_i2c_smb_girq_result()
409 int mec_hal_i2c_smb_is_bus_owned(struct mec_i2c_smb_ctx *ctx) in mec_hal_i2c_smb_is_bus_owned() argument
412 if (!ctx || !ctx->base) { in mec_hal_i2c_smb_is_bus_owned()
416 struct mec_i2c_smb_regs *base = ctx->base; in mec_hal_i2c_smb_is_bus_owned()
425 int mec_hal_i2c_smb_ctrl_set(struct mec_i2c_smb_ctx *ctx, uint8_t ctrl) in mec_hal_i2c_smb_ctrl_set() argument
428 if (!ctx || !ctx->base) { in mec_hal_i2c_smb_ctrl_set()
432 struct mec_i2c_smb_regs *base = ctx->base; in mec_hal_i2c_smb_ctrl_set()
434 ctx->i2c_ctrl_cached = ctrl; in mec_hal_i2c_smb_ctrl_set()
440 uint8_t mec_hal_i2c_smb_ctrl_get(struct mec_i2c_smb_ctx *ctx) in mec_hal_i2c_smb_ctrl_get() argument
442 if (!ctx) { in mec_hal_i2c_smb_ctrl_get()
446 return ctx->i2c_ctrl_cached; in mec_hal_i2c_smb_ctrl_get()
449 int mec_hal_i2c_cmd_ack_ctrl(struct mec_i2c_smb_ctx *ctx, uint8_t ack_en) in mec_hal_i2c_cmd_ack_ctrl() argument
452 if (!ctx || !ctx->base) { in mec_hal_i2c_cmd_ack_ctrl()
456 struct mec_i2c_smb_regs *base = ctx->base; in mec_hal_i2c_cmd_ack_ctrl()
457 uint8_t ctrl = ctx->i2c_ctrl_cached; in mec_hal_i2c_cmd_ack_ctrl()
465 ctx->i2c_ctrl_cached = ctrl; in mec_hal_i2c_cmd_ack_ctrl()
472 int mec_hal_i2c_smb_rearm_target_rx(struct mec_i2c_smb_ctx *ctx) in mec_hal_i2c_smb_rearm_target_rx() argument
477 return mec_hal_i2c_smb_ctrl_set(ctx, ctr); in mec_hal_i2c_smb_rearm_target_rx()
480 int mec_hal_i2c_smb_auto_ack_enable(struct mec_i2c_smb_ctx *ctx, uint8_t ien) in mec_hal_i2c_smb_auto_ack_enable() argument
483 if (!ctx || !ctx->base) { in mec_hal_i2c_smb_auto_ack_enable()
487 struct mec_i2c_smb_regs *base = ctx->base; in mec_hal_i2c_smb_auto_ack_enable()
494 ctx->i2c_ctrl_cached = ctr; in mec_hal_i2c_smb_auto_ack_enable()
499 int mec_hal_i2c_smb_auto_ack_disable(struct mec_i2c_smb_ctx *ctx, uint8_t ien) in mec_hal_i2c_smb_auto_ack_disable() argument
502 if (!ctx || !ctx->base) { in mec_hal_i2c_smb_auto_ack_disable()
506 struct mec_i2c_smb_regs *base = ctx->base; in mec_hal_i2c_smb_auto_ack_disable()
513 ctx->i2c_ctrl_cached = ctr; in mec_hal_i2c_smb_auto_ack_disable()
518 int mec_hal_i2c_smb_idle_intr_enable(struct mec_i2c_smb_ctx *ctx, uint8_t enable) in mec_hal_i2c_smb_idle_intr_enable() argument
521 if (!ctx || !ctx->base) { in mec_hal_i2c_smb_idle_intr_enable()
526 struct mec_i2c_smb_regs *base = ctx->base; in mec_hal_i2c_smb_idle_intr_enable()
537 int mec_hal_i2c_smb_intr_ctrl(struct mec_i2c_smb_ctx *ctx, uint32_t mask, uint8_t enable) in mec_hal_i2c_smb_intr_ctrl() argument
542 if (!ctx || !ctx->base) { in mec_hal_i2c_smb_intr_ctrl()
547 struct mec_i2c_smb_regs *regs = ctx->base; in mec_hal_i2c_smb_intr_ctrl()
551 ctx->i2c_ctrl_cached |= MEC_BIT(MEC_I2C_SMB_CTRL_ENI_Pos); in mec_hal_i2c_smb_intr_ctrl()
553 ctx->i2c_ctrl_cached &= (uint8_t)~MEC_BIT(MEC_I2C_SMB_CTRL_ENI_Pos); in mec_hal_i2c_smb_intr_ctrl()
555 regs->CTRL = ctx->i2c_ctrl_cached; in mec_hal_i2c_smb_intr_ctrl()
588 uint32_t mec_hal_i2c_smb_status(struct mec_i2c_smb_ctx *ctx, uint8_t clear) in mec_hal_i2c_smb_status() argument
591 if (!ctx || !ctx->base) { in mec_hal_i2c_smb_status()
595 struct mec_i2c_smb_regs *base = ctx->base; in mec_hal_i2c_smb_status()
606 uint32_t mec_hal_i2c_smb_wake_status(struct mec_i2c_smb_ctx *ctx) in mec_hal_i2c_smb_wake_status() argument
608 if (!ctx) { in mec_hal_i2c_smb_wake_status()
612 struct mec_i2c_smb_regs *base = ctx->base; in mec_hal_i2c_smb_wake_status()
617 void mec_hal_i2c_smb_wake_status_clr(struct mec_i2c_smb_ctx *ctx) in mec_hal_i2c_smb_wake_status_clr() argument
620 if (!ctx || !ctx->base) { in mec_hal_i2c_smb_wake_status_clr()
625 struct mec_i2c_smb_regs *base = ctx->base; in mec_hal_i2c_smb_wake_status_clr()
630 int mec_hal_i2c_smb_is_idle_ien(struct mec_i2c_smb_ctx *ctx) in mec_hal_i2c_smb_is_idle_ien() argument
633 if (!ctx || !ctx->base) { in mec_hal_i2c_smb_is_idle_ien()
637 struct mec_i2c_smb_regs *regs = ctx->base; in mec_hal_i2c_smb_is_idle_ien()
646 int mec_hal_i2c_smb_is_idle_intr(struct mec_i2c_smb_ctx *ctx) in mec_hal_i2c_smb_is_idle_intr() argument
649 if (!ctx || !ctx->base) { in mec_hal_i2c_smb_is_idle_intr()
653 struct mec_i2c_smb_regs *base = ctx->base; in mec_hal_i2c_smb_is_idle_intr()
669 bool mec_hal_i2c_smb_is_aat_ien(struct mec_i2c_smb_ctx *ctx) in mec_hal_i2c_smb_is_aat_ien() argument
672 if (!ctx || !ctx->base) { in mec_hal_i2c_smb_is_aat_ien()
676 struct mec_i2c_smb_regs *base = ctx->base; in mec_hal_i2c_smb_is_aat_ien()
686 int mec_hal_i2c_smb_idle_status_clr(struct mec_i2c_smb_ctx *ctx) in mec_hal_i2c_smb_idle_status_clr() argument
689 if (!ctx || !ctx->base) { in mec_hal_i2c_smb_idle_status_clr()
693 struct mec_i2c_smb_regs *base = ctx->base; in mec_hal_i2c_smb_idle_status_clr()
708 int mec_hal_i2c_smb_start_gen(struct mec_i2c_smb_ctx *ctx, uint8_t target_addr, int flags) in mec_hal_i2c_smb_start_gen() argument
711 if (!ctx || !ctx->base) { in mec_hal_i2c_smb_start_gen()
715 struct mec_i2c_smb_regs *base = ctx->base; in mec_hal_i2c_smb_start_gen()
725 ctx->i2c_ctrl_cached = ctr; in mec_hal_i2c_smb_start_gen()
729 ctx->i2c_ctrl_cached = ctr; in mec_hal_i2c_smb_start_gen()
737 int mec_hal_i2c_smb_stop_gen(struct mec_i2c_smb_ctx *ctx) in mec_hal_i2c_smb_stop_gen() argument
740 if (!ctx || !ctx->base) { in mec_hal_i2c_smb_stop_gen()
744 struct mec_i2c_smb_regs *base = ctx->base; in mec_hal_i2c_smb_stop_gen()
753 ctx->i2c_ctrl_cached = control; in mec_hal_i2c_smb_stop_gen()
765 int mec_hal_i2c_smb_xmit_byte(struct mec_i2c_smb_ctx *ctx, uint8_t msg_byte) in mec_hal_i2c_smb_xmit_byte() argument
768 if (!ctx || !ctx->base) { in mec_hal_i2c_smb_xmit_byte()
772 struct mec_i2c_smb_regs *base = ctx->base; in mec_hal_i2c_smb_xmit_byte()
789 int mec_hal_i2c_smb_read_byte(struct mec_i2c_smb_ctx *ctx, uint8_t *msg_byte) in mec_hal_i2c_smb_read_byte() argument
792 if (!ctx || !ctx->base) { in mec_hal_i2c_smb_read_byte()
796 struct mec_i2c_smb_regs *base = ctx->base; in mec_hal_i2c_smb_read_byte()
806 int mec_hal_i2c_smb_bbctrl(struct mec_i2c_smb_ctx *ctx, uint8_t enable, uint8_t pin_drive) in mec_hal_i2c_smb_bbctrl() argument
809 if (!ctx || !ctx->base) { in mec_hal_i2c_smb_bbctrl()
813 struct mec_i2c_smb_regs *base = ctx->base; in mec_hal_i2c_smb_bbctrl()
838 uint8_t mec_hal_i2c_smb_bbctrl_pin_states(struct mec_i2c_smb_ctx *ctx) in mec_hal_i2c_smb_bbctrl_pin_states() argument
841 if (!ctx || !ctx->base) { in mec_hal_i2c_smb_bbctrl_pin_states()
845 struct mec_i2c_smb_regs *base = ctx->base; in mec_hal_i2c_smb_bbctrl_pin_states()
856 int mec_hal_i2c_nl_cm_cfg_start(struct mec_i2c_smb_ctx *ctx, uint16_t ntx, uint16_t nrx, in mec_hal_i2c_nl_cm_cfg_start() argument
860 if (!ctx || !ctx->base) { in mec_hal_i2c_nl_cm_cfg_start()
864 struct mec_i2c_smb_regs *regs = ctx->base; in mec_hal_i2c_nl_cm_cfg_start()
871 ctx->wrcnt = ntx; in mec_hal_i2c_nl_cm_cfg_start()
872 ctx->rdcnt = nrx; in mec_hal_i2c_nl_cm_cfg_start()
909 ctx->cmdctrl = (uint16_t)(cmd & 0xffffu); in mec_hal_i2c_nl_cm_cfg_start()
939 uint32_t mec_hal_i2c_nl_cm_event(struct mec_i2c_smb_ctx *ctx) in mec_hal_i2c_nl_cm_event() argument
942 if (!ctx || !ctx->base) { in mec_hal_i2c_nl_cm_event()
946 struct mec_i2c_smb_regs *regs = ctx->base; in mec_hal_i2c_nl_cm_event()
954 if (!cm_cmd && !(ctx->wrcnt || ctx->rdcnt)) { in mec_hal_i2c_nl_cm_event()
963 int mec_hal_i2c_nl_cmd_clear(struct mec_i2c_smb_ctx *ctx, uint8_t is_tm) in mec_hal_i2c_nl_cmd_clear() argument
966 if (!ctx || !ctx->base) { in mec_hal_i2c_nl_cmd_clear()
971 ctx->base->TM_CMD = 0; in mec_hal_i2c_nl_cmd_clear()
973 ctx->base->CM_CMD = 0; in mec_hal_i2c_nl_cmd_clear()
975 ctx->base->EXTLEN = 0; in mec_hal_i2c_nl_cmd_clear()
980 int mec_hal_i2c_nl_cm_proceed(struct mec_i2c_smb_ctx *ctx) in mec_hal_i2c_nl_cm_proceed() argument
983 if (!ctx || !ctx->base) { in mec_hal_i2c_nl_cm_proceed()
987 ctx->base->CM_CMD |= (MEC_BIT(MEC_I2C_SMB_CM_CMD_RUN_Pos) in mec_hal_i2c_nl_cm_proceed()
992 int mec_hal_i2c_nl_tm_proceed(struct mec_i2c_smb_ctx *ctx) in mec_hal_i2c_nl_tm_proceed() argument
995 if (!ctx || !ctx->base) { in mec_hal_i2c_nl_tm_proceed()
999 ctx->base->TM_CMD |= (MEC_BIT(MEC_I2C_SMB_TM_CMD_RUN_Pos) in mec_hal_i2c_nl_tm_proceed()
1106 uint32_t mec_hal_i2c_nl_cmd_get(struct mec_i2c_smb_ctx *ctx, uint8_t is_tm) in mec_hal_i2c_nl_cmd_get() argument
1108 if (!ctx || !ctx->base) { in mec_hal_i2c_nl_cmd_get()
1113 return ctx->base->CM_CMD; in mec_hal_i2c_nl_cmd_get()
1116 return ctx->base->TM_CMD; in mec_hal_i2c_nl_cmd_get()
1165 int mec_hal_i2c_nl_tm_config(struct mec_i2c_smb_ctx *ctx, uint16_t ntx, uint16_t nrx, in mec_hal_i2c_nl_tm_config() argument
1174 if (!ctx) { in mec_hal_i2c_nl_tm_config()
1178 struct mec_i2c_smb_regs *regs = ctx->base; in mec_hal_i2c_nl_tm_config()
1180 ctx->wrcnt = ntx; in mec_hal_i2c_nl_tm_config()
1181 ctx->rdcnt = nrx; in mec_hal_i2c_nl_tm_config()
1211 ctx->cmdctrl = (uint16_t)(tm_cmd & 0xffu); in mec_hal_i2c_nl_tm_config()
1224 uint32_t mec_hal_i2c_nl_tm_event(struct mec_i2c_smb_ctx *ctx) in mec_hal_i2c_nl_tm_event() argument
1227 if (!ctx || !ctx->base) { in mec_hal_i2c_nl_tm_event()
1231 struct mec_i2c_smb_regs *regs = ctx->base; in mec_hal_i2c_nl_tm_event()
1240 if (!tm_cmd && (ctx->wrcnt || ctx->rdcnt)) { in mec_hal_i2c_nl_tm_event()
1249 uint32_t mec_hal_i2c_nl_tm_xfr_count_get(struct mec_i2c_smb_ctx *ctx, uint8_t is_rx) in mec_hal_i2c_nl_tm_xfr_count_get() argument
1254 if (!ctx || !ctx->base) { in mec_hal_i2c_nl_tm_xfr_count_get()
1258 struct mec_i2c_smb_regs *regs = ctx->base; in mec_hal_i2c_nl_tm_xfr_count_get()
1311 uint32_t mec_hal_i2c_nl_tm_transfered(struct mec_i2c_smb_ctx *ctx, uint8_t is_rx) in mec_hal_i2c_nl_tm_transfered() argument
1316 if (!ctx || !ctx->base) { in mec_hal_i2c_nl_tm_transfered()
1321 hwcnt = mec_hal_i2c_nl_tm_xfr_count_get(ctx, is_rx); in mec_hal_i2c_nl_tm_transfered()
1324 if (ctx->rdcnt >= hwcnt) { in mec_hal_i2c_nl_tm_transfered()
1325 nxfr = ctx->rdcnt - hwcnt; in mec_hal_i2c_nl_tm_transfered()
1328 if (ctx->wrcnt >= hwcnt) { in mec_hal_i2c_nl_tm_transfered()
1329 nxfr = ctx->wrcnt - hwcnt; in mec_hal_i2c_nl_tm_transfered()