|
|
@@ -498,6 +498,40 @@ static int pulse8_cec_adap_log_addr(struct cec_adapter *adap, u8 log_addr)
|
|
|
if (err)
|
|
|
goto unlock;
|
|
|
|
|
|
+ switch (adap->log_addrs.primary_device_type[0]) {
|
|
|
+ case CEC_OP_PRIM_DEVTYPE_TV:
|
|
|
+ mask = CEC_LOG_ADDR_MASK_TV;
|
|
|
+ break;
|
|
|
+ case CEC_OP_PRIM_DEVTYPE_RECORD:
|
|
|
+ mask = CEC_LOG_ADDR_MASK_RECORD;
|
|
|
+ break;
|
|
|
+ case CEC_OP_PRIM_DEVTYPE_TUNER:
|
|
|
+ mask = CEC_LOG_ADDR_MASK_TUNER;
|
|
|
+ break;
|
|
|
+ case CEC_OP_PRIM_DEVTYPE_PLAYBACK:
|
|
|
+ mask = CEC_LOG_ADDR_MASK_PLAYBACK;
|
|
|
+ break;
|
|
|
+ case CEC_OP_PRIM_DEVTYPE_AUDIOSYSTEM:
|
|
|
+ mask = CEC_LOG_ADDR_MASK_AUDIOSYSTEM;
|
|
|
+ break;
|
|
|
+ case CEC_OP_PRIM_DEVTYPE_SWITCH:
|
|
|
+ mask = CEC_LOG_ADDR_MASK_UNREGISTERED;
|
|
|
+ break;
|
|
|
+ case CEC_OP_PRIM_DEVTYPE_PROCESSOR:
|
|
|
+ mask = CEC_LOG_ADDR_MASK_SPECIFIC;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ mask = 0;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ cmd[0] = MSGCODE_SET_LOGICAL_ADDRESS_MASK;
|
|
|
+ cmd[1] = mask >> 8;
|
|
|
+ cmd[2] = mask & 0xff;
|
|
|
+ err = pulse8_send_and_wait(pulse8, cmd, 3,
|
|
|
+ MSGCODE_COMMAND_ACCEPTED, 0);
|
|
|
+ if (err)
|
|
|
+ goto unlock;
|
|
|
+
|
|
|
cmd[0] = MSGCODE_SET_DEFAULT_LOGICAL_ADDRESS;
|
|
|
cmd[1] = log_addr;
|
|
|
err = pulse8_send_and_wait(pulse8, cmd, 2,
|