void *buf;
        u32 val;
 
+       if (is_mt7663(&dev->mt76))
+               len = MT7663_EEPROM_SIZE;
+
        val = mt76_rr(dev, base + MT_EFUSE_BASE_CTRL);
        if (val & MT_EFUSE_BASE_CTRL_EMPTY)
                return 0;
 {
        int ret;
 
+       BUILD_BUG_ON(MT7615_EEPROM_FULL_SIZE < MT7663_EEPROM_SIZE);
+
        ret = mt76_eeprom_init(&dev->mt76, MT7615_EEPROM_FULL_SIZE);
        if (ret < 0)
                return ret;
        ret = mt7615_check_eeprom(&dev->mt76);
        if (ret && dev->mt76.otp.data) {
                memcpy(dev->mt76.eeprom.data, dev->mt76.otp.data,
-                      MT7615_EEPROM_SIZE);
+                      dev->mt76.otp.size);
        } else {
                dev->flash_eeprom = true;
                mt7615_cal_free_data(dev);