staticint stm32_lptimer_detect_encoder(struct stm32_lptimer *ddata)
{
u32 val; int ret;
/* * Quadrature encoder mode bit can only be written and read back when * Low-Power Timer supports it.
*/
ret = regmap_update_bits(ddata->regmap, STM32_LPTIM_CFGR,
STM32_LPTIM_ENC, STM32_LPTIM_ENC); if (ret) return ret;
ret = regmap_read(ddata->regmap, STM32_LPTIM_CFGR, &val); if (ret) return ret;
ret = regmap_update_bits(ddata->regmap, STM32_LPTIM_CFGR,
STM32_LPTIM_ENC, 0); if (ret) return ret;
ddata->has_encoder = !!(val & STM32_LPTIM_ENC);
return 0;
}
staticint stm32_lptimer_detect_hwcfgr(struct stm32_lptimer *ddata)
{
u32 val; int ret;
ret = regmap_read(ddata->regmap, STM32_LPTIM_VERR, &ddata->version); if (ret) return ret;
/* Try to guess parameters from HWCFGR: e.g. encoder mode (STM32MP15) */
ret = regmap_read(ddata->regmap, STM32_LPTIM_HWCFGR1, &val); if (ret) return ret;
/* Fallback to legacy init if HWCFGR isn't present */ if (!val) return stm32_lptimer_detect_encoder(ddata);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.