lkml.org 
[lkml]   [2021]   [Oct]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 10/12] platform/x86: int3472: Pass tps68470_clk_platform_data to the tps68470-regulator MFD-cell
    Date
    Pass tps68470_clk_platform_data to the tps68470-clk MFD-cell,
    so that sensors which use the TPS68470 can find their clock.

    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    ---
    drivers/platform/x86/intel/int3472/tps68470.c | 28 +++++++++++++------
    1 file changed, 20 insertions(+), 8 deletions(-)

    diff --git a/drivers/platform/x86/intel/int3472/tps68470.c b/drivers/platform/x86/intel/int3472/tps68470.c
    index e95b0f50b384..bd01acb177c4 100644
    --- a/drivers/platform/x86/intel/int3472/tps68470.c
    +++ b/drivers/platform/x86/intel/int3472/tps68470.c
    @@ -5,6 +5,7 @@
    #include <linux/mfd/core.h>
    #include <linux/mfd/tps68470.h>
    #include <linux/platform_device.h>
    +#include <linux/platform_data/tps68470.h>
    #include <linux/regmap.h>

    #include "common.h"
    @@ -17,12 +18,6 @@ static const struct mfd_cell tps68470_cros[] = {
    { .name = "tps68470_pmic_opregion" },
    };

    -static const struct mfd_cell tps68470_win[] = {
    - { .name = "tps68470-gpio" },
    - { .name = "tps68470-clk" },
    - { .name = "tps68470-regulator" },
    -};
    -
    static const struct regmap_config tps68470_regmap_config = {
    .reg_bits = 8,
    .val_bits = 8,
    @@ -105,10 +100,17 @@ static int skl_int3472_tps68470_calc_type(struct acpi_device *adev)
    static int skl_int3472_tps68470_probe(struct i2c_client *client)
    {
    struct acpi_device *adev = ACPI_COMPANION(&client->dev);
    + struct tps68470_clk_platform_data clk_pdata = {};
    + struct mfd_cell *cells;
    struct regmap *regmap;
    int device_type;
    int ret;

    + ret = skl_int3472_get_sensor_adev_and_name(&client->dev, NULL,
    + &clk_pdata.consumer_dev_name);
    + if (ret)
    + return ret;
    +
    regmap = devm_regmap_init_i2c(client, &tps68470_regmap_config);
    if (IS_ERR(regmap)) {
    dev_err(&client->dev, "Failed to create regmap: %ld\n", PTR_ERR(regmap));
    @@ -126,9 +128,19 @@ static int skl_int3472_tps68470_probe(struct i2c_client *client)
    device_type = skl_int3472_tps68470_calc_type(adev);
    switch (device_type) {
    case DESIGNED_FOR_WINDOWS:
    - ret = devm_mfd_add_devices(&client->dev, PLATFORM_DEVID_NONE,
    - tps68470_win, ARRAY_SIZE(tps68470_win),
    + cells = kcalloc(3, sizeof(*cells), GFP_KERNEL);
    + if (!cells)
    + return -ENOMEM;
    +
    + cells[0].name = "tps68470-gpio";
    + cells[1].name = "tps68470-clk";
    + cells[1].platform_data = &clk_pdata;
    + cells[1].pdata_size = sizeof(clk_pdata);
    + cells[2].name = "tps68470-regulator";
    +
    + ret = devm_mfd_add_devices(&client->dev, PLATFORM_DEVID_NONE, cells, 3,
    NULL, 0, NULL);
    + kfree(cells);
    break;
    case DESIGNED_FOR_CHROMEOS:
    ret = devm_mfd_add_devices(&client->dev, PLATFORM_DEVID_NONE,
    --
    2.31.1
    \
     
     \ /
      Last update: 2021-10-08 18:26    [W:4.056 / U:0.184 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site