vbi: use dma alloc instead reserved memory [1/1]

PD#SWPL-4510

Problem:
do not use reserved memory

Solution:
use dma_alloc_coherent instead reserved memory

Verify:
x301

Change-Id: I6498772809c8f1f48a7d4dd24aa18433eff3e618
Signed-off-by: Nian Jing <nian.jing@amlogic.com>
This commit is contained in:
Nian Jing
2019-01-23 13:14:25 +08:00
committed by Tao Zeng
parent e11ff93add
commit 464e4a4071
18 changed files with 20 additions and 166 deletions

View File

@@ -137,13 +137,6 @@
alignment = <0x400000>;
};
/*vbi reserved mem*/
vbi_reserved:linux,vbi {
compatible = "amlogic, vbi-mem";
size = <0x100000>;
alloc-ranges = <0x0e000000 0x800000>;
};
/*di CMA pool */
di_cma_reserved:linux,di_cma {
compatible = "shared-dma-pool";
@@ -586,10 +579,8 @@
vbi {
compatible = "amlogic, vbi";
memory-region = <&vbi_reserved>;
status = "okay";
interrupts = <0 83 1>;
reserve-iomap = "true";
};
cvbsout {

View File

@@ -145,13 +145,6 @@
alignment = <0x400000>;
};
/*vbi reserved mem*/
vbi_reserved:linux,vbi {
compatible = "amlogic, vbi-mem";
size = <0x100000>;
alloc-ranges = <0x0e000000 0x800000>;
};
/*di CMA pool */
di_cma_reserved:linux,di_cma {
compatible = "shared-dma-pool";
@@ -595,10 +588,8 @@
vbi {
compatible = "amlogic, vbi";
memory-region = <&vbi_reserved>;
status = "okay";
interrupts = <0 83 1>;
reserve-iomap = "true";
};
cvbsout {

View File

@@ -147,13 +147,6 @@
alignment = <0x400000>;
};
/*vbi reserved mem*/
vbi_reserved:linux,vbi {
compatible = "amlogic, vbi-mem";
size = <0x100000>;
alloc-ranges = <0x0e000000 0x800000>;
};
/*di CMA pool */
di_cma_reserved:linux,di_cma {
compatible = "shared-dma-pool";
@@ -597,10 +590,8 @@
vbi {
compatible = "amlogic, vbi";
memory-region = <&vbi_reserved>;
status = "okay";
interrupts = <0 83 1>;
reserve-iomap = "true";
};
cvbsout {

View File

@@ -162,12 +162,6 @@
alignment = <0x400000>;
};
/*vbi reserved mem*/
vbi_reserved:linux,vbi {
compatible = "amlogic, vbi-mem";
size = <0x100000>;
alloc-ranges = <0x1f800000 0x800000>;
};
};
/* for external keypad */
@@ -568,11 +562,9 @@
vbi {
compatible = "amlogic, vbi";
memory-region = <&vbi_reserved>;
dev_name = "vbi";
status = "okay";
interrupts = <0 83 1>;
reserve-iomap = "true";
};
tvafe_avin_detect {

View File

@@ -153,12 +153,6 @@
alignment = <0x400000>;
};
/*vbi reserved mem*/
vbi_reserved:linux,vbi {
compatible = "amlogic, vbi-mem";
size = <0x100000>;
alloc-ranges = <0x0 0x30000000>;
};
};
/* for external keypad */
@@ -611,11 +605,9 @@
vbi {
compatible = "amlogic, vbi";
memory-region = <&vbi_reserved>;
dev_name = "vbi";
status = "okay";
interrupts = <0 83 1>;
reserve-iomap = "true";
};
tvafe_avin_detect {

View File

@@ -169,13 +169,6 @@
alignment = <0x400000>;
alloc-ranges = <0x0 0x30000000>;
};
/*vbi reserved mem*/
vbi_reserved:linux,vbi {
compatible = "amlogic, vbi-mem";
size = <0x100000>;
alloc-ranges = <0x0e000000 0x800000>;
};
};
amlogic_battery:dummy-battery {
@@ -578,11 +571,9 @@
vbi {
compatible = "amlogic, vbi";
memory-region = <&vbi_reserved>;
dev_name = "vbi";
status = "okay";
interrupts = <0 83 1>;
reserve-iomap = "true";
};
tvafe_avin_detect {

View File

@@ -166,13 +166,6 @@
size = <0x01400000>;
alignment = <0x400000>;
};
/*vbi reserved mem*/
vbi_reserved:linux,vbi {
compatible = "amlogic, vbi-mem";
size = <0x100000>;
alloc-ranges = <0x0e000000 0x800000>;
};
};
amlogic_battery:dummy-battery {
@@ -575,11 +568,9 @@
vbi {
compatible = "amlogic, vbi";
memory-region = <&vbi_reserved>;
dev_name = "vbi";
status = "okay";
interrupts = <0 83 1>;
reserve-iomap = "true";
};
tvafe_avin_detect {

View File

@@ -163,13 +163,6 @@
size = <0x01400000>;
alignment = <0x400000>;
};
/*vbi reserved mem*/
vbi_reserved:linux,vbi {
compatible = "amlogic, vbi-mem";
size = <0x100000>;
alloc-ranges = <0x0 0x30000000>;
};
};
amlogic_battery:dummy-battery {
@@ -571,11 +564,9 @@
vbi {
compatible = "amlogic, vbi";
memory-region = <&vbi_reserved>;
dev_name = "vbi";
status = "okay";
interrupts = <0 83 1>;
reserve-iomap = "true";
};
tvafe_avin_detect {

View File

@@ -169,13 +169,6 @@
alignment = <0x400000>;
alloc-ranges = <0x0 0x30000000>;
};
/*vbi reserved mem*/
vbi_reserved:linux,vbi {
compatible = "amlogic, vbi-mem";
size = <0x100000>;
alloc-ranges = <0x0e000000 0x800000>;
};
};
amlogic_battery:dummy-battery {
@@ -578,11 +571,9 @@
vbi {
compatible = "amlogic, vbi";
memory-region = <&vbi_reserved>;
dev_name = "vbi";
status = "okay";
interrupts = <0 83 1>;
reserve-iomap = "true";
};
tvafe_avin_detect {

View File

@@ -144,12 +144,6 @@
alignment = <0x0 0x400000>;
};
/*vbi reserved mem*/
vbi_reserved:linux,vbi {
compatible = "amlogic, vbi-mem";
size = <0x0 0x100000>;
};
/*di CMA pool */
di_cma_reserved:linux,di_cma {
compatible = "shared-dma-pool";
@@ -592,10 +586,8 @@
vbi {
compatible = "amlogic, vbi";
memory-region = <&vbi_reserved>;
status = "okay";
interrupts = <0 83 1>;
reserve-iomap = "true";
};
cvbsout {

View File

@@ -144,12 +144,6 @@
alignment = <0x0 0x400000>;
};
/*vbi reserved mem*/
vbi_reserved:linux,vbi {
compatible = "amlogic, vbi-mem";
size = <0x0 0x100000>;
};
/*di CMA pool */
di_cma_reserved:linux,di_cma {
compatible = "shared-dma-pool";
@@ -592,10 +586,8 @@
vbi {
compatible = "amlogic, vbi";
memory-region = <&vbi_reserved>;
status = "okay";
interrupts = <0 83 1>;
reserve-iomap = "true";
};
cvbsout {

View File

@@ -161,12 +161,6 @@
size = <0x0 0x01400000>;
alignment = <0x0 0x400000>;
};
/*vbi reserved mem*/
vbi_reserved:linux,vbi {
compatible = "amlogic, vbi-mem";
size = <0x0 0x100000>;
};
};
/* for external keypad */
@@ -567,11 +561,9 @@
vbi {
compatible = "amlogic, vbi";
memory-region = <&vbi_reserved>;
dev_name = "vbi";
status = "okay";
interrupts = <0 83 1>;
reserve-iomap = "true";
};
tvafe_avin_detect {

View File

@@ -152,12 +152,6 @@
size = <0x0 0x01400000>;
alignment = <0x0 0x400000>;
};
/*vbi reserved mem*/
vbi_reserved:linux,vbi {
compatible = "amlogic, vbi-mem";
size = <0x0 0x100000>;
};
};
/* for external keypad */
@@ -610,11 +604,9 @@
vbi {
compatible = "amlogic, vbi";
memory-region = <&vbi_reserved>;
dev_name = "vbi";
status = "okay";
interrupts = <0 83 1>;
reserve-iomap = "true";
};
tvafe_avin_detect {

View File

@@ -164,12 +164,6 @@
size = <0x0 0x01400000>;
alignment = <0x0 0x400000>;
};
/*vbi reserved mem*/
vbi_reserved:linux,vbi {
compatible = "amlogic, vbi-mem";
size = <0x0 0x100000>;
};
};
amlogic_battery:dummy-battery {
@@ -572,11 +566,9 @@
vbi {
compatible = "amlogic, vbi";
memory-region = <&vbi_reserved>;
dev_name = "vbi";
status = "okay";
interrupts = <0 83 1>;
reserve-iomap = "true";
};
tvafe_avin_detect {

View File

@@ -164,12 +164,6 @@
size = <0x0 0x01400000>;
alignment = <0x0 0x400000>;
};
/*vbi reserved mem*/
vbi_reserved:linux,vbi {
compatible = "amlogic, vbi-mem";
size = <0x0 0x100000>;
};
};
amlogic_battery:dummy-battery {
@@ -572,11 +566,9 @@
vbi {
compatible = "amlogic, vbi";
memory-region = <&vbi_reserved>;
dev_name = "vbi";
status = "okay";
interrupts = <0 83 1>;
reserve-iomap = "true";
};
tvafe_avin_detect {

View File

@@ -164,12 +164,6 @@
size = <0x0 0x01400000>;
alignment = <0x0 0x400000>;
};
/*vbi reserved mem*/
vbi_reserved:linux,vbi {
compatible = "amlogic, vbi-mem";
size = <0x0 0x100000>;
};
};
amlogic_battery:dummy-battery {
@@ -571,11 +565,9 @@
vbi {
compatible = "amlogic, vbi";
memory-region = <&vbi_reserved>;
dev_name = "vbi";
status = "okay";
interrupts = <0 83 1>;
reserve-iomap = "true";
};
tvafe_avin_detect {

View File

@@ -165,12 +165,6 @@
size = <0x0 0x01400000>;
alignment = <0x0 0x400000>;
};
/*vbi reserved mem*/
vbi_reserved:linux,vbi {
compatible = "amlogic, vbi-mem";
size = <0x0 0x100000>;
};
};
amlogic_battery:dummy-battery {
@@ -573,11 +567,9 @@
vbi {
compatible = "amlogic, vbi";
memory-region = <&vbi_reserved>;
dev_name = "vbi";
status = "okay";
interrupts = <0 83 1>;
reserve-iomap = "true";
};
tvafe_avin_detect {

View File

@@ -31,6 +31,7 @@
#include <linux/of.h>
#include <linux/of_fdt.h>
#include <linux/of_reserved_mem.h>
#include <linux/dma-mapping.h>
#include <linux/of_irq.h>
/* #include <linux/mutex.h> */
@@ -1502,6 +1503,7 @@ static int vbi_probe(struct platform_device *pdev)
int ret = 0;
struct resource *res;
struct vbi_dev_s *vbi_dev;
dma_addr_t vbi_dma_addr;
/* allocate memory for the per-device structure */
vbi_dev = kzalloc(sizeof(struct vbi_dev_s), GFP_KERNEL);
@@ -1509,7 +1511,7 @@ static int vbi_probe(struct platform_device *pdev)
ret = -ENOMEM;
goto fail_kzalloc_mem;
}
memset(vbi_dev, 0, sizeof(struct vbi_dev_s));
memset(vbi_dev, 0, sizeof(struct vbi_dev_s));
vbi_mem_start = 0;
/* connect the file operations with cdev */
@@ -1536,34 +1538,27 @@ static int vbi_probe(struct platform_device *pdev)
goto fail_create_dbg_file;
}
/* get device memory */
res = &vbi_memobj;
ret = of_reserved_mem_device_init(&pdev->dev);
if (ret == 0)
tvafe_pr_info("\n vbi memory resource done.\n");
else
tvafe_pr_info("vbi: can't get memory resource\n");
vbi_dev->mem_start = res->start;
vbi_dev->mem_size = res->end - res->start + 1;
if (vbi_dev->mem_size > DECODER_VBI_SIZE)
vbi_dev->mem_size = DECODER_VBI_SIZE;
tvafe_pr_info(": start_addr is:0x%x, size is:0x%x\n",
vbi_dev->mem_start, vbi_dev->mem_size);
/*vbi memory alloc*/
vbi_dev->mem_size = DECODER_VBI_SIZE;
vbi_dev->pac_addr_start = dma_alloc_coherent(&pdev->dev,
vbi_dev->mem_size, &vbi_dma_addr, GFP_KERNEL);
vbi_dev->mem_start = (unsigned int)vbi_dma_addr;
if (vbi_dev->pac_addr_start == NULL) {
tvafe_pr_err(": dma_alloc_coherent failed!!!\n");
goto fail_alloc_mem;
}
tvafe_pr_info("vbi: dma_alloc phy start_addr is:0x%x, size is:0x%x\n",
vbi_dev->mem_start, vbi_dev->mem_size);
/* remap the package vbi hardware address for our conversion */
vbi_dev->pac_addr_start = phys_to_virt(vbi_dev->mem_start);
/*ioremap_nocache(vbi_dev->mem_start, vbi_dev->mem_size);*/
memset(vbi_dev->pac_addr_start, 0, vbi_dev->mem_size);
vbi_dev->mem_size = vbi_dev->mem_size/2;
vbi_dev->mem_size >>= 4;
vbi_dev->mem_size <<= 4;
vbi_mem_start = vbi_dev->mem_start;
vbi_dev->pac_addr_end = vbi_dev->pac_addr_start + vbi_dev->mem_size - 1;
if (vbi_dev->pac_addr_start == NULL)
tvafe_pr_err(": ioremap error!!!\n");
else
tvafe_pr_info(": vbi_dev->pac_addr_start=0x%p, end:0x%p, size:0x%x .......\n",
vbi_dev->pac_addr_start, vbi_dev->pac_addr_end, vbi_dev->mem_size);
tvafe_pr_info(": vbi_dev->pac_addr_start=0x%p, end:0x%p, size:0x%x\n",
vbi_dev->pac_addr_start, vbi_dev->pac_addr_end,
vbi_dev->mem_size);
vbi_dev->pac_addr = vbi_dev->pac_addr_start;
mutex_init(&vbi_dev->mutex);
@@ -1632,7 +1627,9 @@ static int vbi_remove(struct platform_device *pdev)
mutex_destroy(&vbi_dev->mutex);
tasklet_kill(&vbi_dev->tsklt_slicer);
if (vbi_dev->pac_addr_start)
iounmap(vbi_dev->pac_addr_start);
dma_free_coherent(vbi_dev->dev, vbi_dev->mem_size,
vbi_dev->pac_addr_start,
(dma_addr_t)&vbi_dev->mem_start);
vfree(vbi_dev->slicer);
device_destroy(vbi_clsp, MKDEV(MAJOR(vbi_id), 0));
cdev_del(&vbi_dev->cdev);