)]}'
{
  "commit": "1bc2962e530527de829bf4b1eb99f24dc25d1828",
  "tree": "a7332eea2f0bbc00bb1342b813bd73a1e840121f",
  "parents": [
    "024a6b95181f2df6090975c8a293499d24bf8b28"
  ],
  "author": {
    "name": "Mark Brown",
    "email": "broonie@opensource.wolfsonmicro.com",
    "time": "Fri Apr 02 14:15:09 2010 +0100"
  },
  "committer": {
    "name": "Ben Dooks",
    "email": "ben-linux@fluff.org",
    "time": "Thu May 20 00:18:58 2010 +0100"
  },
  "message": "i2c-s3c2410: Remove unconditional 1ms delay on each transfer\n\nThe S3C I2C controller indicates completion of I2C transfers before\nthe bus has a stop condition on it. In order to ensure that we do not\nattempt to start a new transfer before the bus is idle the driver\ncurrently inserts a 1ms delay. This is vastly larger than is generally\nrequired and has a visible effect on performance under load, such as\nwhen bringing up audio CODECs or reading back status information with\nnon-bulk I2C reads.\n\nReplace the sleep with a spin on the IIC status register for up to 1ms.\nThis will busy wait but testing on my SMDK6410 system indicates that\nthe overwhelming majority of transactions complete on the first spin,\nwith maximum latencies of less than 10 spins so the absolute overhead\nof busy waiting should be at worst comprable to msleep(), and the\noverall system performance is dramatically improved.\n\nThe main risk is poor interaction with multimaster systems where\nwe may miss the bus going idle before the next transaction. Defend\nagainst this by falling back to the original 1ms delay after 20 spins.\n\nThe overall effect in my testing is an approximately 20% improvement\nin kernel startup time.\n\nSigned-off-by: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\nSigned-off-by: Ben Dooks \u003cben-linux@fluff.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d27072b2249ff5d3236c2ee1da0469e1d694616a",
      "old_mode": 33188,
      "old_path": "drivers/i2c/busses/i2c-s3c2410.c",
      "new_id": "ec3256cce91e08a485d475e71ac1b61e408fd52e",
      "new_mode": 33188,
      "new_path": "drivers/i2c/busses/i2c-s3c2410.c"
    }
  ]
}
