On Wed, 4 Feb 2026 18:34:50 +0200 Erikas Bitovtas <[email protected]> wrote:
> > I assume you have the hardware and can do a test to confirm this. :-) > > I tested the formula used in Xiaomi's driver in the mainline kernel and > compared it against the downstream kernel, and the lux readings match between > them. Therefore, I suppose this solution could be good for now. > Although my formula for calculating scale is wrong - it should be inverse > proportionate to integration time. So: > 80ms -> 1.28 > 160ms -> 0.64 (what Xiaomi uses) > 320ms -> 0.32 > 640ms -> 0.16 > This can be achieved by multiplying als_trans_ratio by integration time used > in > Xiaomi's driver, and then dividing by integration time we have set up at the > given moment. > For example, suppose we set our int time in mainline to 80ms > 16 (als_trans_ration) * 16 (160ms / 10000) = 256 > 256 / 8 (80ms / 10000) = 32 > Starting here, we calculate based on how Xiaomi calculates scale for their > values: > 32 * 40000 = 1280000 > val = 1280000 / 1000000 = 1 > val2 = 1280000 % 1000000 = 280000 > And that leaves us with scale of 1.280000. > Of course, comments on how we came to this value would be included as well. Only think I'd add to this is that if we have numbers for a sensor in a specific device, it's common for that devices packaging to attenuate the measured light level a little. For that reason we do sometimes have a tweak factor in DT. Jonathan

