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

Commit 738fdf4f authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "slimbus: Add changes to make slimbus GKI compliant"

parents 3547b7ba 1fb82065
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -99,12 +99,6 @@ config OF_RESERVED_MEM_CHECK
config OF_RESOLVE
	bool

config OF_SLIMBUS
	def_tristate SLIMBUS
	depends on SLIMBUS
	help
	  OpenFirmware SLIMBUS accessors

config OF_OVERLAY
	bool "Device Tree overlays"
	select OF_DYNAMIC
+0 −1
Original line number Diff line number Diff line
@@ -12,7 +12,6 @@ obj-$(CONFIG_OF_UNITTEST) += unittest.o
obj-$(CONFIG_OF_MDIO)	+= of_mdio.o
obj-$(CONFIG_OF_RESERVED_MEM) += of_reserved_mem.o
obj-$(CONFIG_OF_RESOLVE)  += resolver.o
obj-$(CONFIG_OF_SLIMBUS) += of_slimbus.o
obj-$(CONFIG_OF_OVERLAY) += overlay.o
obj-$(CONFIG_OF_NUMA) += of_numa.o

drivers/of/of_slimbus.c

deleted100644 → 0
+0 −85
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2016-2019, The Linux Foundation. All rights reserved.
 */

/* OF helpers for SLIMbus */
#include <linux/slimbus/slimbus.h>
#include <linux/irq.h>
#include <linux/slab.h>
#include <linux/of.h>
#include <linux/of_irq.h>
#include <linux/of_slimbus.h>

int of_register_slim_devices(struct slim_controller *ctrl)
{
	struct device_node *node;
	struct slim_boardinfo *binfo = NULL;
	struct slim_boardinfo *temp;
	int n = 0;
	int ret = 0;

	if (!ctrl->dev.of_node)
		return -EINVAL;

	for_each_available_child_of_node(ctrl->dev.of_node, node) {
		struct property *prop;
		struct slim_device *slim;
		char *name;

		prop = of_find_property(node, "elemental-addr", NULL);
		if (!prop || prop->length != 6) {
			dev_err(&ctrl->dev, "of_slim: invalid E-addr\n");
			continue;
		}
		name = kzalloc(SLIMBUS_NAME_SIZE, GFP_KERNEL);
		if (!name) {
			ret = -ENOMEM;
			of_node_put(node);
			goto of_slim_err;
		}
		if (of_modalias_node(node, name, SLIMBUS_NAME_SIZE) < 0) {
			dev_err(&ctrl->dev, "of_slim: modalias failure on %s\n",
				node->full_name);
			kfree(name);
			continue;
		}
		slim = kzalloc(sizeof(struct slim_device), GFP_KERNEL);
		if (!slim) {
			ret = -ENOMEM;
			kfree(name);
			of_node_put(node);
			goto of_slim_err;
		}
		memcpy(slim->e_addr, prop->value, 6);

		temp = krealloc(binfo, (n + 1) * sizeof(struct slim_boardinfo),
					GFP_KERNEL);
		if (!temp) {
			kfree(name);
			kfree(slim);
			ret = -ENOMEM;
			of_node_put(node);
			goto of_slim_err;
		}
		binfo = temp;

		slim->dev.of_node = of_node_get(node);
		slim->name = (const char *)name;
		binfo[n].bus_num = ctrl->nr;
		binfo[n].slim_slave = slim;
		n++;
	}
	ret = slim_register_board_info(binfo, n);
	if (!ret)
		goto of_slim_ret;
of_slim_err:
	while (n-- > 0) {
		kfree(binfo[n].slim_slave->name);
		kfree(binfo[n].slim_slave);
	}
of_slim_ret:
	kfree(binfo);
	return ret;
}
EXPORT_SYMBOL(of_register_slim_devices);
+2 −1
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@
# SLIMbus driver configuration
#
menuconfig SLIMBUS
	bool "SLIMbus support"
	tristate "SLIMbus support"
	depends on HAS_IOMEM
	help
	  Slimbus is standard interface between baseband and
@@ -50,4 +50,5 @@ config SLIMBUS_MSM_NGD
	  the bus using messaging interface, and communicating with master
	  component residing on ADSP for bandwidth and data-channel
	  management.

endif
+2 −1
Original line number Diff line number Diff line
@@ -4,4 +4,5 @@
#
obj-$(CONFIG_SLIMBUS)			+= slimbus.o
obj-$(CONFIG_SLIMBUS_MSM_CTRL)		+= slim-msm.o slim-msm-ctrl.o
obj-$(CONFIG_SLIMBUS_MSM_NGD)		+= slim-msm.o slim-msm-ngd.o
obj-$(CONFIG_SLIMBUS_MSM_NGD)		+= slimbus-ngd.o
slimbus-ngd-y				:= slim-msm.o slim-msm-ngd.o
Loading