Lines Matching full:setup
139 * @sudat_min: Min data setup time (ns)
158 * struct stm32_i2c_setup - private I2C timing setup parameters
180 * @scldel: Data setup time
197 struct stm32_i2c_setup *setup; member
489 static int stm32_i2c_compute_solutions(struct stm32_i2c_setup *setup, in stm32_i2c_compute_solutions() argument
495 setup->clock_src); in stm32_i2c_compute_solutions()
501 af_delay_min = setup->analog_filter ? in stm32_i2c_compute_solutions()
503 af_delay_max = setup->analog_filter ? in stm32_i2c_compute_solutions()
506 sdadel_min = setup->fall_time - i2c_specs[setup->speed].hddat_min - in stm32_i2c_compute_solutions()
507 af_delay_min - (setup->dnf + 3) * i2cclk; in stm32_i2c_compute_solutions()
509 sdadel_max = i2c_specs[setup->speed].vddat_max - setup->rise_time - in stm32_i2c_compute_solutions()
510 af_delay_max - (setup->dnf + 4) * i2cclk; in stm32_i2c_compute_solutions()
512 scldel_min = setup->rise_time + i2c_specs[setup->speed].sudat_min; in stm32_i2c_compute_solutions()
559 static int stm32_i2c_choose_solution(struct stm32_i2c_setup *setup, in stm32_i2c_choose_solution() argument
565 setup->speed_freq); in stm32_i2c_choose_solution()
568 setup->clock_src); in stm32_i2c_choose_solution()
576 af_delay_min = setup->analog_filter ? in stm32_i2c_choose_solution()
578 dnf_delay = setup->dnf * i2cclk; in stm32_i2c_choose_solution()
581 clk_max = STM32_NSEC_PER_SEC / i2c_specs[setup->speed].rate_min; in stm32_i2c_choose_solution()
582 clk_min = STM32_NSEC_PER_SEC / i2c_specs[setup->speed].rate_max; in stm32_i2c_choose_solution()
599 if ((tscl_l < i2c_specs[setup->speed].l_min) || in stm32_i2c_choose_solution()
608 setup->rise_time + setup->fall_time; in stm32_i2c_choose_solution()
611 (tscl_h >= i2c_specs[setup->speed].h_min) && in stm32_i2c_choose_solution()
638 struct stm32_i2c_setup *setup, in stm32_i2c_compute_timing() argument
645 if (setup->speed >= STM32_I2C_SPEED_END) { in stm32_i2c_compute_timing()
647 setup->speed, STM32_I2C_SPEED_END - 1); in stm32_i2c_compute_timing()
651 if ((setup->rise_time > i2c_specs[setup->speed].rise_max) || in stm32_i2c_compute_timing()
652 (setup->fall_time > i2c_specs[setup->speed].fall_max)) { in stm32_i2c_compute_timing()
655 setup->rise_time, i2c_specs[setup->speed].rise_max, in stm32_i2c_compute_timing()
656 setup->fall_time, i2c_specs[setup->speed].fall_max); in stm32_i2c_compute_timing()
660 if (setup->dnf > STM32_I2C_DNF_MAX) { in stm32_i2c_compute_timing()
662 setup->dnf, STM32_I2C_DNF_MAX); in stm32_i2c_compute_timing()
666 if (setup->speed_freq > i2c_specs[setup->speed].rate) { in stm32_i2c_compute_timing()
668 setup->speed_freq, i2c_specs[setup->speed].rate); in stm32_i2c_compute_timing()
674 ret = stm32_i2c_compute_solutions(setup, &solutions); in stm32_i2c_compute_timing()
678 ret = stm32_i2c_choose_solution(setup, &solutions, s); in stm32_i2c_compute_timing()
706 struct stm32_i2c_setup *setup = i2c_priv->setup; in stm32_i2c_setup_timing() local
709 setup->speed = i2c_priv->speed; in stm32_i2c_setup_timing()
710 setup->speed_freq = i2c_specs[setup->speed].rate; in stm32_i2c_setup_timing()
711 setup->clock_src = clk_get_rate(&i2c_priv->clk); in stm32_i2c_setup_timing()
713 if (!setup->clock_src) { in stm32_i2c_setup_timing()
719 ret = stm32_i2c_compute_timing(i2c_priv, setup, timing); in stm32_i2c_setup_timing()
725 setup->speed = i2c_priv->speed; in stm32_i2c_setup_timing()
726 setup->speed_freq = in stm32_i2c_setup_timing()
727 i2c_specs[setup->speed].rate; in stm32_i2c_setup_timing()
729 __func__, i2c_specs[setup->speed].rate); in stm32_i2c_setup_timing()
742 setup->speed, setup->speed_freq, setup->clock_src); in stm32_i2c_setup_timing()
744 setup->rise_time, setup->fall_time); in stm32_i2c_setup_timing()
746 setup->analog_filter ? "On" : "Off", setup->dnf); in stm32_i2c_setup_timing()
774 if (i2c_priv->setup->analog_filter) in stm32_i2c_hw_config()
849 i2c_priv->setup = (struct stm32_i2c_setup *)dev_get_driver_data(dev); in stm32_ofdata_to_platdata()
850 if (!i2c_priv->setup) in stm32_ofdata_to_platdata()
855 i2c_priv->setup->rise_time = rise_time; in stm32_ofdata_to_platdata()
859 i2c_priv->setup->fall_time = fall_time; in stm32_ofdata_to_platdata()