[PATCH v3 2/2] regulator: mt6311: Add support for mt6311 regulator
Henry Chen
HenryC.Chen at mediatek.com
Thu Jul 23 04:04:05 PDT 2015
On Thu, 2015-07-23 at 11:07 +0200, Javier Martinez Canillas wrote:
> > +
> > + if (ret < 0)
> > + dev_err(&i2c->dev, "Failed to initialize regulator: %d\n", ret);
> > +
>
> I don't think this is necessary, you are already adding logs for all
> the error conditions.
Yes, I will remove it.
>
> > + return ret;
> > +}
> > +
> > +static const struct i2c_device_id mt6311_i2c_id[] = {
> > + {"mt6311", 0},
> > + {},
> > +};
> > +MODULE_DEVICE_TABLE(i2c, mt6311_i2c_id);
> > +
> > +#ifdef CONFIG_OF
> > +static const struct of_device_id mt6311_dt_ids[] = {
> > + { .compatible = "mediatek,mt6311-regulator",
> > + .data = &mt6311_i2c_id[0] },
> > + {},
> > +};
> > +MODULE_DEVICE_TABLE(of, mt6311_dt_ids);
> > +#endif
> > +
> > +static struct i2c_driver mt6311_regulator_driver = {
> > + .driver = {
> > + .name = "mt6311",
> > + .owner = THIS_MODULE,
> > + .of_match_table = of_match_ptr(mt6311_dt_ids),
>
> of_match_ptr() is NULL when CONFIG_OF is not defined so you don't need
> the additional #ifdef
> CONFIG_OF around mt6311_dt_ids.
If CONFIG_OF is not defined and without #ifdef CONFIG_OF around
mt6311_dt_ids, it will allocate a struct mt6311_dt_ids but no one used
on here, right?
Henry
> > + },
> > + .probe = mt6311_i2c_probe,
> > + .id_table = mt6311_i2c_id,
> > +};
> > +
> > +module_i2c_driver(mt6311_regulator_driver);
> > +
> > +MODULE_AUTHOR("Henry Chen <henryc.chen at mediatek.com>");
> > +MODULE_DESCRIPTION("Regulator device driver for Mediatek MT6311");
> > +MODULE_LICENSE("GPL v2");
> > diff --git a/drivers/regulator/mt6311-regulator.h b/drivers/regulator/mt6311-regulator.h
> > new file mode 100644
> > index 0000000..5218db4
> > --- /dev/null
> > +++ b/drivers/regulator/mt6311-regulator.h
> > @@ -0,0 +1,65 @@
> > +/*
> > + * Copyright (c) 2015 MediaTek Inc.
> > + * Author: Henry Chen <henryc.chen at mediatek.com>
> > + *
> > + * This program is free software; you can redistribute it and/or modify
> > + * it under the terms of the GNU General Public License version 2 as
> > + * published by the Free Software Foundation.
> > + *
> > + * This program is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> > + * GNU General Public License for more details.
> > + */
> > +
> > +#ifndef __MT6311_REGULATOR_H__
> > +#define __MT6311_REGULATOR_H__
> > +
> > +#define MT6311_SWCID 0x01
> > +
> > +#define MT6311_TOP_INT_CON 0x18
> > +#define MT6311_TOP_INT_MON 0x19
> > +
> > +#define MT6311_VDVFS11_CON0 0x87
> > +#define MT6311_VDVFS11_CON7 0x88
> > +#define MT6311_VDVFS11_CON8 0x89
> > +#define MT6311_VDVFS11_CON9 0x8A
> > +#define MT6311_VDVFS11_CON10 0x8B
> > +#define MT6311_VDVFS11_CON11 0x8C
> > +#define MT6311_VDVFS11_CON12 0x8D
> > +#define MT6311_VDVFS11_CON13 0x8E
> > +#define MT6311_VDVFS11_CON14 0x8F
> > +#define MT6311_VDVFS11_CON15 0x90
> > +#define MT6311_VDVFS11_CON16 0x91
> > +#define MT6311_VDVFS11_CON17 0x92
> > +#define MT6311_VDVFS11_CON18 0x93
> > +#define MT6311_VDVFS11_CON19 0x94
> > +
> > +#define MT6311_LDO_CON0 0xCC
> > +#define MT6311_LDO_OCFB0 0xCD
> > +#define MT6311_LDO_CON2 0xCE
> > +#define MT6311_LDO_CON3 0xCF
> > +#define MT6311_LDO_CON4 0xD0
> > +#define MT6311_FQMTR_CON0 0xD1
> > +#define MT6311_FQMTR_CON1 0xD2
> > +#define MT6311_FQMTR_CON2 0xD3
> > +#define MT6311_FQMTR_CON3 0xD4
> > +#define MT6311_FQMTR_CON4 0xD5
> > +
> > +#define MT6311_PMIC_RG_INT_POL_MASK 0x1
> > +#define MT6311_PMIC_RG_INT_EN_MASK 0x2
> > +#define MT6311_PMIC_RG_BUCK_OC_INT_STATUS_MASK 0x10
> > +
> > +#define MT6311_PMIC_VDVFS11_EN_CTRL_MASK 0x1
> > +#define MT6311_PMIC_VDVFS11_VOSEL_CTRL_MASK 0x2
> > +#define MT6311_PMIC_VDVFS11_EN_SEL_MASK 0x3
> > +#define MT6311_PMIC_VDVFS11_VOSEL_SEL_MASK 0xc
> > +#define MT6311_PMIC_VDVFS11_EN_MASK 0x1
> > +#define MT6311_PMIC_VDVFS11_VOSEL_MASK 0x7F
> > +#define MT6311_PMIC_VDVFS11_VOSEL_ON_MASK 0x7F
> > +#define MT6311_PMIC_VDVFS11_VOSEL_SLEEP_MASK 0x7F
> > +#define MT6311_PMIC_NI_VDVFS11_VOSEL_MASK 0x7F
> > +
> > +#define MT6311_PMIC_RG_VBIASN_EN_MASK 0x1
> > +
> > +#endif
> > diff --git a/include/linux/regulator/mt6311.h b/include/linux/regulator/mt6311.h
> > new file mode 100644
> > index 0000000..8473259
> > --- /dev/null
> > +++ b/include/linux/regulator/mt6311.h
> > @@ -0,0 +1,29 @@
> > +/*
> > + * Copyright (c) 2015 MediaTek Inc.
> > + * Author: Henry Chen <henryc.chen at mediatek.com>
> > + *
> > + * This program is free software; you can redistribute it and/or modify
> > + * it under the terms of the GNU General Public License version 2 as
> > + * published by the Free Software Foundation.
> > + *
> > + * This program is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> > + * GNU General Public License for more details.
> > + */
> > +
> > +#ifndef __LINUX_REGULATOR_MT6311_H
> > +#define __LINUX_REGULATOR_MT6311_H
> > +
> > +#define MT6311_MAX_REGULATORS 2
> > +
> > +enum {
> > + MT6311_ID_VDVFS = 0,
> > + MT6311_ID_VBIASN,
> > +};
> > +
> > +#define MT6311_E1_CID_CODE 0x10
> > +#define MT6311_E2_CID_CODE 0x20
> > +#define MT6311_E3_CID_CODE 0x30
> > +
> > +#endif /* __LINUX_REGULATOR_MT6311_H */
> > --
>
> Besides those comments, it looks good to me now.
>
> Reviewed-by: Javier Martinez Canillas <javier at osg.samsung.com>
>
> Best regards,
> Javier
More information about the linux-arm-kernel
mailing list