This change adds SPMI Device Tree parsing. The of_spmi_register_devices() API should be called from the probe() routine of each SPMI controller to parse the subtree and add the respective SPMI devices. The SPMI subtree is nested up to two levels deep. The first level is the most basic and treats the address as the SPMI slave ID. This should be used for simple devices that has no notion of segmented SPMI address spaces. An optional second level specifies the address as an offset within the outer layer's slave ID. This is used to specify multiple devices on the same slave ID that have different address ranges. In fact, it's reasonable to specify any number of address ranges at this level. Devices can also specify any number of interrupts that's decoding is done by an external interrupt device. Sections of this code were taken from drivers/of/platform.c. Change-Id: Ib9f06764a9bd85e3b2aab43b72aa7132885aa044 Signed-off-by: Michael Bohan <mbohan@codeaurora.org>
24 lines
779 B
C
24 lines
779 B
C
/* Copyright (c) 2012, Code Aurora Forum. All rights reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 and
|
|
* only version 2 as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*/
|
|
|
|
#include <linux/spmi.h>
|
|
#include <linux/of_irq.h>
|
|
|
|
#ifdef CONFIG_OF_SPMI
|
|
int of_spmi_register_devices(struct spmi_controller *ctrl);
|
|
#else
|
|
static int of_spmi_register_devices(struct spmi_controller *ctrl)
|
|
{
|
|
return -ENXIO;
|
|
}
|
|
#endif /* CONFIG_OF_SPMI */
|