Commit 45182746 authored by Krzysztof Hałasa's avatar Krzysztof Hałasa Committed by Mauro Carvalho Chehab
Browse files

[media] SOLO6x10: don't do DMA from stack in solo_dma_vin_region()



[m.chehab@samsung.com: Fix CodingStyle: don't use 2 statements on just one line]

Signed-off-by: default avatarKrzysztof Ha?asa <khalasa@piap.pl>
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
parent b5c2e0ab
Loading
Loading
Loading
Loading
+17 −8
Original line number Diff line number Diff line
@@ -176,18 +176,27 @@ static void solo_vout_config(struct solo_dev *solo_dev)
static int solo_dma_vin_region(struct solo_dev *solo_dev, u32 off,
			       u16 val, int reg_size)
{
	u16 buf[64];
	int i;
	int ret = 0;
	u16 *buf;
	const int n = 64, size = n * sizeof(*buf);
	int i, ret = 0;

	buf = kmalloc(size, GFP_KERNEL);
	if (!buf)
		return -ENOMEM;

	for (i = 0; i < sizeof(buf) >> 1; i++)
	for (i = 0; i < n; i++)
		buf[i] = cpu_to_le16(val);

	for (i = 0; i < reg_size; i += sizeof(buf))
		ret |= solo_p2m_dma(solo_dev, 1, buf,
	for (i = 0; i < reg_size; i += size) {
		ret = solo_p2m_dma(solo_dev, 1, buf,
				   SOLO_MOTION_EXT_ADDR(solo_dev) + off + i,
				    sizeof(buf), 0, 0);
				   size, 0, 0);

		if (ret)
			break;
	}

	kfree(buf);
	return ret;
}