)]}'
{
  "commit": "91a687d8fe39bf100286138f0ed1ef1e7b32cfb8",
  "tree": "74c93c11d714195a1775cd83e957d88a098abdac",
  "parents": [
    "a4faa54e3aa2b4a8cdc65e36ac70fd17d3f86629"
  ],
  "author": {
    "name": "Stephen Warren",
    "email": "swarren@nvidia.com",
    "time": "Thu Jun 13 11:24:11 2013 -0600"
  },
  "committer": {
    "name": "Greg Kroah-Hartman",
    "email": "gregkh@linuxfoundation.org",
    "time": "Mon Jun 17 13:54:48 2013 -0700"
  },
  "message": "USB: EHCI: tegra: fix circular module dependencies\n\nThe Tegra EHCI driver directly calls various functions in the Tegra USB\nPHY driver. The reverse is also true; the PHY driver calls into the EHCI\ndriver. This is problematic when the two are built as modules.\n\nThe calls from the PHY to EHCI driver were originally added in commit\nbbdabdb \"usb: add APIs to access host registers from Tegra PHY\", for the\nfollowing reasons:\n\n1) The register being touched is an EHCI register, so logically only the\n   EHCI driver should touch it.\n2) (1) implies that some locking may be needed to correctly implement the\n   r/m/w access to this shared register.\n3) We were expecting to pass only the PHY register space to the Tegra PHY\n   driver, and hence it would not have access to touch the shared\n   registers.\n\nTo solve this, that commit added functions in the EHCI driver to touch the\nshared register on behalf of the PHY driver.\n\nIn practice, we ended up not having any locking in the implementaiton of\nthose functions, and I\u0027ve been led to believe this is safe. Equally, (3)\ndid not happen either. Hence, it is possible for the PHY driver to touch\nthe shared register directly.\n\nGiven that, this patch moves the code to touch the shared register back\ninto the PHY driver, to eliminate the module problems. If we actually\nneed locking or co-ordination in the future, I propose we put the lock\nsupport into some pre-existing core module, or into a third separate\nmodule, in order to avoid the circular dependencies.\n\nI apologize for my contribution to code churn here.\n\nSigned-off-by: Stephen Warren \u003cswarren@nvidia.com\u003e\nAcked-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nTested-by: Thierry Reding \u003cthierry.reding@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "dde518969798ab4769a590b08d1a80201468fce4",
      "old_mode": 33188,
      "old_path": "drivers/usb/host/ehci-tegra.c",
      "new_id": "80634292efeed3ffae04fb813987129d65d3fdf0",
      "new_mode": 33188,
      "new_path": "drivers/usb/host/ehci-tegra.c"
    },
    {
      "type": "modify",
      "old_id": "f0727f20e8039a4a26af61f1accea7048e53d5bb",
      "old_mode": 33188,
      "old_path": "drivers/usb/phy/phy-tegra-usb.c",
      "new_id": "3446245e932bf1ff78aac8c396b3eed6659a0181",
      "new_mode": 33188,
      "new_path": "drivers/usb/phy/phy-tegra-usb.c"
    },
    {
      "type": "modify",
      "old_id": "0cd15d2df53df7751a5504babee98a214aa7f1cc",
      "old_mode": 33188,
      "old_path": "include/linux/usb/tegra_usb_phy.h",
      "new_id": "d2ca919a5b738387b28293918ce9d2e47ccc053c",
      "new_mode": 33188,
      "new_path": "include/linux/usb/tegra_usb_phy.h"
    }
  ]
}
