Commit 67b0f5e0 authored by Amit Kucheria's avatar Amit Kucheria Committed by Eduardo Valentin
Browse files

thermal: tsens: Rename map field in order to add a second address map



The TSENS driver currently only uses a limited set of registers from the TM
address space. So it was ok to map just that set of registers and call it
"map".

We'd now like to map a second set: SROT registers to introduce new
functionality. Rename the "map" field to a more appropriate "tm_map".

The 8960 doesn't have a clear split between TM and SROT registers. To avoid
complicating the data structure, it will switchover to using tm_map for its
maps.

There is no functional change with this patch.

Signed-off-by: default avatarAmit Kucheria <amit.kucheria@linaro.org>
Reviewed-by: default avatarMatthias Kaehlcke <mka@chromium.org>
Reviewed-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: default avatarEduardo Valentin <edubezval@gmail.com>
parent caac52bc
Loading
Loading
Loading
Loading
+15 −15
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ static int suspend_8960(struct tsens_device *tmdev)
{
	int ret;
	unsigned int mask;
	struct regmap *map = tmdev->map;
	struct regmap *map = tmdev->tm_map;

	ret = regmap_read(map, THRESHOLD_ADDR, &tmdev->ctx.threshold);
	if (ret)
@@ -85,7 +85,7 @@ static int suspend_8960(struct tsens_device *tmdev)
static int resume_8960(struct tsens_device *tmdev)
{
	int ret;
	struct regmap *map = tmdev->map;
	struct regmap *map = tmdev->tm_map;

	ret = regmap_update_bits(map, CNTL_ADDR, SW_RST, SW_RST);
	if (ret)
@@ -117,12 +117,12 @@ static int enable_8960(struct tsens_device *tmdev, int id)
	int ret;
	u32 reg, mask;

	ret = regmap_read(tmdev->map, CNTL_ADDR, &reg);
	ret = regmap_read(tmdev->tm_map, CNTL_ADDR, &reg);
	if (ret)
		return ret;

	mask = BIT(id + SENSOR0_SHIFT);
	ret = regmap_write(tmdev->map, CNTL_ADDR, reg | SW_RST);
	ret = regmap_write(tmdev->tm_map, CNTL_ADDR, reg | SW_RST);
	if (ret)
		return ret;

@@ -131,7 +131,7 @@ static int enable_8960(struct tsens_device *tmdev, int id)
	else
		reg |= mask | SLP_CLK_ENA_8660 | EN;

	ret = regmap_write(tmdev->map, CNTL_ADDR, reg);
	ret = regmap_write(tmdev->tm_map, CNTL_ADDR, reg);
	if (ret)
		return ret;

@@ -148,7 +148,7 @@ static void disable_8960(struct tsens_device *tmdev)
	mask <<= SENSOR0_SHIFT;
	mask |= EN;

	ret = regmap_read(tmdev->map, CNTL_ADDR, &reg_cntl);
	ret = regmap_read(tmdev->tm_map, CNTL_ADDR, &reg_cntl);
	if (ret)
		return;

@@ -159,7 +159,7 @@ static void disable_8960(struct tsens_device *tmdev)
	else
		reg_cntl &= ~SLP_CLK_ENA_8660;

	regmap_write(tmdev->map, CNTL_ADDR, reg_cntl);
	regmap_write(tmdev->tm_map, CNTL_ADDR, reg_cntl);
}

static int init_8960(struct tsens_device *tmdev)
@@ -167,8 +167,8 @@ static int init_8960(struct tsens_device *tmdev)
	int ret, i;
	u32 reg_cntl;

	tmdev->map = dev_get_regmap(tmdev->dev, NULL);
	if (!tmdev->map)
	tmdev->tm_map = dev_get_regmap(tmdev->dev, NULL);
	if (!tmdev->tm_map)
		return -ENODEV;

	/*
@@ -184,14 +184,14 @@ static int init_8960(struct tsens_device *tmdev)
	}

	reg_cntl = SW_RST;
	ret = regmap_update_bits(tmdev->map, CNTL_ADDR, SW_RST, reg_cntl);
	ret = regmap_update_bits(tmdev->tm_map, CNTL_ADDR, SW_RST, reg_cntl);
	if (ret)
		return ret;

	if (tmdev->num_sensors > 1) {
		reg_cntl |= SLP_CLK_ENA | (MEASURE_PERIOD << 18);
		reg_cntl &= ~SW_RST;
		ret = regmap_update_bits(tmdev->map, CONFIG_ADDR,
		ret = regmap_update_bits(tmdev->tm_map, CONFIG_ADDR,
					 CONFIG_MASK, CONFIG);
	} else {
		reg_cntl |= SLP_CLK_ENA_8660 | (MEASURE_PERIOD << 16);
@@ -200,12 +200,12 @@ static int init_8960(struct tsens_device *tmdev)
	}

	reg_cntl |= GENMASK(tmdev->num_sensors - 1, 0) << SENSOR0_SHIFT;
	ret = regmap_write(tmdev->map, CNTL_ADDR, reg_cntl);
	ret = regmap_write(tmdev->tm_map, CNTL_ADDR, reg_cntl);
	if (ret)
		return ret;

	reg_cntl |= EN;
	ret = regmap_write(tmdev->map, CNTL_ADDR, reg_cntl);
	ret = regmap_write(tmdev->tm_map, CNTL_ADDR, reg_cntl);
	if (ret)
		return ret;

@@ -252,12 +252,12 @@ static int get_temp_8960(struct tsens_device *tmdev, int id, int *temp)

	timeout = jiffies + usecs_to_jiffies(TIMEOUT_US);
	do {
		ret = regmap_read(tmdev->map, INT_STATUS_ADDR, &trdy);
		ret = regmap_read(tmdev->tm_map, INT_STATUS_ADDR, &trdy);
		if (ret)
			return ret;
		if (!(trdy & TRDY_MASK))
			continue;
		ret = regmap_read(tmdev->map, s->status, &code);
		ret = regmap_read(tmdev->tm_map, s->status, &code);
		if (ret)
			return ret;
		*temp = code_to_mdegC(code, s);
+8 −9
Original line number Diff line number Diff line
@@ -99,8 +99,7 @@ int get_temp_common(struct tsens_device *tmdev, int id, int *temp)
	int last_temp = 0, ret;

	status_reg = tmdev->tm_offset + STATUS_OFFSET + s->hw_id * SN_ADDR_OFFSET;
	ret = regmap_read(tmdev->map, status_reg, &code);

	ret = regmap_read(tmdev->tm_map, status_reg, &code);
	if (ret)
		return ret;
	last_temp = code & SN_ST_TEMP_MASK;
@@ -118,7 +117,7 @@ static const struct regmap_config tsens_config = {

int __init init_common(struct tsens_device *tmdev)
{
	void __iomem *base;
	void __iomem *tm_base;
	struct resource *res;
	struct platform_device *op = of_find_device_by_node(tmdev->dev->of_node);

@@ -134,13 +133,13 @@ int __init init_common(struct tsens_device *tmdev)
	}

	res = platform_get_resource(op, IORESOURCE_MEM, 0);
	base = devm_ioremap_resource(&op->dev, res);
	if (IS_ERR(base))
		return PTR_ERR(base);
	tm_base = devm_ioremap_resource(&op->dev, res);
	if (IS_ERR(tm_base))
		return PTR_ERR(tm_base);

	tmdev->map = devm_regmap_init_mmio(tmdev->dev, base, &tsens_config);
	if (IS_ERR(tmdev->map))
		return PTR_ERR(tmdev->map);
	tmdev->tm_map = devm_regmap_init_mmio(tmdev->dev, tm_base, &tsens_config);
	if (IS_ERR(tmdev->tm_map))
		return PTR_ERR(tmdev->tm_map);

	return 0;
}
+3 −3
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ static int get_temp_tsens_v2(struct tsens_device *tmdev, int id, int *temp)
	int ret;

	status_reg = tmdev->tm_offset + STATUS_OFFSET + s->hw_id * 4;
	ret = regmap_read(tmdev->map, status_reg, &code);
	ret = regmap_read(tmdev->tm_map, status_reg, &code);
	if (ret)
		return ret;
	last_temp = code & LAST_TEMP_MASK;
@@ -29,7 +29,7 @@ static int get_temp_tsens_v2(struct tsens_device *tmdev, int id, int *temp)
		goto done;

	/* Try a second time */
	ret = regmap_read(tmdev->map, status_reg, &code);
	ret = regmap_read(tmdev->tm_map, status_reg, &code);
	if (ret)
		return ret;
	if (code & STATUS_VALID_BIT) {
@@ -40,7 +40,7 @@ static int get_temp_tsens_v2(struct tsens_device *tmdev, int id, int *temp)
	}

	/* Try a third/last time */
	ret = regmap_read(tmdev->map, status_reg, &code);
	ret = regmap_read(tmdev->tm_map, status_reg, &code);
	if (ret)
		return ret;
	if (code & STATUS_VALID_BIT) {
+1 −1
Original line number Diff line number Diff line
@@ -69,7 +69,7 @@ struct tsens_context {
struct tsens_device {
	struct device			*dev;
	u32				num_sensors;
	struct regmap			*map;
	struct regmap			*tm_map;
	u32				tm_offset;
	struct tsens_context		ctx;
	const struct tsens_ops		*ops;