{
        struct sh_mobile_i2c_data *pd;
        struct i2c_adapter *adap;
-       struct resource *res;
        const struct sh_mobile_dt_config *config;
        int ret;
        u32 bus_speed;
        pd->dev = &dev->dev;
        platform_set_drvdata(dev, pd);
 
-       res = platform_get_resource(dev, IORESOURCE_MEM, 0);
-
-       pd->res = res;
-       pd->reg = devm_ioremap_resource(&dev->dev, res);
+       pd->reg = devm_platform_get_and_ioremap_resource(dev, 0, &pd->res);
        if (IS_ERR(pd->reg))
                return PTR_ERR(pd->reg);
 
        pd->clks_per_count = 1;
 
        /* Newer variants come with two new bits in ICIC */
-       if (resource_size(res) > 0x17)
+       if (resource_size(pd->res) > 0x17)
                pd->flags |= IIC_FLAG_HAS_ICIC67;
 
        pm_runtime_enable(&dev->dev);