.recv = st33zp24_i2c_recv,
 };
 
-static int st33zp24_i2c_acpi_request_resources(struct st33zp24_i2c_phy *phy)
+static int st33zp24_i2c_acpi_request_resources(struct i2c_client *client)
 {
-       struct i2c_client *client = phy->client;
+       struct st33zp24_i2c_phy *phy = i2c_get_clientdata(client);
        const struct acpi_device_id *id;
        struct gpio_desc *gpiod_lpcpd;
        struct device *dev;
        return 0;
 }
 
-static int st33zp24_i2c_of_request_resources(struct st33zp24_i2c_phy *phy)
+static int st33zp24_i2c_of_request_resources(struct i2c_client *client)
 {
+       struct st33zp24_i2c_phy *phy = i2c_get_clientdata(client);
        struct device_node *pp;
-       struct i2c_client *client = phy->client;
        int gpio;
        int ret;
 
        return 0;
 }
 
-static int st33zp24_i2c_request_resources(struct i2c_client *client,
-                                         struct st33zp24_i2c_phy *phy)
+static int st33zp24_i2c_request_resources(struct i2c_client *client)
 {
        struct st33zp24_platform_data *pdata;
+       struct st33zp24_i2c_phy *phy = i2c_get_clientdata(client);
        int ret;
 
        pdata = client->dev.platform_data;
                return -ENOMEM;
 
        phy->client = client;
+
+       i2c_set_clientdata(client, phy);
+
        pdata = client->dev.platform_data;
        if (!pdata && client->dev.of_node) {
-               ret = st33zp24_i2c_of_request_resources(phy);
+               ret = st33zp24_i2c_of_request_resources(client);
                if (ret)
                        return ret;
        } else if (pdata) {
-               ret = st33zp24_i2c_request_resources(client, phy);
+               ret = st33zp24_i2c_request_resources(client);
                if (ret)
                        return ret;
        } else if (ACPI_HANDLE(&client->dev)) {
-               ret = st33zp24_i2c_acpi_request_resources(phy);
+               ret = st33zp24_i2c_acpi_request_resources(client);
                if (ret)
                        return ret;
        }