[banjo][usb] Add banjo ddk.physiter banjo library

This is needed for including phys_iter_sg_entry_t in usb_request_t.
Previously phys_iter_sg_entry_t was in the ddk-driver banjo library,
but that required including <ddk/phys-iter.h> in any source file that
directly or indirectly included ddk/protocol/usb/request.h.
To work around problem with dashes in banjo files, we add <ddk/physiter.h>
which includes <ddk/phys-iter.h>

TEST: USB works on NUC.

Change-Id: If8523b892daea8a79920f24f53a5578cfed0f11b
diff --git a/system/banjo/ddk-driver/driver.banjo b/system/banjo/ddk-driver/driver.banjo
index 73c3d68..52934b1 100644
--- a/system/banjo/ddk-driver/driver.banjo
+++ b/system/banjo/ddk-driver/driver.banjo
@@ -54,11 +54,3 @@
     /// One or more of DEVICE_ADD_*
     uint32 flags;
 };
-
-[repr = "C"]
-struct PhysIterSgEntry {
-    /// length starting at the scatter gather entry offset, must be non zero
-    usize length;
-    /// offset relative to the buffer's vmo_offset
-    usize offset;
-};
diff --git a/system/banjo/ddk-phys-iter/phys-iter.banjo b/system/banjo/ddk-phys-iter/phys-iter.banjo
new file mode 100644
index 0000000..49537fd
--- /dev/null
+++ b/system/banjo/ddk-phys-iter/phys-iter.banjo
@@ -0,0 +1,13 @@
+// Copyright 2018 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+library ddk.physiter;
+
+[repr = "C"]
+struct PhysIterSgEntry {
+    /// length starting at the scatter gather entry offset, must be non zero
+    usize length;
+    /// offset relative to the buffer's vmo_offset
+    usize offset;
+};
diff --git a/system/banjo/ddk-phys-iter/rules.mk b/system/banjo/ddk-phys-iter/rules.mk
new file mode 100644
index 0000000..2815172
--- /dev/null
+++ b/system/banjo/ddk-phys-iter/rules.mk
@@ -0,0 +1,20 @@
+# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+LOCAL_DIR := $(GET_LOCAL_DIR)
+
+MODULE := $(LOCAL_DIR)
+
+MODULE_TYPE := banjo
+
+MODULE_PACKAGE := banjo
+
+MODULE_BANJO_LIBRARY := ddk.physiter
+
+MODULE_BANJO_NAME := physiter
+
+MODULE_SRCS += $(LOCAL_DIR)/phys-iter.banjo
+
+include make/module.mk
+
diff --git a/system/banjo/ddk-protocol-usb-dci/rules.mk b/system/banjo/ddk-protocol-usb-dci/rules.mk
index 1481834..c75dcbb 100644
--- a/system/banjo/ddk-protocol-usb-dci/rules.mk
+++ b/system/banjo/ddk-protocol-usb-dci/rules.mk
@@ -15,7 +15,7 @@
 MODULE_BANJO_NAME := usb/dci
 
 MODULE_BANJO_DEPS := \
-    system/banjo/ddk-driver \
+    system/banjo/ddk-phys-iter \
     system/banjo/zircon-hw-usb \
     system/banjo/ddk-protocol-usb-request \
 
diff --git a/system/banjo/ddk-protocol-usb-function/rules.mk b/system/banjo/ddk-protocol-usb-function/rules.mk
index a068aed..4ace376 100644
--- a/system/banjo/ddk-protocol-usb-function/rules.mk
+++ b/system/banjo/ddk-protocol-usb-function/rules.mk
@@ -15,7 +15,7 @@
 MODULE_BANJO_NAME := usb/function
 
 MODULE_BANJO_DEPS := \
-    system/banjo/ddk-driver \
+    system/banjo/ddk-phys-iter \
     system/banjo/zircon-hw-usb \
     system/banjo/ddk-protocol-usb-request \
 
diff --git a/system/banjo/ddk-protocol-usb-hci/rules.mk b/system/banjo/ddk-protocol-usb-hci/rules.mk
index 99bb693..ce8178c 100644
--- a/system/banjo/ddk-protocol-usb-hci/rules.mk
+++ b/system/banjo/ddk-protocol-usb-hci/rules.mk
@@ -16,6 +16,7 @@
 
 MODULE_BANJO_DEPS := \
     system/banjo/ddk-driver \
+    system/banjo/ddk-phys-iter \
     system/banjo/zircon-hw-usb \
     system/banjo/zircon-hw-usb-hub \
     system/banjo/ddk-protocol-usb-request \
diff --git a/system/banjo/ddk-protocol-usb-request/rules.mk b/system/banjo/ddk-protocol-usb-request/rules.mk
index 2d52b37..9d9c889 100644
--- a/system/banjo/ddk-protocol-usb-request/rules.mk
+++ b/system/banjo/ddk-protocol-usb-request/rules.mk
@@ -15,7 +15,7 @@
 MODULE_BANJO_NAME := usb/request
 
 MODULE_BANJO_DEPS := \
-    system/banjo/ddk-driver \
+    system/banjo/ddk-phys-iter \
     system/banjo/zircon-hw-usb \
 
 MODULE_SRCS += $(LOCAL_DIR)/usb-request.banjo
diff --git a/system/banjo/ddk-protocol-usb-request/usb-request.banjo b/system/banjo/ddk-protocol-usb-request/usb-request.banjo
index c277b27..50843a8 100644
--- a/system/banjo/ddk-protocol-usb-request/usb-request.banjo
+++ b/system/banjo/ddk-protocol-usb-request/usb-request.banjo
@@ -4,7 +4,7 @@
 
 library ddk.protocol.usb.request;
 
-using ddk.driver;
+using ddk.physiter;
 using zircon.hw.usb;
 using zx;
 
@@ -49,7 +49,7 @@
     /// Phys addresses of the payload.
     vector<zx.paddr>? phys;
 
-    vector<ddk.driver.PhysIterSgEntry>? sg;
+    vector<ddk.physiter.PhysIterSgEntry>? sg;
 
     UsbResponse response;
 
diff --git a/system/dev/block/ums-function/ums-function.c b/system/dev/block/ums-function/ums-function.c
index f0a348b..85ed85a 100644
--- a/system/dev/block/ums-function/ums-function.c
+++ b/system/dev/block/ums-function/ums-function.c
@@ -12,7 +12,6 @@
 #include <ddk/debug.h>
 #include <ddk/device.h>
 #include <ddk/driver.h>
-#include <ddk/phys-iter.h>
 #include <ddk/protocol/usb/function.h>
 #include <usb/usb-request.h>
 #include <zircon/process.h>
diff --git a/system/dev/ethernet/usb-cdc-function/cdc-eth-function.cpp b/system/dev/ethernet/usb-cdc-function/cdc-eth-function.cpp
index 5cb1a6c..dd288d0 100644
--- a/system/dev/ethernet/usb-cdc-function/cdc-eth-function.cpp
+++ b/system/dev/ethernet/usb-cdc-function/cdc-eth-function.cpp
@@ -14,7 +14,6 @@
 #include <ddk/debug.h>
 #include <ddk/device.h>
 #include <ddk/driver.h>
-#include <ddk/phys-iter.h>
 #include <ddk/protocol/ethernet.h>
 #include <ddk/protocol/usb/function.h>
 #include <fbl/algorithm.h>
diff --git a/system/dev/lib/usb-old/include/usb/usb-request.h b/system/dev/lib/usb-old/include/usb/usb-request.h
index 895a0f1..949ba8f 100644
--- a/system/dev/lib/usb-old/include/usb/usb-request.h
+++ b/system/dev/lib/usb-old/include/usb/usb-request.h
@@ -7,7 +7,6 @@
 #include <stdint.h>
 #include <sys/types.h>
 #include <ddk/io-buffer.h>
-#include <ddk/phys-iter.h>
 #include <ddk/protocol/usb-old.h>
 #include <zircon/hw/usb.h>
 #include <zircon/listnode.h>
diff --git a/system/dev/lib/usb/include/usb/usb-request.h b/system/dev/lib/usb/include/usb/usb-request.h
index 895a0f1..949ba8f 100644
--- a/system/dev/lib/usb/include/usb/usb-request.h
+++ b/system/dev/lib/usb/include/usb/usb-request.h
@@ -7,7 +7,6 @@
 #include <stdint.h>
 #include <sys/types.h>
 #include <ddk/io-buffer.h>
-#include <ddk/phys-iter.h>
 #include <ddk/protocol/usb-old.h>
 #include <zircon/hw/usb.h>
 #include <zircon/listnode.h>
diff --git a/system/dev/usb/dwc3/dwc3.h b/system/dev/usb/dwc3/dwc3.h
index dddd50f..a9f8337 100644
--- a/system/dev/usb/dwc3/dwc3.h
+++ b/system/dev/usb/dwc3/dwc3.h
@@ -6,7 +6,6 @@
 
 #include <ddk/device.h>
 #include <ddk/io-buffer.h>
-#include <ddk/phys-iter.h>
 #include <ddk/protocol/platform-device-lib.h>
 #include <ddk/protocol/platform/device.h>
 #include <ddk/protocol/usb/dci.h>
diff --git a/system/dev/usb/mt-musb-peripheral/mt-usb.h b/system/dev/usb/mt-musb-peripheral/mt-usb.h
index 5da794b..61e5f9c 100644
--- a/system/dev/usb/mt-musb-peripheral/mt-usb.h
+++ b/system/dev/usb/mt-musb-peripheral/mt-usb.h
@@ -4,7 +4,6 @@
 
 #pragma once
 
-#include <ddk/phys-iter.h>
 #include <ddktl/device.h>
 #include <ddktl/mmio.h>
 #include <ddktl/pdev.h>
diff --git a/system/dev/usb/usb-peripheral-test/driver.cpp b/system/dev/usb/usb-peripheral-test/driver.cpp
index 1706558..c2df475 100644
--- a/system/dev/usb/usb-peripheral-test/driver.cpp
+++ b/system/dev/usb/usb-peripheral-test/driver.cpp
@@ -14,7 +14,6 @@
 #include <ddk/debug.h>
 #include <ddk/device.h>
 #include <ddk/driver.h>
-#include <ddk/phys-iter.h>
 #include <ddk/protocol/usb/function.h>
 #include <fbl/auto_lock.h>
 #include <fbl/mutex.h>
diff --git a/system/dev/usb/usb-peripheral/usb-peripheral.c b/system/dev/usb/usb-peripheral/usb-peripheral.c
index a26ca82..dc3d4a8 100644
--- a/system/dev/usb/usb-peripheral/usb-peripheral.c
+++ b/system/dev/usb/usb-peripheral/usb-peripheral.c
@@ -14,7 +14,6 @@
 #include <ddk/device.h>
 #include <ddk/driver.h>
 #include <ddk/metadata.h>
-#include <ddk/phys-iter.h>
 #include <ddk/protocol/usb/dci.h>
 #include <ddk/protocol/usb/function.h>
 #include <ddk/protocol/usb/modeswitch.h>
diff --git a/system/dev/usb/xhci/usb-xhci.cpp b/system/dev/usb/xhci/usb-xhci.cpp
index 165b284..77aae6a 100644
--- a/system/dev/usb/xhci/usb-xhci.cpp
+++ b/system/dev/usb/xhci/usb-xhci.cpp
@@ -5,7 +5,6 @@
 #include <ddk/binding.h>
 #include <ddk/debug.h>
 #include <ddk/driver.h>
-#include <ddk/phys-iter.h>
 #include <ddk/platform-defs.h>
 #include <ddk/protocol/usb/hci.h>
 
diff --git a/system/dev/usb/xhci/xhci-root-hub.h b/system/dev/usb/xhci/xhci-root-hub.h
index 0b8c725..372470a 100644
--- a/system/dev/usb/xhci/xhci-root-hub.h
+++ b/system/dev/usb/xhci/xhci-root-hub.h
@@ -4,7 +4,6 @@
 
 #pragma once
 
-#include <ddk/phys-iter.h>
 #include <ddk/protocol/usb/request.h>
 #include <zircon/listnode.h>
 
diff --git a/system/dev/usb/xhci/xhci.h b/system/dev/usb/xhci/xhci.h
index 0f7c872..fc9c973 100644
--- a/system/dev/usb/xhci/xhci.h
+++ b/system/dev/usb/xhci/xhci.h
@@ -14,7 +14,6 @@
 
 #include <ddk/device.h>
 #include <ddk/mmio-buffer.h>
-#include <ddk/phys-iter.h>
 #include <ddk/protocol/pci.h>
 #include <ddk/protocol/platform-device-lib.h>
 #include <ddk/protocol/platform/device.h>
diff --git a/system/ulib/ddk/include/ddk/physiter.h b/system/ulib/ddk/include/ddk/physiter.h
new file mode 100644
index 0000000..266c977
--- /dev/null
+++ b/system/ulib/ddk/include/ddk/physiter.h
@@ -0,0 +1,9 @@
+// Copyright 2018 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#pragma once
+
+// Redirect ddk/physiter.h to ddk/phys-iter.h.
+// We need to do this because banjo can't handle dashes in file names.
+#include <ddk/phys-iter.h>
diff --git a/system/ulib/ddk/include/ddk/protocol/usb-old.h b/system/ulib/ddk/include/ddk/protocol/usb-old.h
index 3db93e1..5b58f31 100644
--- a/system/ulib/ddk/include/ddk/protocol/usb-old.h
+++ b/system/ulib/ddk/include/ddk/protocol/usb-old.h
@@ -4,7 +4,6 @@
 
 #pragma once
 
-#include <ddk/phys-iter.h>
 #include <ddk/protocol/usb/request.h>
 #include <sys/types.h>
 #include <zircon/compiler.h>