)]}'
{
  "commit": "45e91a278cd31019ad6ed5a465661001fbaee065",
  "tree": "c8cf0b31e69ff5efae8c283369fc67aeab4a6e5c",
  "parents": [
    "455a6fc86e833d1165c68d9dbaef8b0188875bc5"
  ],
  "author": {
    "name": "Daniel Thompson",
    "email": "daniel.thompson@linaro.org",
    "time": "Mon Jun 04 13:46:29 2018 +0100"
  },
  "committer": {
    "name": "Nico Huber",
    "email": "nico.h@gmx.de",
    "time": "Fri Aug 17 21:17:13 2018 +0000"
  },
  "message": "programmer: Add Developerbox/CP2104 bit bang driver\n\nThe 96Boards Developerbox (a.k.a. Synquacer E-series) provides a CP2102\ndebug UART with its GPIO pins hooked up to the SPI NOR FLASH. The\ncircuit is intended to provide emergency recovery functions without\nrequiring any additional tools (such as a JTAG or SPI programmer). This\nwas expected to be very slow (and it is) but CP2102 is much cheaper than\na full dual channel USB comms chip.\n\nRead performance is roughly on par with a 2400 baud modem (between 60\nand 70 minutes per megabyte if you prefer) and write performance is 50%\nslower still. The full recovery process, with backup and verification of\n4MB data written takes between 14 and 15 hours. Thus it is only really\npractical as an emergency recovery tool, firmware developers will need\nto use an alternative programmer.\n\nChange-Id: I2547a96c1a2259ad0d52cd4b6ef42261b37cccf3\nSigned-off-by: Daniel Thompson \u003cdaniel.thompson@linaro.org\u003e\nSigned-off-by: Nico Huber \u003cnico.huber@secunet.com\u003e\nReviewed-on: https://review.coreboot.org/26948\nTested-by: build bot (Jenkins) \u003cno-reply@coreboot.org\u003e\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-by: Paul Menzel \u003cpaulepanter@users.sourceforge.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "cd729724baf8c6fd61ce7f76dc73895774287157",
      "old_mode": 33188,
      "old_path": "Makefile",
      "new_id": "ddfd71169c81d7795128fbd78f13bebb39a28a81",
      "new_mode": 33188,
      "new_path": "Makefile"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8482dea17f31cf991f864765e9e1eeccbfed0b3f",
      "new_mode": 33188,
      "new_path": "developerbox_spi.c"
    },
    {
      "type": "modify",
      "old_id": "1866a18aeb802cbf61221563f9d24bdda59735ce",
      "old_mode": 33188,
      "old_path": "flashrom.c",
      "new_id": "094630ccfbb23a53c59771aeb2d1661329d9121a",
      "new_mode": 33188,
      "new_path": "flashrom.c"
    },
    {
      "type": "modify",
      "old_id": "7e530b632c9120fdad8718afff7fafd0cc58156d",
      "old_mode": 33188,
      "old_path": "programmer.h",
      "new_id": "300cf5f1659fdf112dc17fc275be45c969d78cc1",
      "new_mode": 33188,
      "new_path": "programmer.h"
    }
  ]
}
