obj-$(CONFIG_NET_DSA_MV88E6XXX) += mv88e6xxx.o
 mv88e6xxx-objs := chip.o
 mv88e6xxx-objs += global1.o
+mv88e6xxx-objs += global1_atu.o
 mv88e6xxx-$(CONFIG_NET_DSA_MV88E6XXX_GLOBAL2) += global2.o
 mv88e6xxx-objs += port.o
 
        return 0;
 }
 
-static int mv88e6xxx_g1_set_age_time(struct mv88e6xxx_chip *chip,
-                                    unsigned int msecs)
-{
-       const unsigned int coeff = chip->info->age_time_coeff;
-       const unsigned int min = 0x01 * coeff;
-       const unsigned int max = 0xff * coeff;
-       u8 age_time;
-       u16 val;
-       int err;
-
-       if (msecs < min || msecs > max)
-               return -ERANGE;
-
-       /* Round to nearest multiple of coeff */
-       age_time = (msecs + coeff / 2) / coeff;
-
-       err = mv88e6xxx_g1_read(chip, GLOBAL_ATU_CONTROL, &val);
-       if (err)
-               return err;
-
-       /* AgeTime is 11:4 bits */
-       val &= ~0xff0;
-       val |= age_time << 4;
-
-       return mv88e6xxx_g1_write(chip, GLOBAL_ATU_CONTROL, val);
-}
-
 static int mv88e6xxx_set_ageing_time(struct dsa_switch *ds,
                                     unsigned int ageing_time)
 {
        int err;
 
        mutex_lock(&chip->reg_lock);
-       err = mv88e6xxx_g1_set_age_time(chip, ageing_time);
+       err = mv88e6xxx_g1_atu_set_age_time(chip, ageing_time);
        mutex_unlock(&chip->reg_lock);
 
        return err;
        if (err)
                return err;
 
-       err = mv88e6xxx_g1_set_age_time(chip, 300000);
+       err = mv88e6xxx_g1_atu_set_age_time(chip, 300000);
        if (err)
                return err;
 
 
 int mv88e6390_g1_set_cpu_port(struct mv88e6xxx_chip *chip, int port);
 int mv88e6390_g1_mgmt_rsvd2cpu(struct mv88e6xxx_chip *chip);
 
+int mv88e6xxx_g1_atu_set_age_time(struct mv88e6xxx_chip *chip,
+                                 unsigned int msecs);
+
 #endif /* _MV88E6XXX_GLOBAL1_H */
 
--- /dev/null
+/*
+ * Marvell 88E6xxx Address Translation Unit (ATU) support
+ *
+ * Copyright (c) 2008 Marvell Semiconductor
+ * Copyright (c) 2017 Savoir-faire Linux, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#include "mv88e6xxx.h"
+#include "global1.h"
+
+/* Offset 0x0A: ATU Control Register */
+
+int mv88e6xxx_g1_atu_set_age_time(struct mv88e6xxx_chip *chip,
+                                 unsigned int msecs)
+{
+       const unsigned int coeff = chip->info->age_time_coeff;
+       const unsigned int min = 0x01 * coeff;
+       const unsigned int max = 0xff * coeff;
+       u8 age_time;
+       u16 val;
+       int err;
+
+       if (msecs < min || msecs > max)
+               return -ERANGE;
+
+       /* Round to nearest multiple of coeff */
+       age_time = (msecs + coeff / 2) / coeff;
+
+       err = mv88e6xxx_g1_read(chip, GLOBAL_ATU_CONTROL, &val);
+       if (err)
+               return err;
+
+       /* AgeTime is 11:4 bits */
+       val &= ~0xff0;
+       val |= age_time << 4;
+
+       return mv88e6xxx_g1_write(chip, GLOBAL_ATU_CONTROL, val);
+}