)]}'
{
  "commit": "0da2e7768b4c2b4dbbb148ebe1606b6b4698fca2",
  "tree": "7041036334f71612cc64c4e8b322db396989084c",
  "parents": [
    "9bcd04bfbbd5599de011176b846ed00ac15a234c"
  ],
  "author": {
    "name": "Daniel Kurtz",
    "email": "djkurtz@chromium.org",
    "time": "Thu Nov 15 17:43:31 2012 +0530"
  },
  "committer": {
    "name": "Wolfram Sang",
    "email": "w.sang@pengutronix.de",
    "time": "Fri Nov 16 13:08:55 2012 +0100"
  },
  "message": "i2c: s3c2410: do not generate STOP for QUIRK_HDMIPHY\n\nThe datasheet says that the STOP sequence should be:\n 1) I2CSTAT.5 \u003d 0\t- Clear BUSY (or \u0027generate STOP\u0027)\n 2) I2CCON.4 \u003d 0\t- Clear IRQPEND\n 3) Wait until the stop condition takes effect.\n 4*) I2CSTAT.4 \u003d 0 \t- Clear TXRXEN\n\nWhere, step \"4*\" is only for buses with the \"HDMIPHY\" quirk.\n\nHowever, after much experimentation, it appears that:\n a) normal buses automatically clear BUSY and transition from\n    Master-\u003eSlave when they complete generating a STOP condition.\n    Therefore, step (3) can be done in doxfer() by polling I2CCON.4\n    after starting the STOP generation here.\n b) HDMIPHY bus does neither, so there is no way to do step 3.\n    There is no indication when this bus has finished generating STOP.\n\nIn fact, we have found that as soon as the IRQPEND bit is cleared in\nstep 2, the HDMIPHY bus generates the STOP condition, and then immediately\nstarts transferring another data byte, even though the bus is supposedly\nstopped.  This is presumably because the bus is still in \"Master\" mode,\nand its BUSY bit is still set.\n\nTo avoid these extra post-STOP transactions on HDMI phy devices, we just\ndisable Serial Output on the bus (I2CSTAT.4 \u003d 0) directly, instead of\nfirst generating a proper STOP condition.  This should float SDA \u0026 SCK\nterminating the transfer.  Subsequent transfers start with a proper START\ncondition, and proceed normally.\n\nThe HDMIPHY bus is an internal bus that always has exactly two devices,\nthe host as Master and the HDMIPHY device as the slave. Skipping the STOP\ncondition has been tested on this bus and works.\n\nAlso, since we disable the bus directly from the isr, we can skip the bus\nidle polling loop at the end of doxfer().\n\nSigned-off-by: Daniel Kurtz \u003cdjkurtz@chromium.org\u003e\nSigned-off-by: Naveen Krishna Chatradhi \u003cch.naveen@samsung.com\u003e\nSigned-off-by: Wolfram Sang \u003cw.sang@pengutronix.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "86e60f598c51288a784f94ed0dc0a82d881a10b6",
      "old_mode": 33188,
      "old_path": "drivers/i2c/busses/i2c-s3c2410.c",
      "new_id": "a44e2130d3e09376a5d21d36440312ae782d9531",
      "new_mode": 33188,
      "new_path": "drivers/i2c/busses/i2c-s3c2410.c"
    }
  ]
}
