0001
0002
0003
0004
0005
0006
0007
0008 #ifndef _CEC_UAPI_H
0009 #define _CEC_UAPI_H
0010
0011 #include <linux/types.h>
0012 #include <linux/string.h>
0013
0014 #define CEC_MAX_MSG_SIZE 16
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057 struct cec_msg {
0058 __u64 tx_ts;
0059 __u64 rx_ts;
0060 __u32 len;
0061 __u32 timeout;
0062 __u32 sequence;
0063 __u32 flags;
0064 __u8 msg[CEC_MAX_MSG_SIZE];
0065 __u8 reply;
0066 __u8 rx_status;
0067 __u8 tx_status;
0068 __u8 tx_arb_lost_cnt;
0069 __u8 tx_nack_cnt;
0070 __u8 tx_low_drive_cnt;
0071 __u8 tx_error_cnt;
0072 };
0073
0074
0075
0076
0077
0078 static inline __u8 cec_msg_initiator(const struct cec_msg *msg)
0079 {
0080 return msg->msg[0] >> 4;
0081 }
0082
0083
0084
0085
0086
0087 static inline __u8 cec_msg_destination(const struct cec_msg *msg)
0088 {
0089 return msg->msg[0] & 0xf;
0090 }
0091
0092
0093
0094
0095
0096 static inline int cec_msg_opcode(const struct cec_msg *msg)
0097 {
0098 return msg->len > 1 ? msg->msg[1] : -1;
0099 }
0100
0101
0102
0103
0104
0105 static inline int cec_msg_is_broadcast(const struct cec_msg *msg)
0106 {
0107 return (msg->msg[0] & 0xf) == 0xf;
0108 }
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119 static inline void cec_msg_init(struct cec_msg *msg,
0120 __u8 initiator, __u8 destination)
0121 {
0122 memset(msg, 0, sizeof(*msg));
0123 msg->msg[0] = (initiator << 4) | destination;
0124 msg->len = 1;
0125 }
0126
0127
0128
0129
0130
0131
0132
0133
0134
0135
0136 static inline void cec_msg_set_reply_to(struct cec_msg *msg,
0137 struct cec_msg *orig)
0138 {
0139
0140 msg->msg[0] = (cec_msg_destination(orig) << 4) |
0141 cec_msg_initiator(orig);
0142 msg->reply = msg->timeout = 0;
0143 }
0144
0145
0146
0147
0148
0149
0150 static inline int cec_msg_recv_is_tx_result(const struct cec_msg *msg)
0151 {
0152 return msg->sequence && msg->tx_status && !msg->rx_status;
0153 }
0154
0155
0156
0157
0158
0159
0160 static inline int cec_msg_recv_is_rx_result(const struct cec_msg *msg)
0161 {
0162 return msg->sequence && !msg->tx_status && msg->rx_status;
0163 }
0164
0165
0166 #define CEC_MSG_FL_REPLY_TO_FOLLOWERS (1 << 0)
0167 #define CEC_MSG_FL_RAW (1 << 1)
0168
0169
0170 #define CEC_TX_STATUS_OK (1 << 0)
0171 #define CEC_TX_STATUS_ARB_LOST (1 << 1)
0172 #define CEC_TX_STATUS_NACK (1 << 2)
0173 #define CEC_TX_STATUS_LOW_DRIVE (1 << 3)
0174 #define CEC_TX_STATUS_ERROR (1 << 4)
0175 #define CEC_TX_STATUS_MAX_RETRIES (1 << 5)
0176 #define CEC_TX_STATUS_ABORTED (1 << 6)
0177 #define CEC_TX_STATUS_TIMEOUT (1 << 7)
0178
0179 #define CEC_RX_STATUS_OK (1 << 0)
0180 #define CEC_RX_STATUS_TIMEOUT (1 << 1)
0181 #define CEC_RX_STATUS_FEATURE_ABORT (1 << 2)
0182 #define CEC_RX_STATUS_ABORTED (1 << 3)
0183
0184 static inline int cec_msg_status_is_ok(const struct cec_msg *msg)
0185 {
0186 if (msg->tx_status && !(msg->tx_status & CEC_TX_STATUS_OK))
0187 return 0;
0188 if (msg->rx_status && !(msg->rx_status & CEC_RX_STATUS_OK))
0189 return 0;
0190 if (!msg->tx_status && !msg->rx_status)
0191 return 0;
0192 return !(msg->rx_status & CEC_RX_STATUS_FEATURE_ABORT);
0193 }
0194
0195 #define CEC_LOG_ADDR_INVALID 0xff
0196 #define CEC_PHYS_ADDR_INVALID 0xffff
0197
0198
0199
0200
0201
0202
0203 #define CEC_MAX_LOG_ADDRS 4
0204
0205
0206 #define CEC_LOG_ADDR_TV 0
0207 #define CEC_LOG_ADDR_RECORD_1 1
0208 #define CEC_LOG_ADDR_RECORD_2 2
0209 #define CEC_LOG_ADDR_TUNER_1 3
0210 #define CEC_LOG_ADDR_PLAYBACK_1 4
0211 #define CEC_LOG_ADDR_AUDIOSYSTEM 5
0212 #define CEC_LOG_ADDR_TUNER_2 6
0213 #define CEC_LOG_ADDR_TUNER_3 7
0214 #define CEC_LOG_ADDR_PLAYBACK_2 8
0215 #define CEC_LOG_ADDR_RECORD_3 9
0216 #define CEC_LOG_ADDR_TUNER_4 10
0217 #define CEC_LOG_ADDR_PLAYBACK_3 11
0218 #define CEC_LOG_ADDR_BACKUP_1 12
0219 #define CEC_LOG_ADDR_BACKUP_2 13
0220 #define CEC_LOG_ADDR_SPECIFIC 14
0221 #define CEC_LOG_ADDR_UNREGISTERED 15
0222 #define CEC_LOG_ADDR_BROADCAST 15
0223
0224
0225 #define CEC_LOG_ADDR_TYPE_TV 0
0226 #define CEC_LOG_ADDR_TYPE_RECORD 1
0227 #define CEC_LOG_ADDR_TYPE_TUNER 2
0228 #define CEC_LOG_ADDR_TYPE_PLAYBACK 3
0229 #define CEC_LOG_ADDR_TYPE_AUDIOSYSTEM 4
0230 #define CEC_LOG_ADDR_TYPE_SPECIFIC 5
0231 #define CEC_LOG_ADDR_TYPE_UNREGISTERED 6
0232
0233
0234
0235
0236
0237 #define CEC_LOG_ADDR_MASK_TV (1 << CEC_LOG_ADDR_TV)
0238 #define CEC_LOG_ADDR_MASK_RECORD ((1 << CEC_LOG_ADDR_RECORD_1) | \
0239 (1 << CEC_LOG_ADDR_RECORD_2) | \
0240 (1 << CEC_LOG_ADDR_RECORD_3))
0241 #define CEC_LOG_ADDR_MASK_TUNER ((1 << CEC_LOG_ADDR_TUNER_1) | \
0242 (1 << CEC_LOG_ADDR_TUNER_2) | \
0243 (1 << CEC_LOG_ADDR_TUNER_3) | \
0244 (1 << CEC_LOG_ADDR_TUNER_4))
0245 #define CEC_LOG_ADDR_MASK_PLAYBACK ((1 << CEC_LOG_ADDR_PLAYBACK_1) | \
0246 (1 << CEC_LOG_ADDR_PLAYBACK_2) | \
0247 (1 << CEC_LOG_ADDR_PLAYBACK_3))
0248 #define CEC_LOG_ADDR_MASK_AUDIOSYSTEM (1 << CEC_LOG_ADDR_AUDIOSYSTEM)
0249 #define CEC_LOG_ADDR_MASK_BACKUP ((1 << CEC_LOG_ADDR_BACKUP_1) | \
0250 (1 << CEC_LOG_ADDR_BACKUP_2))
0251 #define CEC_LOG_ADDR_MASK_SPECIFIC (1 << CEC_LOG_ADDR_SPECIFIC)
0252 #define CEC_LOG_ADDR_MASK_UNREGISTERED (1 << CEC_LOG_ADDR_UNREGISTERED)
0253
0254 static inline int cec_has_tv(__u16 log_addr_mask)
0255 {
0256 return log_addr_mask & CEC_LOG_ADDR_MASK_TV;
0257 }
0258
0259 static inline int cec_has_record(__u16 log_addr_mask)
0260 {
0261 return log_addr_mask & CEC_LOG_ADDR_MASK_RECORD;
0262 }
0263
0264 static inline int cec_has_tuner(__u16 log_addr_mask)
0265 {
0266 return log_addr_mask & CEC_LOG_ADDR_MASK_TUNER;
0267 }
0268
0269 static inline int cec_has_playback(__u16 log_addr_mask)
0270 {
0271 return log_addr_mask & CEC_LOG_ADDR_MASK_PLAYBACK;
0272 }
0273
0274 static inline int cec_has_audiosystem(__u16 log_addr_mask)
0275 {
0276 return log_addr_mask & CEC_LOG_ADDR_MASK_AUDIOSYSTEM;
0277 }
0278
0279 static inline int cec_has_backup(__u16 log_addr_mask)
0280 {
0281 return log_addr_mask & CEC_LOG_ADDR_MASK_BACKUP;
0282 }
0283
0284 static inline int cec_has_specific(__u16 log_addr_mask)
0285 {
0286 return log_addr_mask & CEC_LOG_ADDR_MASK_SPECIFIC;
0287 }
0288
0289 static inline int cec_is_unregistered(__u16 log_addr_mask)
0290 {
0291 return log_addr_mask & CEC_LOG_ADDR_MASK_UNREGISTERED;
0292 }
0293
0294 static inline int cec_is_unconfigured(__u16 log_addr_mask)
0295 {
0296 return log_addr_mask == 0;
0297 }
0298
0299
0300
0301
0302
0303 #define CEC_VENDOR_ID_NONE 0xffffffff
0304
0305
0306
0307 #define CEC_MODE_NO_INITIATOR (0x0 << 0)
0308 #define CEC_MODE_INITIATOR (0x1 << 0)
0309 #define CEC_MODE_EXCL_INITIATOR (0x2 << 0)
0310 #define CEC_MODE_INITIATOR_MSK 0x0f
0311
0312
0313 #define CEC_MODE_NO_FOLLOWER (0x0 << 4)
0314 #define CEC_MODE_FOLLOWER (0x1 << 4)
0315 #define CEC_MODE_EXCL_FOLLOWER (0x2 << 4)
0316 #define CEC_MODE_EXCL_FOLLOWER_PASSTHRU (0x3 << 4)
0317 #define CEC_MODE_MONITOR_PIN (0xd << 4)
0318 #define CEC_MODE_MONITOR (0xe << 4)
0319 #define CEC_MODE_MONITOR_ALL (0xf << 4)
0320 #define CEC_MODE_FOLLOWER_MSK 0xf0
0321
0322
0323 #define CEC_CAP_PHYS_ADDR (1 << 0)
0324
0325 #define CEC_CAP_LOG_ADDRS (1 << 1)
0326
0327 #define CEC_CAP_TRANSMIT (1 << 2)
0328
0329
0330
0331 #define CEC_CAP_PASSTHROUGH (1 << 3)
0332
0333 #define CEC_CAP_RC (1 << 4)
0334
0335 #define CEC_CAP_MONITOR_ALL (1 << 5)
0336
0337 #define CEC_CAP_NEEDS_HPD (1 << 6)
0338
0339 #define CEC_CAP_MONITOR_PIN (1 << 7)
0340
0341 #define CEC_CAP_CONNECTOR_INFO (1 << 8)
0342
0343
0344
0345
0346
0347
0348
0349
0350
0351 struct cec_caps {
0352 char driver[32];
0353 char name[32];
0354 __u32 available_log_addrs;
0355 __u32 capabilities;
0356 __u32 version;
0357 };
0358
0359
0360
0361
0362
0363
0364
0365
0366
0367
0368
0369
0370
0371
0372
0373
0374
0375
0376
0377 struct cec_log_addrs {
0378 __u8 log_addr[CEC_MAX_LOG_ADDRS];
0379 __u16 log_addr_mask;
0380 __u8 cec_version;
0381 __u8 num_log_addrs;
0382 __u32 vendor_id;
0383 __u32 flags;
0384 char osd_name[15];
0385 __u8 primary_device_type[CEC_MAX_LOG_ADDRS];
0386 __u8 log_addr_type[CEC_MAX_LOG_ADDRS];
0387
0388
0389 __u8 all_device_types[CEC_MAX_LOG_ADDRS];
0390 __u8 features[CEC_MAX_LOG_ADDRS][12];
0391 };
0392
0393
0394 #define CEC_LOG_ADDRS_FL_ALLOW_UNREG_FALLBACK (1 << 0)
0395
0396 #define CEC_LOG_ADDRS_FL_ALLOW_RC_PASSTHRU (1 << 1)
0397
0398 #define CEC_LOG_ADDRS_FL_CDC_ONLY (1 << 2)
0399
0400
0401
0402
0403
0404
0405
0406 struct cec_drm_connector_info {
0407 __u32 card_no;
0408 __u32 connector_id;
0409 };
0410
0411 #define CEC_CONNECTOR_TYPE_NO_CONNECTOR 0
0412 #define CEC_CONNECTOR_TYPE_DRM 1
0413
0414
0415
0416
0417
0418
0419
0420
0421 struct cec_connector_info {
0422 __u32 type;
0423 union {
0424 struct cec_drm_connector_info drm;
0425 __u32 raw[16];
0426 };
0427 };
0428
0429
0430
0431
0432 #define CEC_EVENT_STATE_CHANGE 1
0433
0434
0435
0436
0437 #define CEC_EVENT_LOST_MSGS 2
0438 #define CEC_EVENT_PIN_CEC_LOW 3
0439 #define CEC_EVENT_PIN_CEC_HIGH 4
0440 #define CEC_EVENT_PIN_HPD_LOW 5
0441 #define CEC_EVENT_PIN_HPD_HIGH 6
0442 #define CEC_EVENT_PIN_5V_LOW 7
0443 #define CEC_EVENT_PIN_5V_HIGH 8
0444
0445 #define CEC_EVENT_FL_INITIAL_STATE (1 << 0)
0446 #define CEC_EVENT_FL_DROPPED_EVENTS (1 << 1)
0447
0448
0449
0450
0451
0452
0453
0454
0455
0456
0457
0458
0459 struct cec_event_state_change {
0460 __u16 phys_addr;
0461 __u16 log_addr_mask;
0462 __u16 have_conn_info;
0463 };
0464
0465
0466
0467
0468
0469 struct cec_event_lost_msgs {
0470 __u32 lost_msgs;
0471 };
0472
0473
0474
0475
0476
0477
0478
0479
0480
0481
0482 struct cec_event {
0483 __u64 ts;
0484 __u32 event;
0485 __u32 flags;
0486 union {
0487 struct cec_event_state_change state_change;
0488 struct cec_event_lost_msgs lost_msgs;
0489 __u32 raw[16];
0490 };
0491 };
0492
0493
0494
0495
0496 #define CEC_ADAP_G_CAPS _IOWR('a', 0, struct cec_caps)
0497
0498
0499
0500
0501
0502
0503
0504
0505
0506
0507
0508
0509
0510 #define CEC_ADAP_G_PHYS_ADDR _IOR('a', 1, __u16)
0511 #define CEC_ADAP_S_PHYS_ADDR _IOW('a', 2, __u16)
0512
0513
0514
0515
0516
0517
0518
0519
0520
0521 #define CEC_ADAP_G_LOG_ADDRS _IOR('a', 3, struct cec_log_addrs)
0522 #define CEC_ADAP_S_LOG_ADDRS _IOWR('a', 4, struct cec_log_addrs)
0523
0524
0525 #define CEC_TRANSMIT _IOWR('a', 5, struct cec_msg)
0526 #define CEC_RECEIVE _IOWR('a', 6, struct cec_msg)
0527
0528
0529 #define CEC_DQEVENT _IOWR('a', 7, struct cec_event)
0530
0531
0532
0533
0534 #define CEC_G_MODE _IOR('a', 8, __u32)
0535 #define CEC_S_MODE _IOW('a', 9, __u32)
0536
0537
0538 #define CEC_ADAP_G_CONNECTOR_INFO _IOR('a', 10, struct cec_connector_info)
0539
0540
0541
0542
0543
0544
0545
0546
0547
0548
0549
0550
0551
0552
0553
0554
0555
0556
0557
0558 #define CEC_MSG_ACTIVE_SOURCE 0x82
0559 #define CEC_MSG_IMAGE_VIEW_ON 0x04
0560 #define CEC_MSG_TEXT_VIEW_ON 0x0d
0561
0562
0563
0564
0565
0566
0567
0568
0569
0570 #define CEC_MSG_INACTIVE_SOURCE 0x9d
0571 #define CEC_MSG_REQUEST_ACTIVE_SOURCE 0x85
0572 #define CEC_MSG_ROUTING_CHANGE 0x80
0573 #define CEC_MSG_ROUTING_INFORMATION 0x81
0574 #define CEC_MSG_SET_STREAM_PATH 0x86
0575
0576
0577
0578 #define CEC_MSG_STANDBY 0x36
0579
0580
0581
0582 #define CEC_MSG_RECORD_OFF 0x0b
0583 #define CEC_MSG_RECORD_ON 0x09
0584
0585 #define CEC_OP_RECORD_SRC_OWN 1
0586 #define CEC_OP_RECORD_SRC_DIGITAL 2
0587 #define CEC_OP_RECORD_SRC_ANALOG 3
0588 #define CEC_OP_RECORD_SRC_EXT_PLUG 4
0589 #define CEC_OP_RECORD_SRC_EXT_PHYS_ADDR 5
0590
0591 #define CEC_OP_SERVICE_ID_METHOD_BY_DIG_ID 0
0592 #define CEC_OP_SERVICE_ID_METHOD_BY_CHANNEL 1
0593
0594 #define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_ARIB_GEN 0x00
0595 #define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_ATSC_GEN 0x01
0596 #define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_DVB_GEN 0x02
0597 #define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_ARIB_BS 0x08
0598 #define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_ARIB_CS 0x09
0599 #define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_ARIB_T 0x0a
0600 #define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_ATSC_CABLE 0x10
0601 #define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_ATSC_SAT 0x11
0602 #define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_ATSC_T 0x12
0603 #define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_DVB_C 0x18
0604 #define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_DVB_S 0x19
0605 #define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_DVB_S2 0x1a
0606 #define CEC_OP_DIG_SERVICE_BCAST_SYSTEM_DVB_T 0x1b
0607
0608 #define CEC_OP_ANA_BCAST_TYPE_CABLE 0
0609 #define CEC_OP_ANA_BCAST_TYPE_SATELLITE 1
0610 #define CEC_OP_ANA_BCAST_TYPE_TERRESTRIAL 2
0611
0612 #define CEC_OP_BCAST_SYSTEM_PAL_BG 0x00
0613 #define CEC_OP_BCAST_SYSTEM_SECAM_LQ 0x01
0614 #define CEC_OP_BCAST_SYSTEM_PAL_M 0x02
0615 #define CEC_OP_BCAST_SYSTEM_NTSC_M 0x03
0616 #define CEC_OP_BCAST_SYSTEM_PAL_I 0x04
0617 #define CEC_OP_BCAST_SYSTEM_SECAM_DK 0x05
0618 #define CEC_OP_BCAST_SYSTEM_SECAM_BG 0x06
0619 #define CEC_OP_BCAST_SYSTEM_SECAM_L 0x07
0620 #define CEC_OP_BCAST_SYSTEM_PAL_DK 0x08
0621 #define CEC_OP_BCAST_SYSTEM_OTHER 0x1f
0622
0623 #define CEC_OP_CHANNEL_NUMBER_FMT_1_PART 0x01
0624 #define CEC_OP_CHANNEL_NUMBER_FMT_2_PART 0x02
0625
0626 #define CEC_MSG_RECORD_STATUS 0x0a
0627
0628 #define CEC_OP_RECORD_STATUS_CUR_SRC 0x01
0629 #define CEC_OP_RECORD_STATUS_DIG_SERVICE 0x02
0630 #define CEC_OP_RECORD_STATUS_ANA_SERVICE 0x03
0631 #define CEC_OP_RECORD_STATUS_EXT_INPUT 0x04
0632 #define CEC_OP_RECORD_STATUS_NO_DIG_SERVICE 0x05
0633 #define CEC_OP_RECORD_STATUS_NO_ANA_SERVICE 0x06
0634 #define CEC_OP_RECORD_STATUS_NO_SERVICE 0x07
0635 #define CEC_OP_RECORD_STATUS_INVALID_EXT_PLUG 0x09
0636 #define CEC_OP_RECORD_STATUS_INVALID_EXT_PHYS_ADDR 0x0a
0637 #define CEC_OP_RECORD_STATUS_UNSUP_CA 0x0b
0638 #define CEC_OP_RECORD_STATUS_NO_CA_ENTITLEMENTS 0x0c
0639 #define CEC_OP_RECORD_STATUS_CANT_COPY_SRC 0x0d
0640 #define CEC_OP_RECORD_STATUS_NO_MORE_COPIES 0x0e
0641 #define CEC_OP_RECORD_STATUS_NO_MEDIA 0x10
0642 #define CEC_OP_RECORD_STATUS_PLAYING 0x11
0643 #define CEC_OP_RECORD_STATUS_ALREADY_RECORDING 0x12
0644 #define CEC_OP_RECORD_STATUS_MEDIA_PROT 0x13
0645 #define CEC_OP_RECORD_STATUS_NO_SIGNAL 0x14
0646 #define CEC_OP_RECORD_STATUS_MEDIA_PROBLEM 0x15
0647 #define CEC_OP_RECORD_STATUS_NO_SPACE 0x16
0648 #define CEC_OP_RECORD_STATUS_PARENTAL_LOCK 0x17
0649 #define CEC_OP_RECORD_STATUS_TERMINATED_OK 0x1a
0650 #define CEC_OP_RECORD_STATUS_ALREADY_TERM 0x1b
0651 #define CEC_OP_RECORD_STATUS_OTHER 0x1f
0652
0653 #define CEC_MSG_RECORD_TV_SCREEN 0x0f
0654
0655
0656
0657 #define CEC_MSG_CLEAR_ANALOGUE_TIMER 0x33
0658
0659 #define CEC_OP_REC_SEQ_SUNDAY 0x01
0660 #define CEC_OP_REC_SEQ_MONDAY 0x02
0661 #define CEC_OP_REC_SEQ_TUESDAY 0x04
0662 #define CEC_OP_REC_SEQ_WEDNESDAY 0x08
0663 #define CEC_OP_REC_SEQ_THURSDAY 0x10
0664 #define CEC_OP_REC_SEQ_FRIDAY 0x20
0665 #define CEC_OP_REC_SEQ_SATURDAY 0x40
0666 #define CEC_OP_REC_SEQ_ONCE_ONLY 0x00
0667
0668 #define CEC_MSG_CLEAR_DIGITAL_TIMER 0x99
0669
0670 #define CEC_MSG_CLEAR_EXT_TIMER 0xa1
0671
0672 #define CEC_OP_EXT_SRC_PLUG 0x04
0673 #define CEC_OP_EXT_SRC_PHYS_ADDR 0x05
0674
0675 #define CEC_MSG_SET_ANALOGUE_TIMER 0x34
0676 #define CEC_MSG_SET_DIGITAL_TIMER 0x97
0677 #define CEC_MSG_SET_EXT_TIMER 0xa2
0678
0679 #define CEC_MSG_SET_TIMER_PROGRAM_TITLE 0x67
0680 #define CEC_MSG_TIMER_CLEARED_STATUS 0x43
0681
0682 #define CEC_OP_TIMER_CLR_STAT_RECORDING 0x00
0683 #define CEC_OP_TIMER_CLR_STAT_NO_MATCHING 0x01
0684 #define CEC_OP_TIMER_CLR_STAT_NO_INFO 0x02
0685 #define CEC_OP_TIMER_CLR_STAT_CLEARED 0x80
0686
0687 #define CEC_MSG_TIMER_STATUS 0x35
0688
0689 #define CEC_OP_TIMER_OVERLAP_WARNING_NO_OVERLAP 0
0690 #define CEC_OP_TIMER_OVERLAP_WARNING_OVERLAP 1
0691
0692 #define CEC_OP_MEDIA_INFO_UNPROT_MEDIA 0
0693 #define CEC_OP_MEDIA_INFO_PROT_MEDIA 1
0694 #define CEC_OP_MEDIA_INFO_NO_MEDIA 2
0695
0696 #define CEC_OP_PROG_IND_NOT_PROGRAMMED 0
0697 #define CEC_OP_PROG_IND_PROGRAMMED 1
0698
0699 #define CEC_OP_PROG_INFO_ENOUGH_SPACE 0x08
0700 #define CEC_OP_PROG_INFO_NOT_ENOUGH_SPACE 0x09
0701 #define CEC_OP_PROG_INFO_MIGHT_NOT_BE_ENOUGH_SPACE 0x0b
0702 #define CEC_OP_PROG_INFO_NONE_AVAILABLE 0x0a
0703
0704 #define CEC_OP_PROG_ERROR_NO_FREE_TIMER 0x01
0705 #define CEC_OP_PROG_ERROR_DATE_OUT_OF_RANGE 0x02
0706 #define CEC_OP_PROG_ERROR_REC_SEQ_ERROR 0x03
0707 #define CEC_OP_PROG_ERROR_INV_EXT_PLUG 0x04
0708 #define CEC_OP_PROG_ERROR_INV_EXT_PHYS_ADDR 0x05
0709 #define CEC_OP_PROG_ERROR_CA_UNSUPP 0x06
0710 #define CEC_OP_PROG_ERROR_INSUF_CA_ENTITLEMENTS 0x07
0711 #define CEC_OP_PROG_ERROR_RESOLUTION_UNSUPP 0x08
0712 #define CEC_OP_PROG_ERROR_PARENTAL_LOCK 0x09
0713 #define CEC_OP_PROG_ERROR_CLOCK_FAILURE 0x0a
0714 #define CEC_OP_PROG_ERROR_DUPLICATE 0x0e
0715
0716
0717
0718 #define CEC_MSG_CEC_VERSION 0x9e
0719
0720 #define CEC_OP_CEC_VERSION_1_3A 4
0721 #define CEC_OP_CEC_VERSION_1_4 5
0722 #define CEC_OP_CEC_VERSION_2_0 6
0723
0724 #define CEC_MSG_GET_CEC_VERSION 0x9f
0725 #define CEC_MSG_GIVE_PHYSICAL_ADDR 0x83
0726 #define CEC_MSG_GET_MENU_LANGUAGE 0x91
0727 #define CEC_MSG_REPORT_PHYSICAL_ADDR 0x84
0728
0729 #define CEC_OP_PRIM_DEVTYPE_TV 0
0730 #define CEC_OP_PRIM_DEVTYPE_RECORD 1
0731 #define CEC_OP_PRIM_DEVTYPE_TUNER 3
0732 #define CEC_OP_PRIM_DEVTYPE_PLAYBACK 4
0733 #define CEC_OP_PRIM_DEVTYPE_AUDIOSYSTEM 5
0734 #define CEC_OP_PRIM_DEVTYPE_SWITCH 6
0735 #define CEC_OP_PRIM_DEVTYPE_PROCESSOR 7
0736
0737 #define CEC_MSG_SET_MENU_LANGUAGE 0x32
0738 #define CEC_MSG_REPORT_FEATURES 0xa6
0739
0740 #define CEC_OP_ALL_DEVTYPE_TV 0x80
0741 #define CEC_OP_ALL_DEVTYPE_RECORD 0x40
0742 #define CEC_OP_ALL_DEVTYPE_TUNER 0x20
0743 #define CEC_OP_ALL_DEVTYPE_PLAYBACK 0x10
0744 #define CEC_OP_ALL_DEVTYPE_AUDIOSYSTEM 0x08
0745 #define CEC_OP_ALL_DEVTYPE_SWITCH 0x04
0746
0747
0748
0749
0750
0751
0752 #define CEC_OP_FEAT_EXT 0x80
0753
0754 #define CEC_OP_FEAT_RC_TV_PROFILE_NONE 0x00
0755 #define CEC_OP_FEAT_RC_TV_PROFILE_1 0x02
0756 #define CEC_OP_FEAT_RC_TV_PROFILE_2 0x06
0757 #define CEC_OP_FEAT_RC_TV_PROFILE_3 0x0a
0758 #define CEC_OP_FEAT_RC_TV_PROFILE_4 0x0e
0759 #define CEC_OP_FEAT_RC_SRC_HAS_DEV_ROOT_MENU 0x50
0760 #define CEC_OP_FEAT_RC_SRC_HAS_DEV_SETUP_MENU 0x48
0761 #define CEC_OP_FEAT_RC_SRC_HAS_CONTENTS_MENU 0x44
0762 #define CEC_OP_FEAT_RC_SRC_HAS_MEDIA_TOP_MENU 0x42
0763 #define CEC_OP_FEAT_RC_SRC_HAS_MEDIA_CONTEXT_MENU 0x41
0764
0765 #define CEC_OP_FEAT_DEV_HAS_RECORD_TV_SCREEN 0x40
0766 #define CEC_OP_FEAT_DEV_HAS_SET_OSD_STRING 0x20
0767 #define CEC_OP_FEAT_DEV_HAS_DECK_CONTROL 0x10
0768 #define CEC_OP_FEAT_DEV_HAS_SET_AUDIO_RATE 0x08
0769 #define CEC_OP_FEAT_DEV_SINK_HAS_ARC_TX 0x04
0770 #define CEC_OP_FEAT_DEV_SOURCE_HAS_ARC_RX 0x02
0771
0772 #define CEC_MSG_GIVE_FEATURES 0xa5
0773
0774
0775
0776 #define CEC_MSG_DECK_CONTROL 0x42
0777
0778 #define CEC_OP_DECK_CTL_MODE_SKIP_FWD 1
0779 #define CEC_OP_DECK_CTL_MODE_SKIP_REV 2
0780 #define CEC_OP_DECK_CTL_MODE_STOP 3
0781 #define CEC_OP_DECK_CTL_MODE_EJECT 4
0782
0783 #define CEC_MSG_DECK_STATUS 0x1b
0784
0785 #define CEC_OP_DECK_INFO_PLAY 0x11
0786 #define CEC_OP_DECK_INFO_RECORD 0x12
0787 #define CEC_OP_DECK_INFO_PLAY_REV 0x13
0788 #define CEC_OP_DECK_INFO_STILL 0x14
0789 #define CEC_OP_DECK_INFO_SLOW 0x15
0790 #define CEC_OP_DECK_INFO_SLOW_REV 0x16
0791 #define CEC_OP_DECK_INFO_FAST_FWD 0x17
0792 #define CEC_OP_DECK_INFO_FAST_REV 0x18
0793 #define CEC_OP_DECK_INFO_NO_MEDIA 0x19
0794 #define CEC_OP_DECK_INFO_STOP 0x1a
0795 #define CEC_OP_DECK_INFO_SKIP_FWD 0x1b
0796 #define CEC_OP_DECK_INFO_SKIP_REV 0x1c
0797 #define CEC_OP_DECK_INFO_INDEX_SEARCH_FWD 0x1d
0798 #define CEC_OP_DECK_INFO_INDEX_SEARCH_REV 0x1e
0799 #define CEC_OP_DECK_INFO_OTHER 0x1f
0800
0801 #define CEC_MSG_GIVE_DECK_STATUS 0x1a
0802
0803 #define CEC_OP_STATUS_REQ_ON 1
0804 #define CEC_OP_STATUS_REQ_OFF 2
0805 #define CEC_OP_STATUS_REQ_ONCE 3
0806
0807 #define CEC_MSG_PLAY 0x41
0808
0809 #define CEC_OP_PLAY_MODE_PLAY_FWD 0x24
0810 #define CEC_OP_PLAY_MODE_PLAY_REV 0x20
0811 #define CEC_OP_PLAY_MODE_PLAY_STILL 0x25
0812 #define CEC_OP_PLAY_MODE_PLAY_FAST_FWD_MIN 0x05
0813 #define CEC_OP_PLAY_MODE_PLAY_FAST_FWD_MED 0x06
0814 #define CEC_OP_PLAY_MODE_PLAY_FAST_FWD_MAX 0x07
0815 #define CEC_OP_PLAY_MODE_PLAY_FAST_REV_MIN 0x09
0816 #define CEC_OP_PLAY_MODE_PLAY_FAST_REV_MED 0x0a
0817 #define CEC_OP_PLAY_MODE_PLAY_FAST_REV_MAX 0x0b
0818 #define CEC_OP_PLAY_MODE_PLAY_SLOW_FWD_MIN 0x15
0819 #define CEC_OP_PLAY_MODE_PLAY_SLOW_FWD_MED 0x16
0820 #define CEC_OP_PLAY_MODE_PLAY_SLOW_FWD_MAX 0x17
0821 #define CEC_OP_PLAY_MODE_PLAY_SLOW_REV_MIN 0x19
0822 #define CEC_OP_PLAY_MODE_PLAY_SLOW_REV_MED 0x1a
0823 #define CEC_OP_PLAY_MODE_PLAY_SLOW_REV_MAX 0x1b
0824
0825
0826
0827 #define CEC_MSG_GIVE_TUNER_DEVICE_STATUS 0x08
0828 #define CEC_MSG_SELECT_ANALOGUE_SERVICE 0x92
0829 #define CEC_MSG_SELECT_DIGITAL_SERVICE 0x93
0830 #define CEC_MSG_TUNER_DEVICE_STATUS 0x07
0831
0832 #define CEC_OP_REC_FLAG_NOT_USED 0
0833 #define CEC_OP_REC_FLAG_USED 1
0834
0835 #define CEC_OP_TUNER_DISPLAY_INFO_DIGITAL 0
0836 #define CEC_OP_TUNER_DISPLAY_INFO_NONE 1
0837 #define CEC_OP_TUNER_DISPLAY_INFO_ANALOGUE 2
0838
0839 #define CEC_MSG_TUNER_STEP_DECREMENT 0x06
0840 #define CEC_MSG_TUNER_STEP_INCREMENT 0x05
0841
0842
0843
0844
0845
0846
0847
0848
0849
0850 #define CEC_MSG_DEVICE_VENDOR_ID 0x87
0851 #define CEC_MSG_GIVE_DEVICE_VENDOR_ID 0x8c
0852 #define CEC_MSG_VENDOR_COMMAND 0x89
0853 #define CEC_MSG_VENDOR_COMMAND_WITH_ID 0xa0
0854 #define CEC_MSG_VENDOR_REMOTE_BUTTON_DOWN 0x8a
0855 #define CEC_MSG_VENDOR_REMOTE_BUTTON_UP 0x8b
0856
0857
0858
0859 #define CEC_MSG_SET_OSD_STRING 0x64
0860
0861 #define CEC_OP_DISP_CTL_DEFAULT 0x00
0862 #define CEC_OP_DISP_CTL_UNTIL_CLEARED 0x40
0863 #define CEC_OP_DISP_CTL_CLEAR 0x80
0864
0865
0866
0867 #define CEC_MSG_GIVE_OSD_NAME 0x46
0868 #define CEC_MSG_SET_OSD_NAME 0x47
0869
0870
0871
0872 #define CEC_MSG_MENU_REQUEST 0x8d
0873
0874 #define CEC_OP_MENU_REQUEST_ACTIVATE 0x00
0875 #define CEC_OP_MENU_REQUEST_DEACTIVATE 0x01
0876 #define CEC_OP_MENU_REQUEST_QUERY 0x02
0877
0878 #define CEC_MSG_MENU_STATUS 0x8e
0879
0880 #define CEC_OP_MENU_STATE_ACTIVATED 0x00
0881 #define CEC_OP_MENU_STATE_DEACTIVATED 0x01
0882
0883 #define CEC_MSG_USER_CONTROL_PRESSED 0x44
0884
0885 #define CEC_OP_UI_CMD_SELECT 0x00
0886 #define CEC_OP_UI_CMD_UP 0x01
0887 #define CEC_OP_UI_CMD_DOWN 0x02
0888 #define CEC_OP_UI_CMD_LEFT 0x03
0889 #define CEC_OP_UI_CMD_RIGHT 0x04
0890 #define CEC_OP_UI_CMD_RIGHT_UP 0x05
0891 #define CEC_OP_UI_CMD_RIGHT_DOWN 0x06
0892 #define CEC_OP_UI_CMD_LEFT_UP 0x07
0893 #define CEC_OP_UI_CMD_LEFT_DOWN 0x08
0894 #define CEC_OP_UI_CMD_DEVICE_ROOT_MENU 0x09
0895 #define CEC_OP_UI_CMD_DEVICE_SETUP_MENU 0x0a
0896 #define CEC_OP_UI_CMD_CONTENTS_MENU 0x0b
0897 #define CEC_OP_UI_CMD_FAVORITE_MENU 0x0c
0898 #define CEC_OP_UI_CMD_BACK 0x0d
0899 #define CEC_OP_UI_CMD_MEDIA_TOP_MENU 0x10
0900 #define CEC_OP_UI_CMD_MEDIA_CONTEXT_SENSITIVE_MENU 0x11
0901 #define CEC_OP_UI_CMD_NUMBER_ENTRY_MODE 0x1d
0902 #define CEC_OP_UI_CMD_NUMBER_11 0x1e
0903 #define CEC_OP_UI_CMD_NUMBER_12 0x1f
0904 #define CEC_OP_UI_CMD_NUMBER_0_OR_NUMBER_10 0x20
0905 #define CEC_OP_UI_CMD_NUMBER_1 0x21
0906 #define CEC_OP_UI_CMD_NUMBER_2 0x22
0907 #define CEC_OP_UI_CMD_NUMBER_3 0x23
0908 #define CEC_OP_UI_CMD_NUMBER_4 0x24
0909 #define CEC_OP_UI_CMD_NUMBER_5 0x25
0910 #define CEC_OP_UI_CMD_NUMBER_6 0x26
0911 #define CEC_OP_UI_CMD_NUMBER_7 0x27
0912 #define CEC_OP_UI_CMD_NUMBER_8 0x28
0913 #define CEC_OP_UI_CMD_NUMBER_9 0x29
0914 #define CEC_OP_UI_CMD_DOT 0x2a
0915 #define CEC_OP_UI_CMD_ENTER 0x2b
0916 #define CEC_OP_UI_CMD_CLEAR 0x2c
0917 #define CEC_OP_UI_CMD_NEXT_FAVORITE 0x2f
0918 #define CEC_OP_UI_CMD_CHANNEL_UP 0x30
0919 #define CEC_OP_UI_CMD_CHANNEL_DOWN 0x31
0920 #define CEC_OP_UI_CMD_PREVIOUS_CHANNEL 0x32
0921 #define CEC_OP_UI_CMD_SOUND_SELECT 0x33
0922 #define CEC_OP_UI_CMD_INPUT_SELECT 0x34
0923 #define CEC_OP_UI_CMD_DISPLAY_INFORMATION 0x35
0924 #define CEC_OP_UI_CMD_HELP 0x36
0925 #define CEC_OP_UI_CMD_PAGE_UP 0x37
0926 #define CEC_OP_UI_CMD_PAGE_DOWN 0x38
0927 #define CEC_OP_UI_CMD_POWER 0x40
0928 #define CEC_OP_UI_CMD_VOLUME_UP 0x41
0929 #define CEC_OP_UI_CMD_VOLUME_DOWN 0x42
0930 #define CEC_OP_UI_CMD_MUTE 0x43
0931 #define CEC_OP_UI_CMD_PLAY 0x44
0932 #define CEC_OP_UI_CMD_STOP 0x45
0933 #define CEC_OP_UI_CMD_PAUSE 0x46
0934 #define CEC_OP_UI_CMD_RECORD 0x47
0935 #define CEC_OP_UI_CMD_REWIND 0x48
0936 #define CEC_OP_UI_CMD_FAST_FORWARD 0x49
0937 #define CEC_OP_UI_CMD_EJECT 0x4a
0938 #define CEC_OP_UI_CMD_SKIP_FORWARD 0x4b
0939 #define CEC_OP_UI_CMD_SKIP_BACKWARD 0x4c
0940 #define CEC_OP_UI_CMD_STOP_RECORD 0x4d
0941 #define CEC_OP_UI_CMD_PAUSE_RECORD 0x4e
0942 #define CEC_OP_UI_CMD_ANGLE 0x50
0943 #define CEC_OP_UI_CMD_SUB_PICTURE 0x51
0944 #define CEC_OP_UI_CMD_VIDEO_ON_DEMAND 0x52
0945 #define CEC_OP_UI_CMD_ELECTRONIC_PROGRAM_GUIDE 0x53
0946 #define CEC_OP_UI_CMD_TIMER_PROGRAMMING 0x54
0947 #define CEC_OP_UI_CMD_INITIAL_CONFIGURATION 0x55
0948 #define CEC_OP_UI_CMD_SELECT_BROADCAST_TYPE 0x56
0949 #define CEC_OP_UI_CMD_SELECT_SOUND_PRESENTATION 0x57
0950 #define CEC_OP_UI_CMD_AUDIO_DESCRIPTION 0x58
0951 #define CEC_OP_UI_CMD_INTERNET 0x59
0952 #define CEC_OP_UI_CMD_3D_MODE 0x5a
0953 #define CEC_OP_UI_CMD_PLAY_FUNCTION 0x60
0954 #define CEC_OP_UI_CMD_PAUSE_PLAY_FUNCTION 0x61
0955 #define CEC_OP_UI_CMD_RECORD_FUNCTION 0x62
0956 #define CEC_OP_UI_CMD_PAUSE_RECORD_FUNCTION 0x63
0957 #define CEC_OP_UI_CMD_STOP_FUNCTION 0x64
0958 #define CEC_OP_UI_CMD_MUTE_FUNCTION 0x65
0959 #define CEC_OP_UI_CMD_RESTORE_VOLUME_FUNCTION 0x66
0960 #define CEC_OP_UI_CMD_TUNE_FUNCTION 0x67
0961 #define CEC_OP_UI_CMD_SELECT_MEDIA_FUNCTION 0x68
0962 #define CEC_OP_UI_CMD_SELECT_AV_INPUT_FUNCTION 0x69
0963 #define CEC_OP_UI_CMD_SELECT_AUDIO_INPUT_FUNCTION 0x6a
0964 #define CEC_OP_UI_CMD_POWER_TOGGLE_FUNCTION 0x6b
0965 #define CEC_OP_UI_CMD_POWER_OFF_FUNCTION 0x6c
0966 #define CEC_OP_UI_CMD_POWER_ON_FUNCTION 0x6d
0967 #define CEC_OP_UI_CMD_F1_BLUE 0x71
0968 #define CEC_OP_UI_CMD_F2_RED 0x72
0969 #define CEC_OP_UI_CMD_F3_GREEN 0x73
0970 #define CEC_OP_UI_CMD_F4_YELLOW 0x74
0971 #define CEC_OP_UI_CMD_F5 0x75
0972 #define CEC_OP_UI_CMD_DATA 0x76
0973
0974 #define CEC_OP_UI_BCAST_TYPE_TOGGLE_ALL 0x00
0975 #define CEC_OP_UI_BCAST_TYPE_TOGGLE_DIG_ANA 0x01
0976 #define CEC_OP_UI_BCAST_TYPE_ANALOGUE 0x10
0977 #define CEC_OP_UI_BCAST_TYPE_ANALOGUE_T 0x20
0978 #define CEC_OP_UI_BCAST_TYPE_ANALOGUE_CABLE 0x30
0979 #define CEC_OP_UI_BCAST_TYPE_ANALOGUE_SAT 0x40
0980 #define CEC_OP_UI_BCAST_TYPE_DIGITAL 0x50
0981 #define CEC_OP_UI_BCAST_TYPE_DIGITAL_T 0x60
0982 #define CEC_OP_UI_BCAST_TYPE_DIGITAL_CABLE 0x70
0983 #define CEC_OP_UI_BCAST_TYPE_DIGITAL_SAT 0x80
0984 #define CEC_OP_UI_BCAST_TYPE_DIGITAL_COM_SAT 0x90
0985 #define CEC_OP_UI_BCAST_TYPE_DIGITAL_COM_SAT2 0x91
0986 #define CEC_OP_UI_BCAST_TYPE_IP 0xa0
0987
0988 #define CEC_OP_UI_SND_PRES_CTL_DUAL_MONO 0x10
0989 #define CEC_OP_UI_SND_PRES_CTL_KARAOKE 0x20
0990 #define CEC_OP_UI_SND_PRES_CTL_DOWNMIX 0x80
0991 #define CEC_OP_UI_SND_PRES_CTL_REVERB 0x90
0992 #define CEC_OP_UI_SND_PRES_CTL_EQUALIZER 0xa0
0993 #define CEC_OP_UI_SND_PRES_CTL_BASS_UP 0xb1
0994 #define CEC_OP_UI_SND_PRES_CTL_BASS_NEUTRAL 0xb2
0995 #define CEC_OP_UI_SND_PRES_CTL_BASS_DOWN 0xb3
0996 #define CEC_OP_UI_SND_PRES_CTL_TREBLE_UP 0xc1
0997 #define CEC_OP_UI_SND_PRES_CTL_TREBLE_NEUTRAL 0xc2
0998 #define CEC_OP_UI_SND_PRES_CTL_TREBLE_DOWN 0xc3
0999
1000 #define CEC_MSG_USER_CONTROL_RELEASED 0x45
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013 #define CEC_MSG_GIVE_DEVICE_POWER_STATUS 0x8f
1014 #define CEC_MSG_REPORT_POWER_STATUS 0x90
1015
1016 #define CEC_OP_POWER_STATUS_ON 0
1017 #define CEC_OP_POWER_STATUS_STANDBY 1
1018 #define CEC_OP_POWER_STATUS_TO_ON 2
1019 #define CEC_OP_POWER_STATUS_TO_STANDBY 3
1020
1021
1022
1023 #define CEC_MSG_FEATURE_ABORT 0x00
1024
1025 #define CEC_OP_ABORT_UNRECOGNIZED_OP 0
1026 #define CEC_OP_ABORT_INCORRECT_MODE 1
1027 #define CEC_OP_ABORT_NO_SOURCE 2
1028 #define CEC_OP_ABORT_INVALID_OP 3
1029 #define CEC_OP_ABORT_REFUSED 4
1030 #define CEC_OP_ABORT_UNDETERMINED 5
1031
1032 #define CEC_MSG_ABORT 0xff
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042 #define CEC_MSG_GIVE_AUDIO_STATUS 0x71
1043 #define CEC_MSG_GIVE_SYSTEM_AUDIO_MODE_STATUS 0x7d
1044 #define CEC_MSG_REPORT_AUDIO_STATUS 0x7a
1045
1046 #define CEC_OP_AUD_MUTE_STATUS_OFF 0
1047 #define CEC_OP_AUD_MUTE_STATUS_ON 1
1048
1049 #define CEC_MSG_REPORT_SHORT_AUDIO_DESCRIPTOR 0xa3
1050 #define CEC_MSG_REQUEST_SHORT_AUDIO_DESCRIPTOR 0xa4
1051 #define CEC_MSG_SET_SYSTEM_AUDIO_MODE 0x72
1052
1053 #define CEC_OP_SYS_AUD_STATUS_OFF 0
1054 #define CEC_OP_SYS_AUD_STATUS_ON 1
1055
1056 #define CEC_MSG_SYSTEM_AUDIO_MODE_REQUEST 0x70
1057 #define CEC_MSG_SYSTEM_AUDIO_MODE_STATUS 0x7e
1058
1059 #define CEC_OP_AUD_FMT_ID_CEA861 0
1060 #define CEC_OP_AUD_FMT_ID_CEA861_CXT 1
1061
1062
1063
1064 #define CEC_MSG_SET_AUDIO_RATE 0x9a
1065
1066 #define CEC_OP_AUD_RATE_OFF 0
1067 #define CEC_OP_AUD_RATE_WIDE_STD 1
1068 #define CEC_OP_AUD_RATE_WIDE_FAST 2
1069 #define CEC_OP_AUD_RATE_WIDE_SLOW 3
1070 #define CEC_OP_AUD_RATE_NARROW_STD 4
1071 #define CEC_OP_AUD_RATE_NARROW_FAST 5
1072 #define CEC_OP_AUD_RATE_NARROW_SLOW 6
1073
1074
1075
1076 #define CEC_MSG_INITIATE_ARC 0xc0
1077 #define CEC_MSG_REPORT_ARC_INITIATED 0xc1
1078 #define CEC_MSG_REPORT_ARC_TERMINATED 0xc2
1079 #define CEC_MSG_REQUEST_ARC_INITIATION 0xc3
1080 #define CEC_MSG_REQUEST_ARC_TERMINATION 0xc4
1081 #define CEC_MSG_TERMINATE_ARC 0xc5
1082
1083
1084
1085
1086 #define CEC_MSG_REQUEST_CURRENT_LATENCY 0xa7
1087 #define CEC_MSG_REPORT_CURRENT_LATENCY 0xa8
1088
1089 #define CEC_OP_LOW_LATENCY_MODE_OFF 0
1090 #define CEC_OP_LOW_LATENCY_MODE_ON 1
1091
1092 #define CEC_OP_AUD_OUT_COMPENSATED_NA 0
1093 #define CEC_OP_AUD_OUT_COMPENSATED_DELAY 1
1094 #define CEC_OP_AUD_OUT_COMPENSATED_NO_DELAY 2
1095 #define CEC_OP_AUD_OUT_COMPENSATED_PARTIAL_DELAY 3
1096
1097
1098
1099 #define CEC_MSG_CDC_MESSAGE 0xf8
1100
1101 #define CEC_MSG_CDC_HEC_INQUIRE_STATE 0x00
1102 #define CEC_MSG_CDC_HEC_REPORT_STATE 0x01
1103
1104 #define CEC_OP_HEC_FUNC_STATE_NOT_SUPPORTED 0
1105 #define CEC_OP_HEC_FUNC_STATE_INACTIVE 1
1106 #define CEC_OP_HEC_FUNC_STATE_ACTIVE 2
1107 #define CEC_OP_HEC_FUNC_STATE_ACTIVATION_FIELD 3
1108
1109 #define CEC_OP_HOST_FUNC_STATE_NOT_SUPPORTED 0
1110 #define CEC_OP_HOST_FUNC_STATE_INACTIVE 1
1111 #define CEC_OP_HOST_FUNC_STATE_ACTIVE 2
1112
1113 #define CEC_OP_ENC_FUNC_STATE_EXT_CON_NOT_SUPPORTED 0
1114 #define CEC_OP_ENC_FUNC_STATE_EXT_CON_INACTIVE 1
1115 #define CEC_OP_ENC_FUNC_STATE_EXT_CON_ACTIVE 2
1116
1117 #define CEC_OP_CDC_ERROR_CODE_NONE 0
1118 #define CEC_OP_CDC_ERROR_CODE_CAP_UNSUPPORTED 1
1119 #define CEC_OP_CDC_ERROR_CODE_WRONG_STATE 2
1120 #define CEC_OP_CDC_ERROR_CODE_OTHER 3
1121
1122 #define CEC_OP_HEC_SUPPORT_NO 0
1123 #define CEC_OP_HEC_SUPPORT_YES 1
1124
1125 #define CEC_OP_HEC_ACTIVATION_ON 0
1126 #define CEC_OP_HEC_ACTIVATION_OFF 1
1127
1128 #define CEC_MSG_CDC_HEC_SET_STATE_ADJACENT 0x02
1129 #define CEC_MSG_CDC_HEC_SET_STATE 0x03
1130
1131 #define CEC_OP_HEC_SET_STATE_DEACTIVATE 0
1132 #define CEC_OP_HEC_SET_STATE_ACTIVATE 1
1133
1134 #define CEC_MSG_CDC_HEC_REQUEST_DEACTIVATION 0x04
1135 #define CEC_MSG_CDC_HEC_NOTIFY_ALIVE 0x05
1136 #define CEC_MSG_CDC_HEC_DISCOVER 0x06
1137
1138 #define CEC_MSG_CDC_HPD_SET_STATE 0x10
1139
1140 #define CEC_OP_HPD_STATE_CP_EDID_DISABLE 0
1141 #define CEC_OP_HPD_STATE_CP_EDID_ENABLE 1
1142 #define CEC_OP_HPD_STATE_CP_EDID_DISABLE_ENABLE 2
1143 #define CEC_OP_HPD_STATE_EDID_DISABLE 3
1144 #define CEC_OP_HPD_STATE_EDID_ENABLE 4
1145 #define CEC_OP_HPD_STATE_EDID_DISABLE_ENABLE 5
1146 #define CEC_MSG_CDC_HPD_REPORT_STATE 0x11
1147
1148 #define CEC_OP_HPD_ERROR_NONE 0
1149 #define CEC_OP_HPD_ERROR_INITIATOR_NOT_CAPABLE 1
1150 #define CEC_OP_HPD_ERROR_INITIATOR_WRONG_STATE 2
1151 #define CEC_OP_HPD_ERROR_OTHER 3
1152 #define CEC_OP_HPD_ERROR_NONE_NO_VIDEO 4
1153
1154
1155
1156
1157
1158 static inline int cec_is_2nd_tv(const struct cec_log_addrs *las)
1159 {
1160
1161
1162
1163
1164 return las->num_log_addrs &&
1165 las->log_addr[0] >= CEC_LOG_ADDR_SPECIFIC &&
1166 las->primary_device_type[0] == CEC_OP_PRIM_DEVTYPE_TV;
1167 }
1168
1169 static inline int cec_is_processor(const struct cec_log_addrs *las)
1170 {
1171
1172
1173
1174
1175 return las->num_log_addrs &&
1176 las->log_addr[0] >= CEC_LOG_ADDR_BACKUP_1 &&
1177 las->primary_device_type[0] == CEC_OP_PRIM_DEVTYPE_PROCESSOR;
1178 }
1179
1180 static inline int cec_is_switch(const struct cec_log_addrs *las)
1181 {
1182
1183
1184
1185
1186 return las->num_log_addrs == 1 &&
1187 las->log_addr[0] == CEC_LOG_ADDR_UNREGISTERED &&
1188 las->primary_device_type[0] == CEC_OP_PRIM_DEVTYPE_SWITCH &&
1189 !(las->flags & CEC_LOG_ADDRS_FL_CDC_ONLY);
1190 }
1191
1192 static inline int cec_is_cdc_only(const struct cec_log_addrs *las)
1193 {
1194
1195
1196
1197
1198 return las->num_log_addrs == 1 &&
1199 las->log_addr[0] == CEC_LOG_ADDR_UNREGISTERED &&
1200 las->primary_device_type[0] == CEC_OP_PRIM_DEVTYPE_SWITCH &&
1201 (las->flags & CEC_LOG_ADDRS_FL_CDC_ONLY);
1202 }
1203
1204 #endif