[PATCH 2/3] drivers: gpio: siul2-s32g2: add NXP S32G2/S32G3 SoCs support

Andrei Stefanescu andrei.stefanescu at oss.nxp.com
Fri Sep 6 01:43:31 PDT 2024


Hi Krzysztof,


>> +static struct regmap *common_regmap_init(struct platform_device *pdev,
>> +					 struct regmap_config *conf,
>> +					 const char *name)
>> +{
>> +	struct device *dev = &pdev->dev;
>> +	struct resource *res;
>> +	resource_size_t size;
>> +	void __iomem *base;
>> +
>> +	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, name);
>> +	if (!res) {
>> +		dev_err(&pdev->dev, "Failed to get MEM resource: %s\n", name);
>> +		return ERR_PTR(-EINVAL);
>> +	}
>> +
>> +	base = devm_ioremap_resource(dev, res);
> 
> There is a wrapper for both calls above, so use it.

I am not sure I can change this because I also use the `resource_size`
call below in order to initialize the regmap_config. 
Unfortunately, `devm_platform_ioremap_resource_byname` doesn't also retrieve
the resource via a pointer.

I saw the `devm_platform_get_and_ioremap_resource` function but that one
retrieves the resource based on the index. I would like to keep identifying
the resource by its name instead of its index.

Would you agree to keep the existing implementation in this case?

> 
>> +	if (IS_ERR(base))
>> +		return ERR_PTR(-ENOMEM);
>> +
>> +	size = resource_size(res);
>> +	conf->val_bits = conf->reg_stride * 8;
>> +	conf->max_register = size - conf->reg_stride;
>> +	conf->name = name;
>> +	conf->use_raw_spinlock = true;
>> +
>> +	if (conf->cache_type != REGCACHE_NONE)
>> +		conf->num_reg_defaults_raw = size / conf->reg_stride;
>> +
>> +	return devm_regmap_init_mmio(dev, base, conf);

Best regards,
Andrei



More information about the linux-arm-kernel mailing list