Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7aac9849 authored by Neil Armstrong's avatar Neil Armstrong Committed by Mauro Carvalho Chehab
Browse files

media: platform: ao-cec-g12a: remove spin_lock_irqsave() locking in meson_ao_cec_g12a_read/write



Since locking is handled by regmap, the spin_lock_irqsave() in the
meson_ao_cec_g12a_read/write() regmap callbacks is not needed.

Fixes: b7778c46 ("media: platform: meson: Add Amlogic Meson G12A AO CEC Controller driver")

Signed-off-by: default avatarNeil Armstrong <narmstrong@baylibre.com>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent 2ac36fd5
Loading
Loading
Loading
Loading
+3 −17
Original line number Diff line number Diff line
@@ -365,28 +365,22 @@ static int meson_ao_cec_g12a_read(void *context, unsigned int addr,
{
	struct meson_ao_cec_g12a_device *ao_cec = context;
	u32 reg = FIELD_PREP(CECB_RW_ADDR, addr);
	unsigned long flags;
	int ret = 0;

	spin_lock_irqsave(&ao_cec->cec_reg_lock, flags);

	ret = regmap_write(ao_cec->regmap, CECB_RW_REG, reg);
	if (ret)
		goto read_out;
		return ret;

	ret = regmap_read_poll_timeout(ao_cec->regmap, CECB_RW_REG, reg,
				       !(reg & CECB_RW_BUS_BUSY),
				       5, 1000);
	if (ret)
		goto read_out;
		return ret;

	ret = regmap_read(ao_cec->regmap, CECB_RW_REG, &reg);

	*data = FIELD_GET(CECB_RW_RD_DATA, reg);

read_out:
	spin_unlock_irqrestore(&ao_cec->cec_reg_lock, flags);

	return ret;
}

@@ -394,19 +388,11 @@ static int meson_ao_cec_g12a_write(void *context, unsigned int addr,
				   unsigned int data)
{
	struct meson_ao_cec_g12a_device *ao_cec = context;
	unsigned long flags;
	u32 reg = FIELD_PREP(CECB_RW_ADDR, addr) |
		  FIELD_PREP(CECB_RW_WR_DATA, data) |
		  CECB_RW_WRITE_EN;
	int ret = 0;

	spin_lock_irqsave(&ao_cec->cec_reg_lock, flags);

	ret = regmap_write(ao_cec->regmap, CECB_RW_REG, reg);

	spin_unlock_irqrestore(&ao_cec->cec_reg_lock, flags);

	return ret;
	return regmap_write(ao_cec->regmap, CECB_RW_REG, reg);
}

static const struct regmap_config meson_ao_cec_g12a_cec_regmap_conf = {