Re: [PATCH v3 2/2] mfd: Add Spreadtrum SC27xx series PMICs driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Hi Lee,

On 31 October 2017 at 23:28, Lee Jones <lee.jones@xxxxxxxxxx> wrote:
> On Thu, 26 Oct 2017, Baolin Wang wrote:
>
>> This patch adds support for Spreadtrum SC27xx series PMIC MFD core, and It
>> provides communication through the SPI interfaces. The SC27xx series PMICs
>> contains the following 6 major components:
>> - DCDCs
>> - LDOs
>> - Battery management system
>> - Audio codec
>> - User interface function, such as indicator, flash LED
>> - IC level function, such as power on/off, type-c
>>
>> Signed-off-by: Baolin Wang <baolin.wang@xxxxxxxxxxxxxx>
>> ---
>> Changes since v2:
>>  - Add more help information.
>>  - Define macros for irq base and irq number.
>>  - Use devm_mfd_add_devices() instead of mfd_add_devices(), which means
>>  we can remove sprd_pmic_remove().
>>  - Rename local variables in sprd_pmic_probe().
>>
>> Changes since v1:
>>  - Add more documentation to introduce Spreadtrum SC27xx series PMICs.
>>  - Modify compatile string property.
>>  - Modify reg property.
>>  - Remove redundant 'pmic' label.
>>  - Change 'should be' to 'must be' for cells properties.
>> ---
>>  drivers/mfd/Kconfig           |   16 +++
>>  drivers/mfd/Makefile          |    1 +
>>  drivers/mfd/sprd-sc27xx-spi.c |  258 +++++++++++++++++++++++++++++++++++++++++
>>  3 files changed, 275 insertions(+)
>>  create mode 100644 drivers/mfd/sprd-sc27xx-spi.c
>
> [...]
>
>> +static int sprd_pmic_spi_read(void *context,
>> +                           const void *reg, size_t reg_size,
>> +                           void *val, size_t val_size)
>> +{
>> +     struct device *dev = context;
>> +     struct spi_device *spi = to_spi_device(dev);
>> +     u32 rx_buf[2] = { 0 };
>> +     int ret;
>> +
>> +     /* Now we only support one PMIC register to read every time. */
>> +     if (reg_size != sizeof(u32) || val_size != sizeof(u32))
>> +             return -EINVAL;
>> +
>> +     rx_buf[0] = *(u32 *)reg;
>
> I still don't like this.  It's uuuuuugly!
>
> At the very least, please use an interim variable using a nomenclature
> which describes what it is you're trying to achieve.  For instance:
>
>   u32 *addr = reg;
>
>   rx_buf[0] = addr[0];
>
> Or better still ...
>
>   /* Copy address to read from into first element of SPI buffer */
>   memcpy(rx_buf, reg, sizeof(u32));

OK. I will change it like you suggested in next version. Thanks.

-- 
Baolin.wang
Best Regards
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux