Index: head/sys/arm/allwinner/clkng/aw_clk.h =================================================================== --- head/sys/arm/allwinner/clkng/aw_clk.h +++ head/sys/arm/allwinner/clkng/aw_clk.h @@ -72,6 +72,7 @@ #define AW_CLK_FACTOR_ZERO_BASED 0x0002 #define AW_CLK_FACTOR_HAS_COND 0x0004 #define AW_CLK_FACTOR_FIXED 0x0008 +#define AW_CLK_FACTOR_ZERO_IS_ONE 0x0010 struct aw_clk_factor { uint32_t shift; /* Shift bits for the factor */ @@ -110,6 +111,8 @@ return (factor->value); factor_val = (val & factor->mask) >> factor->shift; + if (factor_val == 0 && (factor->flags & AW_CLK_FACTOR_ZERO_IS_ONE)) + factor_val = 1; if (factor->flags & AW_CLK_FACTOR_POWER_OF_TWO) factor_val = 1 << factor_val;