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

Commit 9828282e authored by Laura Abbott's avatar Laura Abbott Committed by Greg Kroah-Hartman
Browse files

staging: android: ion: Remove old platform support



Device specific platform support has been haphazard for Ion. There have
been several independent attempts and there are still objections to
what bindings exist right now. Just remove everything for a fresh start.

Signed-off-by: default avatarLaura Abbott <labbott@redhat.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent db70331b
Loading
Loading
Loading
Loading
+0 −42
Original line number Original line Diff line number Diff line
@@ -10,45 +10,3 @@ menuconfig ION
	  If you're not using Android its probably safe to
	  If you're not using Android its probably safe to
	  say N here.
	  say N here.
config ION_TEST
	tristate "Ion Test Device"
	depends on ION
	help
	  Choose this option to create a device that can be used to test the
	  kernel and device side ION functions.

config ION_DUMMY
	bool "Dummy Ion driver"
	depends on ION
	help
	  Provides a dummy ION driver that registers the
	  /dev/ion device and some basic heaps. This can
	  be used for testing the ION infrastructure if
	  one doesn't have access to hardware drivers that
	  use ION.

config ION_TEGRA
	tristate "Ion for Tegra"
	depends on ARCH_TEGRA && ION
	help
	  Choose this option if you wish to use ion on an nVidia Tegra.

config ION_HISI
	tristate "Ion for Hisilicon"
	depends on ARCH_HISI && ION
	select ION_OF
	help
	  Choose this option if you wish to use ion on Hisilicon Platform.

source "drivers/staging/android/ion/hisilicon/Kconfig"

config ION_OF
	bool "Devicetree support for Ion"
	depends on ION && OF_ADDRESS
	help
	  Provides base support for defining Ion heaps in devicetree
	  and setting them up. Also includes functions for platforms
	  to parse the devicetree and expand for their own custom
	  extensions

	  If using Ion and devicetree, you should say Y here
+0 −7
Original line number Original line Diff line number Diff line
obj-$(CONFIG_ION) +=	ion.o ion-ioctl.o ion_heap.o \
obj-$(CONFIG_ION) +=	ion.o ion-ioctl.o ion_heap.o \
			ion_page_pool.o ion_system_heap.o \
			ion_page_pool.o ion_system_heap.o \
			ion_carveout_heap.o ion_chunk_heap.o ion_cma_heap.o
			ion_carveout_heap.o ion_chunk_heap.o ion_cma_heap.o
obj-$(CONFIG_ION_TEST) += ion_test.o
ifdef CONFIG_COMPAT
ifdef CONFIG_COMPAT
obj-$(CONFIG_ION) += compat_ion.o
obj-$(CONFIG_ION) += compat_ion.o
endif
endif

obj-$(CONFIG_ION_DUMMY) += ion_dummy_driver.o
obj-$(CONFIG_ION_TEGRA) += tegra/
obj-$(CONFIG_ION_HISI) += hisilicon/
obj-$(CONFIG_ION_OF) += ion_of.o
+0 −5
Original line number Original line Diff line number Diff line
config HI6220_ION
        bool "Hi6220 ION Driver"
        depends on ARCH_HISI && ION
        help
          Build the Hisilicon Hi6220 ion driver.
+0 −1
Original line number Original line Diff line number Diff line
obj-$(CONFIG_HI6220_ION) += hi6220_ion.o
+0 −113
Original line number Original line Diff line number Diff line
/*
 * Hisilicon Hi6220 ION Driver
 *
 * Copyright (c) 2015 Hisilicon Limited.
 *
 * Author: Chen Feng <puck.chen@hisilicon.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

#define pr_fmt(fmt) "Ion: " fmt

#include <linux/err.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/of.h>
#include <linux/mm.h>
#include "../ion_priv.h"
#include "../ion.h"
#include "../ion_of.h"

struct hisi_ion_dev {
	struct ion_heap	**heaps;
	struct ion_device *idev;
	struct ion_platform_data *data;
};

static struct ion_of_heap hisi_heaps[] = {
	PLATFORM_HEAP("hisilicon,sys_user", 0,
		      ION_HEAP_TYPE_SYSTEM, "sys_user"),
	PLATFORM_HEAP("hisilicon,sys_contig", 1,
		      ION_HEAP_TYPE_SYSTEM_CONTIG, "sys_contig"),
	PLATFORM_HEAP("hisilicon,cma", ION_HEAP_TYPE_DMA, ION_HEAP_TYPE_DMA,
		      "cma"),
	{}
};

static int hi6220_ion_probe(struct platform_device *pdev)
{
	struct hisi_ion_dev *ipdev;
	int i;

	ipdev = devm_kzalloc(&pdev->dev, sizeof(*ipdev), GFP_KERNEL);
	if (!ipdev)
		return -ENOMEM;

	platform_set_drvdata(pdev, ipdev);

	ipdev->idev = ion_device_create(NULL);
	if (IS_ERR(ipdev->idev))
		return PTR_ERR(ipdev->idev);

	ipdev->data = ion_parse_dt(pdev, hisi_heaps);
	if (IS_ERR(ipdev->data))
		return PTR_ERR(ipdev->data);

	ipdev->heaps = devm_kzalloc(&pdev->dev,
				sizeof(struct ion_heap) * ipdev->data->nr,
				GFP_KERNEL);
	if (!ipdev->heaps) {
		ion_destroy_platform_data(ipdev->data);
		return -ENOMEM;
	}

	for (i = 0; i < ipdev->data->nr; i++) {
		ipdev->heaps[i] = ion_heap_create(&ipdev->data->heaps[i]);
		if (!ipdev->heaps) {
			ion_destroy_platform_data(ipdev->data);
			return -ENOMEM;
		}
		ion_device_add_heap(ipdev->idev, ipdev->heaps[i]);
	}
	return 0;
}

static int hi6220_ion_remove(struct platform_device *pdev)
{
	struct hisi_ion_dev *ipdev;
	int i;

	ipdev = platform_get_drvdata(pdev);

	for (i = 0; i < ipdev->data->nr; i++)
		ion_heap_destroy(ipdev->heaps[i]);

	ion_destroy_platform_data(ipdev->data);
	ion_device_destroy(ipdev->idev);

	return 0;
}

static const struct of_device_id hi6220_ion_match_table[] = {
	{.compatible = "hisilicon,hi6220-ion"},
	{},
};

static struct platform_driver hi6220_ion_driver = {
	.probe = hi6220_ion_probe,
	.remove = hi6220_ion_remove,
	.driver = {
		.name = "ion-hi6220",
		.of_match_table = hi6220_ion_match_table,
	},
};

static int __init hi6220_ion_init(void)
{
	return platform_driver_register(&hi6220_ion_driver);
}

subsys_initcall(hi6220_ion_init);
Loading