mv88e6xxx_reg_unlock(chip);
 }
 
-int mv88e6xxx_wait(struct mv88e6xxx_chip *chip, int addr, int reg, u16 mask)
-{
-       return mv88e6xxx_wait_mask(chip, addr, reg, mask, 0x0000);
-}
-
-/* Indirect write to single pointer-data register with an Update bit */
-int mv88e6xxx_update(struct mv88e6xxx_chip *chip, int addr, int reg, u16 update)
-{
-       u16 val;
-       int err;
-
-       /* Wait until the previous operation is completed */
-       err = mv88e6xxx_wait(chip, addr, reg, BIT(15));
-       if (err)
-               return err;
-
-       /* Set the Update bit to trigger a write operation */
-       val = BIT(15) | update;
-
-       return mv88e6xxx_write(chip, addr, reg, val);
-}
-
 int mv88e6xxx_port_setup_mac(struct mv88e6xxx_chip *chip, int port, int link,
                             int speed, int duplex, int pause,
                             phy_interface_t mode)
 
 int mv88e6xxx_write(struct mv88e6xxx_chip *chip, int addr, int reg, u16 val);
 int mv88e6xxx_wait_mask(struct mv88e6xxx_chip *chip, int addr, int reg,
                        u16 mask, u16 val);
-int mv88e6xxx_update(struct mv88e6xxx_chip *chip, int addr, int reg,
-                    u16 update);
 int mv88e6xxx_wait_bit(struct mv88e6xxx_chip *chip, int addr, int reg,
                       int bit, int val);
-int mv88e6xxx_wait(struct mv88e6xxx_chip *chip, int addr, int reg, u16 mask);
 int mv88e6xxx_port_setup_mac(struct mv88e6xxx_chip *chip, int port, int link,
                             int speed, int duplex, int pause,
                             phy_interface_t mode);
 
        return mv88e6xxx_write(chip, chip->info->global2_addr, reg, val);
 }
 
-int mv88e6xxx_g2_update(struct mv88e6xxx_chip *chip, int reg, u16 update)
-{
-       return mv88e6xxx_update(chip, chip->info->global2_addr, reg, update);
-}
-
-int mv88e6xxx_g2_wait(struct mv88e6xxx_chip *chip, int reg, u16 mask)
-{
-       return mv88e6xxx_wait(chip, chip->info->global2_addr, reg, mask);
-}
-
 int mv88e6xxx_g2_wait_bit(struct mv88e6xxx_chip *chip, int reg, int
                          bit, int val)
 {
         * but bit 4 is reserved on older chips, so it is safe to use.
         */
 
-       return mv88e6xxx_g2_update(chip, MV88E6XXX_G2_DEVICE_MAPPING, val);
+       return mv88e6xxx_g2_write(chip, MV88E6XXX_G2_DEVICE_MAPPING,
+                                 MV88E6XXX_G2_DEVICE_MAPPING_UPDATE | val);
 }
 
 /* Offset 0x07: Trunk Mask Table register */
        if (hash)
                val |= MV88E6XXX_G2_TRUNK_MASK_HASH;
 
-       return mv88e6xxx_g2_update(chip, MV88E6XXX_G2_TRUNK_MASK, val);
+       return mv88e6xxx_g2_write(chip, MV88E6XXX_G2_TRUNK_MASK,
+                                 MV88E6XXX_G2_TRUNK_MASK_UPDATE | val);
 }
 
 /* Offset 0x08: Trunk Mapping Table register */
        const u16 port_mask = BIT(mv88e6xxx_num_ports(chip)) - 1;
        u16 val = (id << 11) | (map & port_mask);
 
-       return mv88e6xxx_g2_update(chip, MV88E6XXX_G2_TRUNK_MAPPING, val);
+       return mv88e6xxx_g2_write(chip, MV88E6XXX_G2_TRUNK_MAPPING,
+                                 MV88E6XXX_G2_TRUNK_MAPPING_UPDATE | val);
 }
 
 int mv88e6xxx_g2_trunk_clear(struct mv88e6xxx_chip *chip)
 {
        u16 val = (pointer << 8) | data;
 
-       return mv88e6xxx_g2_update(chip, MV88E6XXX_G2_SWITCH_MAC, val);
+       return mv88e6xxx_g2_write(chip, MV88E6XXX_G2_SWITCH_MAC,
+                                 MV88E6XXX_G2_SWITCH_MAC_UPDATE | val);
 }
 
 int mv88e6xxx_g2_set_switch_mac(struct mv88e6xxx_chip *chip, u8 *addr)
 {
        u16 val = (pointer << 8) | (data & 0x7);
 
-       return mv88e6xxx_g2_update(chip, MV88E6XXX_G2_PRIO_OVERRIDE, val);
+       return mv88e6xxx_g2_write(chip, MV88E6XXX_G2_PRIO_OVERRIDE,
+                                 MV88E6XXX_G2_PRIO_OVERRIDE_UPDATE | val);
 }
 
 int mv88e6xxx_g2_pot_clear(struct mv88e6xxx_chip *chip)
 
 static int mv88e6390_watchdog_setup(struct mv88e6xxx_chip *chip)
 {
-       return mv88e6xxx_g2_update(chip, MV88E6390_G2_WDOG_CTL,
-                                  MV88E6390_G2_WDOG_CTL_PTR_INT_ENABLE |
-                                  MV88E6390_G2_WDOG_CTL_CUT_THROUGH |
-                                  MV88E6390_G2_WDOG_CTL_QUEUE_CONTROLLER |
-                                  MV88E6390_G2_WDOG_CTL_EGRESS |
-                                  MV88E6390_G2_WDOG_CTL_FORCE_IRQ);
+       return mv88e6xxx_g2_write(chip, MV88E6390_G2_WDOG_CTL,
+                                 MV88E6390_G2_WDOG_CTL_UPDATE |
+                                 MV88E6390_G2_WDOG_CTL_PTR_INT_ENABLE |
+                                 MV88E6390_G2_WDOG_CTL_CUT_THROUGH |
+                                 MV88E6390_G2_WDOG_CTL_QUEUE_CONTROLLER |
+                                 MV88E6390_G2_WDOG_CTL_EGRESS |
+                                 MV88E6390_G2_WDOG_CTL_FORCE_IRQ);
 }
 
 static int mv88e6390_watchdog_action(struct mv88e6xxx_chip *chip, int irq)
 
 static void mv88e6390_watchdog_free(struct mv88e6xxx_chip *chip)
 {
-       mv88e6xxx_g2_update(chip, MV88E6390_G2_WDOG_CTL,
-                           MV88E6390_G2_WDOG_CTL_PTR_INT_ENABLE);
+       mv88e6xxx_g2_write(chip, MV88E6390_G2_WDOG_CTL,
+                          MV88E6390_G2_WDOG_CTL_UPDATE |
+                          MV88E6390_G2_WDOG_CTL_PTR_INT_ENABLE);
 }
 
 const struct mv88e6xxx_irq_ops mv88e6390_watchdog_ops = {
 
 
 int mv88e6xxx_g2_read(struct mv88e6xxx_chip *chip, int reg, u16 *val);
 int mv88e6xxx_g2_write(struct mv88e6xxx_chip *chip, int reg, u16 val);
-int mv88e6xxx_g2_update(struct mv88e6xxx_chip *chip, int reg, u16 update);
-int mv88e6xxx_g2_wait(struct mv88e6xxx_chip *chip, int reg, u16 mask);
 int mv88e6xxx_g2_wait_bit(struct mv88e6xxx_chip *chip, int reg,
                          int bit, int val);
 
        return -EOPNOTSUPP;
 }
 
-static inline int mv88e6xxx_g2_update(struct mv88e6xxx_chip *chip, int reg, u16 update)
-{
-       return -EOPNOTSUPP;
-}
-
-static inline int mv88e6xxx_g2_wait(struct mv88e6xxx_chip *chip, int reg, u16 mask)
-{
-       return -EOPNOTSUPP;
-}
-
 static inline int mv88e6xxx_g2_wait_bit(struct mv88e6xxx_chip *chip,
                                        int reg, int bit, int val)
 {