.frac_bits = 8,
 };
 
+static const struct bcm2835_clock_data bcm2835_clock_pwm_data = {
+       .name = "pwm",
+       .num_mux_parents = ARRAY_SIZE(bcm2835_clock_per_parents),
+       .parents = bcm2835_clock_per_parents,
+       .ctl_reg = CM_PWMCTL,
+       .div_reg = CM_PWMDIV,
+       .int_bits = 12,
+       .frac_bits = 12,
+};
+
 struct bcm2835_pll {
        struct clk_hw hw;
        struct bcm2835_cprman *cprman;
                                  cprman->regs + CM_PERIICTL, CM_GATE_BIT,
                                  0, &cprman->regs_lock);
 
+       clks[BCM2835_CLOCK_PWM] =
+               bcm2835_register_clock(cprman, &bcm2835_clock_pwm_data);
+
        return of_clk_add_provider(dev->of_node, of_clk_src_onecell_get,
                                   &cprman->onecell);
 }
 
 #define BCM2835_CLOCK_TSENS            27
 #define BCM2835_CLOCK_EMMC             28
 #define BCM2835_CLOCK_PERI_IMAGE       29
+#define BCM2835_CLOCK_PWM              30
 
-#define BCM2835_CLOCK_COUNT            30
+#define BCM2835_CLOCK_COUNT            31