Skip to content

Slow performance for right half of split board if using by itself and I2C #7522

@nooges

Description

@nooges

Describe the Bug

If using a right half of a split keyboard that does not have I2C pullup resistors on that half and doing #define USE_I2C, the performance on that half is slow. This is because the TIMEOUT value of 100ms gets hit during transport_master() in split_common/transport.c. Adding external pullups makes performance normal again.

Also, adding the following to keyboard_master_setup() in split_util.c to set the internal pullups seems to work as well:

setPinInputHigh(D0);
setPinInputHigh(D1);

Initial proposed solution, to prevent any impact on I2C rise time issues:

  • Add flag indicating if right half has no external I2C pullups (NO_I2C_PULLUPS_RIGHT_HALF)
  • Update keyboard_master_setup() to set internal pullups on I2C pins if right half & NO_I2C_PULLUPS_RIGHT_HALF is defined

System Information

  • Keyboard:
    • Iris
    • Levinson
    • Others (w/no I2C pullups on right half)

Additional Context

TODO:

  • Test with ARM split to verify if I2C pullups should be set for that

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions