#define LAN9303_INT_EN 0x17
 # define LAN9303_INT_EN_PHY_INT2_EN BIT(27)
 # define LAN9303_INT_EN_PHY_INT1_EN BIT(26)
+#define LAN9303_BYTE_ORDER 0x19
 #define LAN9303_HW_CFG 0x1D
 # define LAN9303_HW_CFG_READY BIT(27)
 # define LAN9303_HW_CFG_AMDX_EN_PORT2 BIT(26)
        if (ret) {
                dev_err(chip->dev, "failed to read chip revision register: %d\n",
                        ret);
-               if (!chip->reset_gpio) {
-                       dev_dbg(chip->dev,
-                               "hint: maybe failed due to missing reset GPIO\n");
-               }
                return ret;
        }
 
 int lan9303_probe(struct lan9303 *chip, struct device_node *np)
 {
        int ret;
+       u32 reg;
 
        mutex_init(&chip->indirect_mutex);
        mutex_init(&chip->alr_mutex);
 
        lan9303_handle_reset(chip);
 
+       /* First read to the device.  This is a Dummy read to ensure MDIO */
+       /* access is in 32-bit sync. */
+       ret = lan9303_read(chip->regmap, LAN9303_BYTE_ORDER, ®);
+       if (ret) {
+               dev_err(chip->dev, "failed to access the device: %d\n",
+                       ret);
+               if (!chip->reset_gpio) {
+                       dev_dbg(chip->dev,
+                               "hint: maybe failed due to missing reset GPIO\n");
+               }
+               return ret;
+       }
+
        ret = lan9303_check_device(chip);
        if (ret)
                return ret;