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

Commit 414587c7 authored by Raghavendra Rao Ananta's avatar Raghavendra Rao Ananta
Browse files

of: Make of_get_ddrtype module friendly



The APIs fdt_path_offset() and fdt_getprop_w() are not exported.
As a result, drivers that are compiled as modules cannot directly
use them. Hence, switch to of_find_node_by_path() and
of_property_read_u32() to achive the same functionality while also
being module friendly.

Change-Id: I90b299c60b60a006d0932442549c5d5a20cf2ea0
Signed-off-by: default avatarRaghavendra Rao Ananta <rananta@codeaurora.org>
parent a75e17c3
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -1278,6 +1278,30 @@ static inline int of_get_available_child_count(const struct device_node *np)
	return num;
}

/**
 * of_fdt_get_ddrtype - Return the type of ddr (4/5) on the current device
 *
 * On match, returns a non-zero positive value which matches the ddr type.
 * Otherwise returns -ENOENT.
 */
static inline int of_fdt_get_ddrtype(void)
{
	int ret;
	u32 ddr_type;
	struct device_node *mem_node;

	mem_node = of_find_node_by_path("/memory");
	if (!mem_node)
		return -ENOENT;

	ret = of_property_read_u32(mem_node, "ddr_device_type", &ddr_type);
	of_node_put(mem_node);
	if (ret < 0)
		return -ENOENT;

	return ddr_type;
}

#if defined(CONFIG_OF) && !defined(MODULE)
#define _OF_DECLARE(table, name, compat, fn, fn_type)			\
	static const struct of_device_id __of_table_##name		\
+0 −26
Original line number Diff line number Diff line
@@ -12,7 +12,6 @@
#include <linux/types.h>
#include <linux/init.h>
#include <linux/errno.h>
#include <linux/libfdt.h>

/* Definitions used by the flattened device tree */
#define OF_DT_HEADER		0xd00dfeed	/* marker */
@@ -40,31 +39,6 @@ extern char __dtb_end[];
extern u64 of_flat_dt_translate_address(unsigned long node);
extern void of_fdt_limit_memory(int limit);

/**
 * of_fdt_get_ddrtype - Return the type of ddr (4/5) on the current device
 *
 * On match, returns a non-zero positive value which matches the ddr type.
 * Otherwise returns -ENOENT.
 */
static inline int of_fdt_get_ddrtype(void)
{
	int memory;
	int len;
	int ret;
	fdt32_t *prop = NULL;

	memory = fdt_path_offset(initial_boot_params, "/memory");
	if (memory > 0)
		prop = fdt_getprop_w(initial_boot_params, memory,
				  "ddr_device_type", &len);

	if (!prop || len != sizeof(u32))
		return -ENOENT;

	ret = fdt32_to_cpu(*prop);

	return ret;
}
#endif /* CONFIG_OF_FLATTREE */

#ifdef CONFIG_OF_EARLY_FLATTREE