lkml.org 
[lkml]   [2020]   [Jun]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v2] HID: i2c-hid: Use block reads when possible to save power
    On Tue, Jun 16, 2020 at 08:49:51AM -0700, Sultan Alsawaf wrote:
    > From: Sultan Alsawaf <sultan@kerneltoast.com>
    >
    > We have no way of knowing how large an incoming payload is going to be,
    > so the only strategy available up until now has been to always retrieve
    > the maximum possible report length over i2c, which can be quite
    > inefficient. For devices that send reports in block read format, the i2c
    > controller driver can read the payload length on the fly and terminate
    > the i2c transaction early, resulting in considerable power savings.
    >
    > On a Dell Precision 15 5540 with an i9-9880H, resting my finger on the
    > touchpad causes psys power readings to go up by about 4W and hover there
    > until I remove my finger. With this patch, my psys readings go from 4.7W
    > down to 3.1W, yielding about 1.6W in savings. This is because my
    > touchpad's max report length is 60 bytes, but all of the regular reports
    > it sends for touch events are only 32 bytes, so the i2c transfer is
    > roughly halved for the common case.

    > + /* Try to do a block read if the size fits in one byte */
    > + flags = size > 255 ? I2C_M_RD : I2C_M_RD | I2C_M_RECV_LEN;

    AFAIR SMBus specification tells about 256. Why 255?

    Andi, am I correct?

    --
    With Best Regards,
    Andy Shevchenko


    \
     
     \ /
      Last update: 2020-06-16 18:43    [W:5.123 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site