On Thu, Nov 22, 2012 at 11:47:59AM +0200, Terje Bergstrom wrote: > Add nvhost, the driver for host1x and 2D, which is a client device > for host1x. > > Change-Id: Id93a28491dc2d54049e0adce4ad287c5985b2bca > Signed-off-by: Terje Bergstrom <tbergstrom@xxxxxxxxxx> > Signed-off-by: Arto Merilainen <amerilainen@xxxxxxxxxx> > --- > drivers/video/Kconfig | 2 + > drivers/video/Makefile | 2 + > drivers/video/tegra/host/Kconfig | 20 + > drivers/video/tegra/host/Makefile | 21 + > drivers/video/tegra/host/bus_client.c | 101 ++++ > drivers/video/tegra/host/bus_client.h | 32 ++ > drivers/video/tegra/host/chip_support.c | 68 +++ > drivers/video/tegra/host/chip_support.h | 179 +++++++ > drivers/video/tegra/host/debug.c | 255 ++++++++++ > drivers/video/tegra/host/debug.h | 50 ++ > drivers/video/tegra/host/dev.c | 104 ++++ > drivers/video/tegra/host/dev.h | 33 ++ > drivers/video/tegra/host/dmabuf.c | 151 ++++++ > drivers/video/tegra/host/dmabuf.h | 51 ++ > drivers/video/tegra/host/host1x/Makefile | 6 + > drivers/video/tegra/host/host1x/host1x.c | 320 ++++++++++++ > drivers/video/tegra/host/host1x/host1x.h | 97 ++++ > .../video/tegra/host/host1x/host1x01_hardware.h | 157 ++++++ > drivers/video/tegra/host/host1x/host1x_cdma.c | 488 ++++++++++++++++++ > drivers/video/tegra/host/host1x/host1x_cdma.h | 39 ++ > drivers/video/tegra/host/host1x/host1x_channel.c | 157 ++++++ > drivers/video/tegra/host/host1x/host1x_debug.c | 405 +++++++++++++++ > drivers/video/tegra/host/host1x/host1x_intr.c | 263 ++++++++++ > drivers/video/tegra/host/host1x/host1x_syncpt.c | 170 +++++++ > .../video/tegra/host/host1x/hw_host1x01_channel.h | 182 +++++++ > drivers/video/tegra/host/host1x/hw_host1x01_sync.h | 398 +++++++++++++++ > .../video/tegra/host/host1x/hw_host1x01_uclass.h | 474 +++++++++++++++++ > drivers/video/tegra/host/nvhost_acm.c | 532 ++++++++++++++++++++ > drivers/video/tegra/host/nvhost_acm.h | 49 ++ > drivers/video/tegra/host/nvhost_cdma.c | 473 +++++++++++++++++ > drivers/video/tegra/host/nvhost_cdma.h | 116 +++++ > drivers/video/tegra/host/nvhost_channel.c | 129 +++++ > drivers/video/tegra/host/nvhost_channel.h | 65 +++ > drivers/video/tegra/host/nvhost_intr.c | 391 ++++++++++++++ > drivers/video/tegra/host/nvhost_intr.h | 110 ++++ > drivers/video/tegra/host/nvhost_job.c | 398 +++++++++++++++ > drivers/video/tegra/host/nvhost_memmgr.c | 252 ++++++++++ > drivers/video/tegra/host/nvhost_memmgr.h | 66 +++ > drivers/video/tegra/host/nvhost_syncpt.c | 453 +++++++++++++++++ > drivers/video/tegra/host/nvhost_syncpt.h | 148 ++++++ > drivers/video/tegra/host/t20/Makefile | 6 + > drivers/video/tegra/host/t20/t20.c | 78 +++ > drivers/video/tegra/host/t20/t20.h | 29 ++ > drivers/video/tegra/host/t30/Makefile | 6 + > drivers/video/tegra/host/t30/t30.c | 80 +++ > drivers/video/tegra/host/t30/t30.h | 29 ++ > include/linux/nvhost.h | 302 +++++++++++ > include/trace/events/nvhost.h | 249 +++++++++ > 48 files changed, 8186 insertions(+) > create mode 100644 drivers/video/tegra/host/Kconfig > create mode 100644 drivers/video/tegra/host/Makefile > create mode 100644 drivers/video/tegra/host/bus_client.c > create mode 100644 drivers/video/tegra/host/bus_client.h > create mode 100644 drivers/video/tegra/host/chip_support.c > create mode 100644 drivers/video/tegra/host/chip_support.h > create mode 100644 drivers/video/tegra/host/debug.c > create mode 100644 drivers/video/tegra/host/debug.h > create mode 100644 drivers/video/tegra/host/dev.c > create mode 100644 drivers/video/tegra/host/dev.h > create mode 100644 drivers/video/tegra/host/dmabuf.c > create mode 100644 drivers/video/tegra/host/dmabuf.h > create mode 100644 drivers/video/tegra/host/host1x/Makefile > create mode 100644 drivers/video/tegra/host/host1x/host1x.c > create mode 100644 drivers/video/tegra/host/host1x/host1x.h > create mode 100644 drivers/video/tegra/host/host1x/host1x01_hardware.h > create mode 100644 drivers/video/tegra/host/host1x/host1x_cdma.c > create mode 100644 drivers/video/tegra/host/host1x/host1x_cdma.h > create mode 100644 drivers/video/tegra/host/host1x/host1x_channel.c > create mode 100644 drivers/video/tegra/host/host1x/host1x_debug.c > create mode 100644 drivers/video/tegra/host/host1x/host1x_intr.c > create mode 100644 drivers/video/tegra/host/host1x/host1x_syncpt.c > create mode 100644 drivers/video/tegra/host/host1x/hw_host1x01_channel.h > create mode 100644 drivers/video/tegra/host/host1x/hw_host1x01_sync.h > create mode 100644 drivers/video/tegra/host/host1x/hw_host1x01_uclass.h > create mode 100644 drivers/video/tegra/host/nvhost_acm.c > create mode 100644 drivers/video/tegra/host/nvhost_acm.h > create mode 100644 drivers/video/tegra/host/nvhost_cdma.c > create mode 100644 drivers/video/tegra/host/nvhost_cdma.h > create mode 100644 drivers/video/tegra/host/nvhost_channel.c > create mode 100644 drivers/video/tegra/host/nvhost_channel.h > create mode 100644 drivers/video/tegra/host/nvhost_intr.c > create mode 100644 drivers/video/tegra/host/nvhost_intr.h > create mode 100644 drivers/video/tegra/host/nvhost_job.c > create mode 100644 drivers/video/tegra/host/nvhost_memmgr.c > create mode 100644 drivers/video/tegra/host/nvhost_memmgr.h > create mode 100644 drivers/video/tegra/host/nvhost_syncpt.c > create mode 100644 drivers/video/tegra/host/nvhost_syncpt.h > create mode 100644 drivers/video/tegra/host/t20/Makefile > create mode 100644 drivers/video/tegra/host/t20/t20.c > create mode 100644 drivers/video/tegra/host/t20/t20.h > create mode 100644 drivers/video/tegra/host/t30/Makefile > create mode 100644 drivers/video/tegra/host/t30/t30.c > create mode 100644 drivers/video/tegra/host/t30/t30.h > create mode 100644 include/linux/nvhost.h > create mode 100644 include/trace/events/nvhost.h Okay, there's a huge amount of code here. From a quick look this seems like the whole nvhost implementation as found in the L4T kernel. It'll obviously take quite a bit of time to go through all of it. I would really like this to be phased in in more manageable chunks. For instance syncpoints could be added on top of the existing host1x infrastructure (the display controllers can make use of it for VBLANK reporting, right?), followed by channel support for command submission. While VBLANK reporting is already rudimentarily supported using the display controllers' VBLANK interrupts, adding syncpt based support should be easy to do. Last but not least, I'd really appreciate it if we could settle on one name for this component. One place calls it graphics host, another one refers to it as host1x and now we have an nvhost driver for it. The TRM isn't very consistent either, unfortunately, but a number of chapters refer to it as host1x and the clock that drives the block is also named host1x. Those are pretty much the reasons why I chose to call the DT node and the driver host1x and I would like to suggest we stay with it to keep things less confusing. Thierry
Attachment:
pgpNzfbYI6qNC.pgp
Description: PGP signature