)]}'
{
  "log": [
    {
      "commit": "a5880a9e5bb40fbae55de60051d69a29091053c3",
      "tree": "e61272cc5ae771f435ce4e20ed9e2c7f933cd633",
      "parents": [
        "acfa747baf73922021a047f2d87a2d866f5dbab5"
      ],
      "author": {
        "name": "Feng Tang",
        "email": "feng.tang@intel.com",
        "time": "Fri Nov 19 11:01:48 2010 +0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Nov 30 17:32:32 2010 -0800"
      },
      "message": "serial: mfd: adjust the baud rate setting\n\nPrevious baud rate setting code only has been tested with 3.5M/9600/\n115200/230400/460800 bps, and recently we got a 3M bps device to test,\nwhich needs to modify current MUL register setting, and with this\npatch 2.5M/2M/1.5M/1M/0.5M should also work as they just use a MUL\nvalue scale down from 3M\u0027s.\n\nAlso got some reference register setting from silicon guys for\ndifferent baud rates, which tries to keep the pre-scalar register value\nto 16.\n\nSigned-off-by: Feng Tang \u003cfeng.tang@intel.com\u003e\nCc: stable \u003cstable@kernel.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "73ecf3a6e3f0206bf56a0fefe3b3eda042fb7034",
      "tree": "866f0ebb2b148479e93b5ac955097b1cc94ceb4e",
      "parents": [
        "b9da0571050c09863e59f94d0b8594a290d61b88",
        "cd3ecad19aea8debae9a48b53de2ec7a571f24e9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 19:59:04 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 19:59:04 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6: (49 commits)\n  serial8250: ratelimit \"too much work\" error\n  serial: bfin_sport_uart: speed up sport RX sample rate to be 3% faster\n  serial: abstraction for 8250 legacy ports\n  serial/imx: check that the buffer is non-empty before sending it out\n  serial: mfd: add more baud rates support\n  jsm: Remove the uart port on errors\n  Alchemy: Add UART PM methods.\n  8250: allow platforms to override PM hook.\n  altera_uart: Don\u0027t use plain integer as NULL pointer\n  altera_uart: Fix missing prototype for registering an early console\n  altera_uart: Fixup type usage of port flags\n  altera_uart: Make it possible to use Altera UART and 8250 ports together\n  altera_uart: Add support for different address strides\n  altera_uart: Add support for getting mapbase and IRQ from resources\n  altera_uart: Add support for polling mode (IRQ-less)\n  serial: Factor out uart_poll_timeout() from 8250 driver\n  serial: mark the 8250 driver as maintained\n  serial: 8250: Don\u0027t delay after transmitter is ready.\n  tty: MAINTAINERS: add drivers/serial/jsm/ as maintained driver\n  vcs: invoke the vt update callback when /dev/vcs* is written to\n  ...\n"
    },
    {
      "commit": "092e0e7e520a1fca03e13c9f2d157432a8657ff2",
      "tree": "451897252c4c08c4b5a8ef535da156f1e817e80b",
      "parents": [
        "79f14b7c56d3b3ba58f8b43d1f70b9b71477a800",
        "776c163b1b93c8dfa5edba885bc2bfbc2d228a5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "message": "Merge branch \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl\n\n* \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:\n  vfs: make no_llseek the default\n  vfs: don\u0027t use BKL in default_llseek\n  llseek: automatically add .llseek fop\n  libfs: use generic_file_llseek for simple_attr\n  mac80211: disallow seeks in minstrel debug code\n  lirc: make chardev nonseekable\n  viotape: use noop_llseek\n  raw: use explicit llseek file operations\n  ibmasmfs: use generic_file_llseek\n  spufs: use llseek in all file operations\n  arm/omap: use generic_file_llseek in iommu_debug\n  lkdtm: use generic_file_llseek in debugfs\n  net/wireless: use generic_file_llseek in debugfs\n  drm: use noop_llseek\n"
    },
    {
      "commit": "e5586eccc9aaf485985480e4d3049acffaa3fa90",
      "tree": "f714f207536de2f04af5e3c6cf29348724e1585d",
      "parents": [
        "abf4f6a51477a68fe144b0c62f10c410b0c41378"
      ],
      "author": {
        "name": "Feng Tang",
        "email": "feng.tang@intel.com",
        "time": "Thu Oct 14 17:47:35 2010 +0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Oct 22 10:20:10 2010 -0700"
      },
      "message": "serial: mfd: add more baud rates support\n\nAdd more baud rates support referring the baud_table[] defined\nin drivers/char/tty_ioctl.c: 3000000/2000000/1000000/500000\n\nSigned-off-by: Feng Tang \u003cfeng.tang@intel.com\u003e\nAcked-by: Alan Cox \u003calan.cox@linux.intel.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "a95898114059e1038f3f7ee9bd2e43aefa62709a",
      "tree": "a1d559d638fdfe2ee668628827c5a75927362ac8",
      "parents": [
        "de838a93cbf35671f890360b886a5c2a8a5d1aa4"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Thu Aug 12 09:50:09 2010 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Oct 22 10:19:58 2010 -0700"
      },
      "message": "serial: mfd: snprintf() returns largish values\n\nsnprintf() returns the number of bytes which would have been written so\nit can be larger than the size of the buffer.  In this case it\u0027s fine,\nbut people copy and paste this code so I\u0027ve fixed it.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nAcked-by: Feng Tang \u003cfeng.tang@intel.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "6038f373a3dc1f1c26496e60b6c40b164716f07e",
      "tree": "a0d3bbd026eea41b9fc36b8c722cbaf56cd9f825",
      "parents": [
        "1ec5584e3edf9c4bf2c88c846534d19cf986ba11"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Aug 15 18:52:59 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Oct 15 15:53:27 2010 +0200"
      },
      "message": "llseek: automatically add .llseek fop\n\nAll file_operations should get a .llseek operation so we can make\nnonseekable_open the default for future file operations without a\n.llseek pointer.\n\nThe three cases that we can automatically detect are no_llseek, seq_lseek\nand default_llseek. For cases where we can we can automatically prove that\nthe file offset is always ignored, we use noop_llseek, which maintains\nthe current behavior of not returning an error from a seek.\n\nNew drivers should normally not use noop_llseek but instead use no_llseek\nand call nonseekable_open at open time.  Existing drivers can be converted\nto do the same when the maintainer knows for certain that no user code\nrelies on calling seek on the device file.\n\nThe generated code is often incorrectly indented and right now contains\ncomments that clarify for each added line why a specific variant was\nchosen. In the version that gets submitted upstream, the comments will\nbe gone and I will manually fix the indentation, because there does not\nseem to be a way to do that using coccinelle.\n\nSome amount of new code is currently sitting in linux-next that should get\nthe same modifications, which I will do at the end of the merge window.\n\nMany thanks to Julia Lawall for helping me learn to write a semantic\npatch that does all this.\n\n\u003d\u003d\u003d\u003d\u003d begin semantic patch \u003d\u003d\u003d\u003d\u003d\n// This adds an llseek\u003d method to all file operations,\n// as a preparation for making no_llseek the default.\n//\n// The rules are\n// - use no_llseek explicitly if we do nonseekable_open\n// - use seq_lseek for sequential files\n// - use default_llseek if we know we access f_pos\n// - use noop_llseek if we know we don\u0027t access f_pos,\n//   but we still want to allow users to call lseek\n//\n@ open1 exists @\nidentifier nested_open;\n@@\nnested_open(...)\n{\n\u003c+...\nnonseekable_open(...)\n...+\u003e\n}\n\n@ open exists@\nidentifier open_f;\nidentifier i, f;\nidentifier open1.nested_open;\n@@\nint open_f(struct inode *i, struct file *f)\n{\n\u003c+...\n(\nnonseekable_open(...)\n|\nnested_open(...)\n)\n...+\u003e\n}\n\n@ read disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n   *off \u003d E\n|\n   *off +\u003d E\n|\n   func(..., off, ...)\n|\n   E \u003d *off\n)\n...+\u003e\n}\n\n@ read_no_fpos disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ write @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n  *off \u003d E\n|\n  *off +\u003d E\n|\n  func(..., off, ...)\n|\n  E \u003d *off\n)\n...+\u003e\n}\n\n@ write_no_fpos @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ fops0 @\nidentifier fops;\n@@\nstruct file_operations fops \u003d {\n ...\n};\n\n@ has_llseek depends on fops0 @\nidentifier fops0.fops;\nidentifier llseek_f;\n@@\nstruct file_operations fops \u003d {\n...\n .llseek \u003d llseek_f,\n...\n};\n\n@ has_read depends on fops0 @\nidentifier fops0.fops;\nidentifier read_f;\n@@\nstruct file_operations fops \u003d {\n...\n .read \u003d read_f,\n...\n};\n\n@ has_write depends on fops0 @\nidentifier fops0.fops;\nidentifier write_f;\n@@\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n...\n};\n\n@ has_open depends on fops0 @\nidentifier fops0.fops;\nidentifier open_f;\n@@\nstruct file_operations fops \u003d {\n...\n .open \u003d open_f,\n...\n};\n\n// use no_llseek if we call nonseekable_open\n////////////////////////////////////////////\n@ nonseekable1 depends on !has_llseek \u0026\u0026 has_open @\nidentifier fops0.fops;\nidentifier nso ~\u003d \"nonseekable_open\";\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d nso, ...\n+.llseek \u003d no_llseek, /* nonseekable */\n};\n\n@ nonseekable2 depends on !has_llseek @\nidentifier fops0.fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d open_f, ...\n+.llseek \u003d no_llseek, /* open uses nonseekable */\n};\n\n// use seq_lseek for sequential files\n/////////////////////////////////////\n@ seq depends on !has_llseek @\nidentifier fops0.fops;\nidentifier sr ~\u003d \"seq_read\";\n@@\nstruct file_operations fops \u003d {\n...  .read \u003d sr, ...\n+.llseek \u003d seq_lseek, /* we have seq_read */\n};\n\n// use default_llseek if there is a readdir\n///////////////////////////////////////////\n@ fops1 depends on !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier readdir_e;\n@@\n// any other fop is used that changes pos\nstruct file_operations fops \u003d {\n... .readdir \u003d readdir_e, ...\n+.llseek \u003d default_llseek, /* readdir is present */\n};\n\n// use default_llseek if at least one of read/write touches f_pos\n/////////////////////////////////////////////////////////////////\n@ fops2 depends on !fops1 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read.read_f;\n@@\n// read fops use offset\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d default_llseek, /* read accesses f_pos */\n};\n\n@ fops3 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+\t.llseek \u003d default_llseek, /* write accesses f_pos */\n};\n\n// Use noop_llseek if neither read nor write accesses f_pos\n///////////////////////////////////////////////////////////\n\n@ fops4 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !fops3 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\nidentifier write_no_fpos.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n .read \u003d read_f,\n...\n+.llseek \u003d noop_llseek, /* read and write both use no f_pos */\n};\n\n@ depends on has_write \u0026\u0026 !has_read \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write_no_fpos.write_f;\n@@\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+.llseek \u003d noop_llseek, /* write uses no f_pos */\n};\n\n@ depends on has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\n@@\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d noop_llseek, /* read uses no f_pos */\n};\n\n@ depends on !has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\n@@\nstruct file_operations fops \u003d {\n...\n+.llseek \u003d noop_llseek, /* no read or write fn */\n};\n\u003d\u003d\u003d\u003d\u003d End semantic patch \u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "63d66cab4755edc86ddc5b78cae657a3fda908e1",
      "tree": "88543405c166053e72be4046f89f224e9ce46dcf",
      "parents": [
        "399f1e30ac17b77d383444aff480c7390f5adf2a"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Thu Sep 30 15:15:28 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 01 10:50:58 2010 -0700"
      },
      "message": "drivers/serial/mfd.c needs slab.h\n\nalpha allmodconfig:\n\n  drivers/serial/mfd.c:144: error: implicit declaration of function \u0027kzalloc\u0027\n  drivers/serial/mfd.c:144: warning: assignment makes pointer from integer without a cast\n\nCc: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e3671ac429fe50cf0c1b4f1dc4b7237207f1d956",
      "tree": "aff4ea579c4fc83abde7b889cce8e6107f8e1be9",
      "parents": [
        "476f771cb9b6cd4845dcd18f16a2f03a89ee63fc"
      ],
      "author": {
        "name": "Feng Tang",
        "email": "feng.tang@intel.com",
        "time": "Mon Sep 06 13:41:02 2010 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Sep 20 16:30:00 2010 -0700"
      },
      "message": "serial: mfd: fix bug in serial_hsu_remove()\n\nMedfield HSU driver deal with 4 pci devices(3 uart ports + 1 dma controller),\nso in pci remove func, we need handle them differently\n\nSigned-off-by: Feng Tang \u003cfeng.tang@intel.com\u003e\nSigned-off-by: Alan Cox \u003calan@linux.intel.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "3c4108c82f7769fcd265dc77a5bb0c6d8bcea25f",
      "tree": "9b5c09318f884a7ba279d4da63551098ecba69a2",
      "parents": [
        "06c77e21ae7c199435097116b8212b0761fc8ba8"
      ],
      "author": {
        "name": "Feng Tang",
        "email": "feng.tang@intel.com",
        "time": "Tue Jul 27 08:20:52 2010 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Aug 10 13:47:46 2010 -0700"
      },
      "message": "hsu: call PCI pm hooks in suspend/resume function\n\nAlso add check for dma controller or the uart ports.\n\nSigned-off-by: Feng Tang \u003cfeng.tang@intel.com\u003e\nSigned-off-by: Alan Cox \u003calan@linux.intel.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "06c77e21ae7c199435097116b8212b0761fc8ba8",
      "tree": "2ae53076c07cbf8c112345aeeedb26a22ad7fd59",
      "parents": [
        "669b7a0938e759097c150400cd36bd49befaf5bb"
      ],
      "author": {
        "name": "Feng Tang",
        "email": "feng.tang@intel.com",
        "time": "Tue Jul 27 08:20:42 2010 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Aug 10 13:47:46 2010 -0700"
      },
      "message": "hsu: some code cleanup\n\nMajor changes are:\n* refine the comments in the driver\n* remove unused member from structure \"hsu_port\"\n* extended spin_lock protoction for dma mode in port_irq()\n\nSigned-off-by: Feng Tang \u003cfeng.tang@intel.com\u003e\nSigned-off-by: Alan Cox \u003calan@linux.intel.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "669b7a0938e759097c150400cd36bd49befaf5bb",
      "tree": "b7244699ea1e8bf04c50dde2b9efeaf504f44bc6",
      "parents": [
        "d843fc6e9dc9bee7061b6833594860ea93ad98e1"
      ],
      "author": {
        "name": "Feng Tang",
        "email": "feng.tang@intel.com",
        "time": "Tue Jul 27 08:20:32 2010 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Aug 10 13:47:46 2010 -0700"
      },
      "message": "hsu: add a periodic timer to check dma rx channel\n\nA general problem for uart rx dma channel is you never know when\nand how much data will be received, so usually preset it a DMA\ndescriptor with a big size, and rely on DMA RX timeout IRQ to\nknow there is some data in rx channel.\n\nFor a RX data size of multiple of MOTSR, there will be no timeout\nIRQ issued, thus OS will never be notified about that.\n\nThis is a work around for that, current timer frequency is 5 times\nper second, it should vary according to the baud rate\n\nWhen future silicon version fix the problem, this workaround need\nbe removed\n\nSigned-off-by: Feng Tang \u003cfeng.tang@intel.com\u003e\nSigned-off-by: Alan Cox \u003calan@linux.intel.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "d843fc6e9dc9bee7061b6833594860ea93ad98e1",
      "tree": "825f25909de7b4056a5c8e4180b2068fff339070",
      "parents": [
        "464eb8f596fcbdadcfbbdb4a84847ffcb93cc4dd"
      ],
      "author": {
        "name": "Feng Tang",
        "email": "feng.tang@intel.com",
        "time": "Tue Jul 27 08:20:22 2010 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Aug 10 13:47:46 2010 -0700"
      },
      "message": "hsu: driver for Medfield High Speed UART device\n\nThis is a PCI \u0026 UART driver, which suppors both PIO and DMA mode\nUART operation. It has 3 identical UART ports and one internal\nDMA controller.\n\nCurrent FW will export 4 pci devices for hsu: 3 uart ports and 1\ndma controller, each has one IRQ line. And we need to discuss the\ndevice model, one PCI device covering whole HSU should be a better\nmodel, but there is a problem of how to export the 4 IRQs info\n\nCurrent driver set the highest baud rate to 2746800bps, which is\neasy to scale down to 115200/230400.... To suport higher baud rate,\nwe need add special process, change DLAB/DLH/PS/DIV/MUL registers\nall together.\n\n921600 is the highest baud rate that has been tested with Bluetooth\nmodem connected to HSU port 0. Will test more when there is right\nBT firmware.\n\nCurrent version contains several work around for A0\u0027s Silicon bugs\n\nSigned-off-by: Feng Tang \u003cfeng.tang@intel.com\u003e\nSigned-off-by: Alan Cox \u003calan@linux.intel.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    }
  ]
}
