regulator: virtio: Add support for a regulator switch

Add support for a regulator switch with limited ops set.

Change-Id: I47735f1ec5ef98a418250cadf209f4b7ce362ab6
Signed-off-by: Ramachandran Venkataramani <quic_ramavenk@quicinc.com>
Signed-off-by: LADI RAM SAI <quic_lramsai@quicinc.com>
This commit is contained in:
LADI RAM SAI 2023-06-28 17:06:19 +05:30
parent 5dd3c6f0c3
commit 6e193c52c9

View File

@ -413,6 +413,12 @@ static const struct regulator_ops virtio_regulator_ops = {
.set_load = virtio_regulator_set_load,
};
static const struct regulator_ops virtio_regulator_switch_ops = {
.enable = virtio_regulator_enable,
.disable = virtio_regulator_disable,
.is_enabled = virtio_regulator_is_enabled,
};
static void virtio_regulator_isr(struct virtqueue *vq)
{
struct virtio_regulator *vregulator = vq->vdev->priv;
@ -504,9 +510,6 @@ static int virtio_regulator_init_reg(struct reg_virtio *reg)
if (init_data == NULL)
return -ENOMEM;
init_data->constraints.input_uV = init_data->constraints.max_uV;
init_data->constraints.valid_ops_mask |= REGULATOR_CHANGE_VOLTAGE;
if (init_data->constraints.min_uV == 0 &&
init_data->constraints.max_uV == 0)
reg->rdesc.n_voltages = 0;
@ -515,6 +518,13 @@ static int virtio_regulator_init_reg(struct reg_virtio *reg)
else
reg->rdesc.n_voltages = 2;
if (reg->rdesc.n_voltages == 0) {
reg->rdesc.ops = &virtio_regulator_switch_ops;
} else {
init_data->constraints.input_uV = init_data->constraints.max_uV;
init_data->constraints.valid_ops_mask |= REGULATOR_CHANGE_VOLTAGE;
}
reg_config.dev = dev;
reg_config.init_data = init_data;
reg_config.of_node = reg->of_node;