static void adv_cec_tx_raw_status(struct adv7511 *adv7511, u8 tx_raw_status)
 {
-       unsigned int offset = adv7511->type == ADV7533 ?
-                                       ADV7533_REG_CEC_OFFSET : 0;
+       unsigned int offset = adv7511->reg_cec_offset;
        unsigned int val;
 
        if (regmap_read(adv7511->regmap_cec,
 
 void adv7511_cec_irq_process(struct adv7511 *adv7511, unsigned int irq1)
 {
-       unsigned int offset = adv7511->type == ADV7533 ?
-                                       ADV7533_REG_CEC_OFFSET : 0;
+       unsigned int offset = adv7511->reg_cec_offset;
        const u32 irq_tx_mask = ADV7511_INT1_CEC_TX_READY |
                                ADV7511_INT1_CEC_TX_ARBIT_LOST |
                                ADV7511_INT1_CEC_TX_RETRY_TIMEOUT;
 static int adv7511_cec_adap_enable(struct cec_adapter *adap, bool enable)
 {
        struct adv7511 *adv7511 = cec_get_drvdata(adap);
-       unsigned int offset = adv7511->type == ADV7533 ?
-                                       ADV7533_REG_CEC_OFFSET : 0;
+       unsigned int offset = adv7511->reg_cec_offset;
 
        if (adv7511->i2c_cec == NULL)
                return -EIO;
 static int adv7511_cec_adap_log_addr(struct cec_adapter *adap, u8 addr)
 {
        struct adv7511 *adv7511 = cec_get_drvdata(adap);
-       unsigned int offset = adv7511->type == ADV7533 ?
-                                       ADV7533_REG_CEC_OFFSET : 0;
+       unsigned int offset = adv7511->reg_cec_offset;
        unsigned int i, free_idx = ADV7511_MAX_ADDRS;
 
        if (!adv7511->cec_enabled_adap)
                                     u32 signal_free_time, struct cec_msg *msg)
 {
        struct adv7511 *adv7511 = cec_get_drvdata(adap);
-       unsigned int offset = adv7511->type == ADV7533 ?
-                                       ADV7533_REG_CEC_OFFSET : 0;
+       unsigned int offset = adv7511->reg_cec_offset;
        u8 len = msg->len;
        unsigned int i;
 
 
 int adv7511_cec_init(struct device *dev, struct adv7511 *adv7511)
 {
-       unsigned int offset = adv7511->type == ADV7533 ?
-                                               ADV7533_REG_CEC_OFFSET : 0;
+       unsigned int offset = adv7511->reg_cec_offset;
        int ret = adv7511_cec_parse_dt(dev, adv7511);
 
        if (ret)
 
        struct i2c_client *i2c = to_i2c_client(dev);
        struct adv7511 *adv7511 = i2c_get_clientdata(i2c);
 
-       if (adv7511->type == ADV7533 || adv7511->type == ADV7535)
-               reg -= ADV7533_REG_CEC_OFFSET;
+       reg -= adv7511->reg_cec_offset;
 
        switch (reg) {
        case ADV7511_REG_CEC_RX_FRAME_HDR:
                ret = adv7533_patch_cec_registers(adv);
                if (ret)
                        goto err;
+
+               adv->reg_cec_offset = ADV7533_REG_CEC_OFFSET;
        }
 
        return 0;