if (hu->serdev) {
                qcadev = serdev_device_get_drvdata(hu->serdev);
-               if (qca_is_wcn399x(qcadev->btsoc_type)) {
+
+               if (qca_is_wcn399x(qcadev->btsoc_type))
                        hu->init_speed = qcadev->init_speed;
+
+               if (qcadev->oper_speed)
                        hu->oper_speed = qcadev->oper_speed;
-               }
        }
 
        timer_setup(&qca->wake_retrans_timer, hci_ibs_wake_retrans_timeout, 0);
        serdev_device_set_drvdata(serdev, qcadev);
        device_property_read_string(&serdev->dev, "firmware-name",
                                         &qcadev->firmware_name);
+       device_property_read_u32(&serdev->dev, "max-speed",
+                                &qcadev->oper_speed);
+       if (!qcadev->oper_speed)
+               BT_DBG("UART will pick default operating speed");
+
        if (data && qca_is_wcn399x(data->soc_type)) {
                qcadev->btsoc_type = data->soc_type;
                qcadev->bt_power = devm_kzalloc(&serdev->dev,
                        return PTR_ERR(qcadev->susclk);
                }
 
-               device_property_read_u32(&serdev->dev, "max-speed",
-                                        &qcadev->oper_speed);
-               if (!qcadev->oper_speed)
-                       BT_DBG("UART will pick default operating speed");
-
                err = hci_uart_register_device(&qcadev->serdev_hu, &qca_proto);
                if (err) {
                        BT_ERR("wcn3990 serdev registration failed");