}
 }
 
+static inline bool is_mt7688(struct mt7603_dev *dev)
+{
+       return mt76_rr(dev, MT_EFUSE_BASE + 0x64) & BIT(4);
+}
+
 int mt7603_eeprom_init(struct mt7603_dev *dev)
 {
+       u8 *eeprom;
        int ret;
 
        ret = mt7603_eeprom_load(dev);
                               MT7603_EEPROM_SIZE);
        }
 
+       eeprom = (u8 *)dev->mt76.eeprom.data;
        dev->mt76.cap.has_2ghz = true;
-       memcpy(dev->mt76.macaddr, dev->mt76.eeprom.data + MT_EE_MAC_ADDR,
-              ETH_ALEN);
+       memcpy(dev->mt76.macaddr, eeprom + MT_EE_MAC_ADDR, ETH_ALEN);
+
+       /* Check for 1SS devices */
+       dev->mphy.antenna_mask = 3;
+       if (FIELD_GET(MT_EE_NIC_CONF_0_RX_PATH, eeprom[MT_EE_NIC_CONF_0]) == 1 ||
+           FIELD_GET(MT_EE_NIC_CONF_0_TX_PATH, eeprom[MT_EE_NIC_CONF_0]) == 1 ||
+           is_mt7688(dev))
+               dev->mphy.antenna_mask = 1;
 
        mt76_eeprom_override(&dev->mt76);
 
 
        tasklet_init(&dev->mt76.pre_tbtt_tasklet, mt7603_pre_tbtt_tasklet,
                     (unsigned long)dev);
 
-       /* Check for 7688, which only has 1SS */
-       dev->mphy.antenna_mask = 3;
-       if (mt76_rr(dev, MT_EFUSE_BASE + 0x64) & BIT(4))
-               dev->mphy.antenna_mask = 1;
-
        dev->slottime = 9;
        dev->sensitivity_limit = 28;
        dev->dynamic_sensitivity = true;