--- zzzz-none-000/linux-4.4.271/drivers/staging/android/ion/ion_dummy_driver.c 2021-06-03 06:22:09.000000000 +0000 +++ hawkeye-5590-750/linux-4.4.271/drivers/staging/android/ion/ion_dummy_driver.c 2023-04-19 10:22:29.000000000 +0000 @@ -14,6 +14,7 @@ * */ +#include #include #include #include @@ -54,7 +55,6 @@ .name = "chunk", .size = SZ_4M, .align = SZ_16K, - .priv = (void *)(SZ_16K), }, }; @@ -63,7 +63,7 @@ .heaps = dummy_heaps, }; -static int __init ion_dummy_init(void) +static int __init ion_dummy_init(struct platform_device *pdev) { int i, err; @@ -96,6 +96,8 @@ for (i = 0; i < dummy_ion_pdata.nr; i++) { struct ion_platform_heap *heap_data = &dummy_ion_pdata.heaps[i]; + heap_data->priv = &pdev->dev; + if (heap_data->type == ION_HEAP_TYPE_CARVEOUT && !heap_data->base) continue; @@ -106,7 +108,13 @@ heaps[i] = ion_heap_create(heap_data); if (IS_ERR_OR_NULL(heaps[i])) { err = PTR_ERR(heaps[i]); - goto err; + if (err == -EINVAL) { + pr_info("%s: Heap type is disabled: %d\n", + __func__, heap_data->type); + continue; + } else { + goto err; + } } ion_device_add_heap(idev, heaps[i]); } @@ -128,9 +136,8 @@ } return err; } -device_initcall(ion_dummy_init); -static void __exit ion_dummy_exit(void) +static int __exit ion_dummy_exit(void) { int i; @@ -150,5 +157,22 @@ dummy_heaps[ION_HEAP_TYPE_CHUNK].size); chunk_ptr = NULL; } + + return 0; } -__exitcall(ion_dummy_exit); + +static const struct of_device_id qcom_ion_dt_match[] = { + { .compatible = "ipq60xx-ion-dummy",}, + {} +}; +MODULE_DEVICE_TABLE(of, qcom_ion_dt_match); + +static struct platform_driver qcom_ion_dummy_driver = { + .probe = ion_dummy_init, + .remove = ion_dummy_exit, + .driver = { + .name = KBUILD_MODNAME, + .of_match_table = qcom_ion_dt_match, + }, +}; +module_platform_driver(qcom_ion_dummy_driver);