diff --git a/include/hardware/hwcomposer2.h b/include/hardware/hwcomposer2.h
index 095557a..f42456b 100644
--- a/include/hardware/hwcomposer2.h
+++ b/include/hardware/hwcomposer2.h
@@ -1384,6 +1384,10 @@
  * prior to the call to presentDisplay, and layers not marked as
  * HWC2_COMPOSITION_CLIENT should be composited with this buffer by the device.
  *
+ * The buffer handle provided may be null if no layers are being composited by
+ * the client. This must not result in an error (unless an invalid display
+ * handle is also provided).
+ *
  * Also provides a file descriptor referring to an acquire sync fence object,
  * which will be signaled when it is safe to read from the client target buffer.
  * If it is already safe to read from this buffer, -1 may be passed instead.
diff --git a/include/hardware/tv_input.h b/include/hardware/tv_input.h
index 3bb9862..ed3fafb 100644
--- a/include/hardware/tv_input.h
+++ b/include/hardware/tv_input.h
@@ -33,18 +33,14 @@
  *
  * Version History:
  *
- * TV_INPUT_DEVICE_API_VERSION_0_1:
- * Initial TV input hardware device API.
- *
- * TV_INPUT_DEVICE_API_VERSION_0_2:
- * Minor revision --- add video detection flag in stream configs.
+ * TV_INPUT_MODULE_API_VERSION_0_1:
+ * Initial TV input hardware module API.
  *
  */
 
 #define TV_INPUT_MODULE_API_VERSION_0_1  HARDWARE_MODULE_API_VERSION(0, 1)
 
 #define TV_INPUT_DEVICE_API_VERSION_0_1  HARDWARE_DEVICE_API_VERSION(0, 1)
-#define TV_INPUT_DEVICE_API_VERSION_0_2  HARDWARE_DEVICE_API_VERSION(0, 2)
 
 /*
  * The id of this module
@@ -168,8 +164,7 @@
      * port. the framework regards input devices with no available streams as
      * disconnected, so the implementation can generate this event with no
      * available streams to indicate that this device is disconnected, and vice
-     * versa. In addition, streams have signal detection flag to denote if
-     * signal is detected for sure.
+     * versa.
      */
     TV_INPUT_EVENT_STREAM_CONFIGURATIONS_CHANGED = 3,
     /*
@@ -269,33 +264,6 @@
     uint32_t max_video_height;
 } tv_stream_config_t;
 
-enum {
-    /*
-     * Set if signal is detected on this stream. Note that even if this mask is
-     * unset it does not necessarily mean no signal --- it denotes that HAL is
-     * unsure of the signal status.
-     */
-    TV_STREAM_FLAG_MASK_SIGNAL_DETECTION = 0x1,
-};
-
-/*
- * >= TV_INPUT_DEVICE_API_VERSION_0_2
- *
- * tv_stream_config_t extended in a way that allows extension without breaking
- * binary compatibility
- */
-typedef struct tv_stream_config_ext {
-    tv_stream_config_t config;
-
-    /*
-     * Flags to show the status of this stream. See TV_STREAM_FLAG_* for
-     * details.
-     */
-    uint32_t flags;
-
-    int32_t reserved[16 - 1];
-} tv_stream_config_ext_t;
-
 typedef struct buffer_producer_stream {
     /*
      * IN/OUT: Width / height of the stream. Client may request for specific
@@ -429,22 +397,7 @@
     int (*cancel_capture)(struct tv_input_device* dev, int device_id,
             int stream_id, uint32_t seq);
 
-    /*
-     * get_stream_configurations_ext:
-     *
-     * Get stream configurations for a specific device. An input device may have
-     * multiple configurations.
-     *
-     * The configs object is guaranteed to be valid only until the next call to
-     * get_stream_configurations_ext() or STREAM_CONFIGURATIONS_CHANGED event.
-     *
-     * Return 0 on success.
-     */
-    int (*get_stream_configurations_ext)(const struct tv_input_device* dev,
-            int device_id, int* num_configurations,
-            const tv_stream_config_ext_t** configs);
-
-    void* reserved[16 - 1];
+    void* reserved[16];
 } tv_input_device_t;
 
 __END_DECLS
diff --git a/modules/tv_input/tv_input.cpp b/modules/tv_input/tv_input.cpp
index 45e8388..114e80e 100644
--- a/modules/tv_input/tv_input.cpp
+++ b/modules/tv_input/tv_input.cpp
@@ -37,18 +37,18 @@
         const char* name, struct hw_device_t** device);
 
 static struct hw_module_methods_t tv_input_module_methods = {
-    .open = tv_input_device_open
+    open: tv_input_device_open
 };
 
 tv_input_module_t HAL_MODULE_INFO_SYM = {
-    .common = {
-        .tag = HARDWARE_MODULE_TAG,
-        .version_major = 0,
-        .version_minor = 1,
-        .id = TV_INPUT_HARDWARE_MODULE_ID,
-        .name = "Sample TV input module",
-        .author = "The Android Open Source Project",
-        .methods = &tv_input_module_methods,
+    common: {
+        tag: HARDWARE_MODULE_TAG,
+        version_major: 0,
+        version_minor: 1,
+        id: TV_INPUT_HARDWARE_MODULE_ID,
+        name: "Sample TV input module",
+        author: "The Android Open Source Project",
+        methods: &tv_input_module_methods,
     }
 };
 
@@ -72,8 +72,7 @@
 }
 
 static int tv_input_get_stream_configurations(
-        const struct tv_input_device*, int, int*,
-        const tv_stream_config_t**)
+        const struct tv_input_device*, int, int*, const tv_stream_config_t**)
 {
     return -EINVAL;
 }
@@ -99,13 +98,6 @@
     return -EINVAL;
 }
 
-static int tv_input_get_stream_configurations_ext(
-        const struct tv_input_device*, int, int*,
-        const tv_stream_config_ext_t**)
-{
-    return -EINVAL;
-}
-
 /*****************************************************************************/
 
 static int tv_input_device_close(struct hw_device_t *dev)
@@ -142,8 +134,6 @@
         dev->device.close_stream = tv_input_close_stream;
         dev->device.request_capture = tv_input_request_capture;
         dev->device.cancel_capture = tv_input_cancel_capture;
-        dev->device.get_stream_configurations_ext =
-                tv_input_get_stream_configurations_ext;
 
         *device = &dev->device.common;
         status = 0;
