struct raspberrypi_clk_variant {
        bool            export;
        char            *clkdev;
+       unsigned long   min_rate;
 };
 
 static struct raspberrypi_clk_variant
        },
        [RPI_FIRMWARE_M2MC_CLK_ID] = {
                .export = true,
+
+               /*
+                * If we boot without any cable connected to any of the
+                * HDMI connector, the firmware will skip the HSM
+                * initialization and leave it with a rate of 0,
+                * resulting in a bus lockup when we're accessing the
+                * registers even if it's enabled.
+                *
+                * Let's put a sensible default so that we don't end up
+                * in this situation.
+                */
+               .min_rate = 120000000,
        },
        [RPI_FIRMWARE_V3D_CLK_ID] = {
                .export = true,
                }
        }
 
+       if (variant->min_rate) {
+               unsigned long rate;
+
+               clk_hw_set_rate_range(&data->hw, variant->min_rate, max_rate);
+
+               rate = raspberrypi_fw_get_rate(&data->hw, 0);
+               if (rate < variant->min_rate) {
+                       ret = raspberrypi_fw_set_rate(&data->hw, variant->min_rate, 0);
+                       if (ret)
+                               return ERR_PTR(ret);
+               }
+       }
+
        return &data->hw;
 }