Thank you Mark for the changes to add bus frequency control to the i2c driver. I tested your changes (with the addition of logging of the frequency).
Before changing the dtb (no clock-frequency entry): sxidog0 at simplebus0 com0 at simplebus0: ns16550, no working fifo com0: console sxitwi0 at simplebus0: clock frequency 100000. iic0 at sxitwi0 bme0 at iic0 addr 0x77: BME280 60 sxitwi1 at simplebus0: clock frequency 100000. iic1 at sxitwi1 bme1 at iic1 addr 0x76: BME280 60 ampintc0 at simplebus0 nirq 160, ncpu 4 sxirtc0 at simplebus0 Then I added a frequency of 50kHz to i2c-0 and 200kHz to i2c-1: i2c@1c2ac00 { compatible = "allwinner,sun6i-a31-i2c"; reg = <0x1c2ac00 0x400>; interrupts = <0x0 0x6 0x4>; clocks = <0x2 0x3b>; resets = <0x2 0x2e>; pinctrl-names = "default"; pinctrl-0 = <0x16>; status = "okay"; #address-cells = <0x1>; #size-cells = <0x0>; clock-frequency = <0x0000c350>; bme@0 { reg = <0x77>; interrupts = <0x0>; compatible = "bosch,bme280"; }; }; i2c@1c2b000 { compatible = "allwinner,sun6i-a31-i2c"; reg = <0x1c2b000 0x400>; interrupts = <0x0 0x7 0x4>; clocks = <0x2 0x3c>; resets = <0x2 0x2f>; pinctrl-names = "default"; pinctrl-0 = <0x17>; status = "okay"; #address-cells = <0x1>; #size-cells = <0x0>; clock-frequency = <0x00030d40>; bme@1 { reg = <0x76>; interrupts = <0x0>; compatible = "bosch,bme280"; }; }; com0: console sxitwi0 at simplebus0: clock frequency 50000. iic0 at sxitwi0 bme0 at iic0 addr 0x77: BME280 60 sxitwi1 at simplebus0: clock frequency 200000. iic1 at sxitwi1 bme1 at iic1 addr 0x76: BME280 60 ampintc0 at simplebus0 nirq 160, ncpu 4 sxirtc0 at simplebus0 I checked the 50 and 200 kHz with a scope on the clock lines.