am 85425cfe: am c2a0b248: Merge "Update HDMI-CEC HAL interface definition" into klp-modular-dev

* commit '85425cfe8937cc82722e6495b3eb4573db461eb7':
  Update HDMI-CEC HAL interface definition
diff --git a/include/hardware/hdmi_cec.h b/include/hardware/hdmi_cec.h
index de6c70c..f049952 100644
--- a/include/hardware/hdmi_cec.h
+++ b/include/hardware/hdmi_cec.h
@@ -221,34 +221,25 @@
     struct hw_device_t common;
 
     /*
-     * (*allocate_logical_address)() allocates a new logical address
-     * for a given device type. The address is written to addr. The HAL
-     * implementation is also expected to configure itself to start receiving
-     * the messages addressed to the allocated one. If the address has been already
-     * allocated, it should simply return the allocated address without attempting
-     * the allocation again. If allocation is not successful the addr will be
-     * set to CEC_ADDR_UNREGISTERED.
+     * (*add_logical_address)() passes the logical address that will be used in this system.
+     *
+     * HAL may use it to configure the hardware so that the CEC commands addressed
+     * the given logical address can be filtered in. This method can be called as many times
+     * as necessary in order to support multiple logical devices. addr should be in the range
+     * of valid logical addresses for the call to succeed.
      *
      * Returns 0 on success or -errno on error.
      */
-    int (*allocate_logical_address)(const struct hdmi_cec_device* dev,
-            cec_device_type_t device_type, cec_logical_address_t* addr);
+    int (*add_logical_address)(const struct hdmi_cec_device* dev, cec_logical_address_t addr);
 
     /*
-     * (*get_logical_address)() returns the logical address already allocated
-     * for the device of the given type. It is necessary to call this function
-     * when HAL implementation, without being triggered by service, updated
-     * the address by itself. Such situation happens when an event like
-     * hotplug occurs, since it is possible the HDMI network topology or
-     * the port which the device was connected to might have changed while it
-     * was unplugged. In response to such events, the service is required to
-     * call this function to get the updated address. The address is written
-     * to addr.
+     * (*clear_logical_address)() tells HAL to reset all the logical addresses.
      *
-     * Returns 0 on success or -errno on error.
+     * It is used when the system doesn't need to process CEC command any more, hence to tell
+     * HAL to stop receiving commands from the CEC bus, and change the state back to the beginning.
      */
-    int (*get_logical_address)(const struct hdmi_cec_device* dev,
-            cec_device_type_t device_type, cec_logical_address_t* addr);
+    void (*clear_logical_address)(const struct hdmi_cec_device* dev);
+
     /*
      * (*get_physical_address)() returns the CEC physical address. The
      * address is written to addr.
@@ -263,7 +254,10 @@
     int (*get_physical_address)(const struct hdmi_cec_device* dev, uint16_t* addr);
 
     /*
-     * (*send_message)() transmits HDMI-CEC message to other HDMI device.
+     * (*send_message)() transmits HDMI-CEC message to other HDMI device. The method should be
+     * designed to return in a certain amount of time not hanging forever, which can happen
+     * if CEC signal line is pulled low for some reason. HAL implementation should take
+     * the situation into account so as not to wait forever for the message to get sent out.
      *
      * Returns 0 on success or -errno on error.
      */
@@ -280,9 +274,7 @@
             event_callback_t callback, void* arg);
 
     /*
-     * (*get_version)() returns the CEC version supported by underlying
-     * hardware. The version this HAL interface is based on is 0x04,
-     * which corresponds to 1.3a.
+     * (*get_version)() returns the CEC version supported by underlying hardware.
      */
     void (*get_version)(const struct hdmi_cec_device* dev, int* version);