it works on mipsel (WRTNode2P board MT7628) openwrt, thank you.
I hv modified send buffer to send at 32 bytes chunk instead of 128, it is MT7628 i2c bug
// send buffer to oled (show)
int oled_send_buffer(struct display_info *disp) {
struct sized_array payload;
uint8_t packet[129];
int i;
packet[0] = OLED_CTRL_BYTE_DATA_STREAM;
payload.size = 33;
payload.array = packet;
for (int index = 0; index < 8; index++) {
for(i=0;i<4;i++)
{
memcpy(packet+1, disp->buffer[index]+i*32, 32);
oled_send(disp, &payload);
}
}
return 0;
}