regmap_write(priv->syscon, data->syscon_control0_off, reg);
 }
 
-static void armada_ap806_init(struct platform_device *pdev,
+static void armada_ap80x_init(struct platform_device *pdev,
                              struct armada_thermal_priv *priv)
 {
        struct armada_thermal_data *data = priv->data;
 };
 
 static const struct armada_thermal_data armada_ap806_data = {
-       .init = armada_ap806_init,
+       .init = armada_ap80x_init,
        .is_valid_bit = BIT(16),
        .temp_shift = 0,
        .temp_mask = 0x3ff,
        .cpu_nr = 4,
 };
 
+static const struct armada_thermal_data armada_ap807_data = {
+       .init = armada_ap80x_init,
+       .is_valid_bit = BIT(16),
+       .temp_shift = 0,
+       .temp_mask = 0x3ff,
+       .thresh_shift = 3,
+       .hyst_shift = 19,
+       .hyst_mask = 0x3,
+       .coef_b = -128900LL,
+       .coef_m = 394ULL,
+       .coef_div = 1,
+       .inverted = true,
+       .signed_sample = true,
+       .syscon_control0_off = 0x84,
+       .syscon_control1_off = 0x88,
+       .syscon_status_off = 0x8C,
+       .dfx_irq_cause_off = 0x108,
+       .dfx_irq_mask_off = 0x10C,
+       .dfx_overheat_irq = BIT(22),
+       .dfx_server_irq_mask_off = 0x104,
+       .dfx_server_irq_en = BIT(1),
+       .cpu_nr = 4,
+};
+
 static const struct armada_thermal_data armada_cp110_data = {
        .init = armada_cp110_init,
        .is_valid_bit = BIT(10),
                .compatible = "marvell,armada-ap806-thermal",
                .data       = &armada_ap806_data,
        },
+       {
+               .compatible = "marvell,armada-ap807-thermal",
+               .data       = &armada_ap807_data,
+       },
        {
                .compatible = "marvell,armada-cp110-thermal",
                .data       = &armada_cp110_data,