Merge tag 'arm-drivers-5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
Pull ARM driver updates from Arnd Bergmann: "These are the usual updates for SoC specific device drivers and related subsystems that don't have their own top-level maintainers: - ARM SCMI/SCPI updates to allow pluggable transport layers - TEE subsystem cleanups - A new driver for the Amlogic secure power domain controller - Various driver updates for the NXP Layerscape DPAA2, NXP i.MX SCU and TI OMAP2+ sysc drivers. - Qualcomm SoC driver updates, including a new library module for "protection domain" notifications - Lots of smaller bugfixes and cleanups in other drivers" * tag 'arm-drivers-5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (70 commits) soc: fsl: qe: fix sparse warnings for ucc_slow.c soc: fsl: qe: ucc_slow: remove 0 assignment for kzalloc'ed structure soc: fsl: qe: fix sparse warnings for ucc_fast.c soc: fsl: qe: fix sparse warnings for qe_ic.c soc: fsl: qe: fix sparse warnings for ucc.c soc: fsl: qe: fix sparse warning for qe_common.c soc: fsl: qe: fix sparse warnings for qe.c soc: qcom: Fix QCOM_APR dependencies soc: qcom: pdr: Avoid uninitialized use of found in pdr_indication_cb soc: imx: drop COMPILE_TEST for IMX_SCU_SOC firmware: imx: add COMPILE_TEST for IMX_SCU driver soc: imx: gpc: fix power up sequencing soc: imx: increase build coverage for imx8m soc driver soc: qcom: apr: Add avs/audio tracking functionality dt-bindings: soc: qcom: apr: Add protection domain bindings soc: qcom: Introduce Protection Domain Restart helpers devicetree: bindings: firmware: add ipq806x to qcom_scm memory: tegra: Correct debugfs clk rate-range on Tegra124 memory: tegra: Correct debugfs clk rate-range on Tegra30 memory: tegra: Correct debugfs clk rate-range on Tegra20 ...
This commit is contained in:
@@ -1348,9 +1348,15 @@ static int dss_component_compare(struct device *dev, void *data)
|
||||
return dev == child;
|
||||
}
|
||||
|
||||
struct dss_component_match_data {
|
||||
struct device *dev;
|
||||
struct component_match **match;
|
||||
};
|
||||
|
||||
static int dss_add_child_component(struct device *dev, void *data)
|
||||
{
|
||||
struct component_match **match = data;
|
||||
struct dss_component_match_data *cmatch = data;
|
||||
struct component_match **match = cmatch->match;
|
||||
|
||||
/*
|
||||
* HACK
|
||||
@@ -1361,7 +1367,17 @@ static int dss_add_child_component(struct device *dev, void *data)
|
||||
if (strstr(dev_name(dev), "rfbi"))
|
||||
return 0;
|
||||
|
||||
component_match_add(dev->parent, match, dss_component_compare, dev);
|
||||
/*
|
||||
* Handle possible interconnect target modules defined within the DSS.
|
||||
* The DSS components can be children of an interconnect target module
|
||||
* after the device tree has been updated for the module data.
|
||||
* See also omapdss_boot_init() for compatible fixup.
|
||||
*/
|
||||
if (strstr(dev_name(dev), "target-module"))
|
||||
return device_for_each_child(dev, cmatch,
|
||||
dss_add_child_component);
|
||||
|
||||
component_match_add(cmatch->dev, match, dss_component_compare, dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1404,6 +1420,7 @@ static int dss_probe_hardware(struct dss_device *dss)
|
||||
static int dss_probe(struct platform_device *pdev)
|
||||
{
|
||||
const struct soc_device_attribute *soc;
|
||||
struct dss_component_match_data cmatch;
|
||||
struct component_match *match = NULL;
|
||||
struct resource *dss_mem;
|
||||
struct dss_device *dss;
|
||||
@@ -1481,7 +1498,9 @@ static int dss_probe(struct platform_device *pdev)
|
||||
|
||||
omapdss_gather_components(&pdev->dev);
|
||||
|
||||
device_for_each_child(&pdev->dev, &match, dss_add_child_component);
|
||||
cmatch.dev = &pdev->dev;
|
||||
cmatch.match = &match;
|
||||
device_for_each_child(&pdev->dev, &cmatch, dss_add_child_component);
|
||||
|
||||
r = component_master_add_with_match(&pdev->dev, &dss_component_ops, match);
|
||||
if (r)
|
||||
|
@@ -178,9 +178,24 @@ static const struct of_device_id omapdss_of_fixups_whitelist[] __initconst = {
|
||||
{},
|
||||
};
|
||||
|
||||
static void __init omapdss_find_children(struct device_node *np)
|
||||
{
|
||||
struct device_node *child;
|
||||
|
||||
for_each_available_child_of_node(np, child) {
|
||||
if (!of_find_property(child, "compatible", NULL))
|
||||
continue;
|
||||
|
||||
omapdss_walk_device(child, true);
|
||||
|
||||
if (of_device_is_compatible(child, "ti,sysc"))
|
||||
omapdss_find_children(child);
|
||||
}
|
||||
}
|
||||
|
||||
static int __init omapdss_boot_init(void)
|
||||
{
|
||||
struct device_node *dss, *child;
|
||||
struct device_node *dss;
|
||||
|
||||
INIT_LIST_HEAD(&dss_conv_list);
|
||||
|
||||
@@ -190,13 +205,7 @@ static int __init omapdss_boot_init(void)
|
||||
goto put_node;
|
||||
|
||||
omapdss_walk_device(dss, true);
|
||||
|
||||
for_each_available_child_of_node(dss, child) {
|
||||
if (!of_find_property(child, "compatible", NULL))
|
||||
continue;
|
||||
|
||||
omapdss_walk_device(child, true);
|
||||
}
|
||||
omapdss_find_children(dss);
|
||||
|
||||
while (!list_empty(&dss_conv_list)) {
|
||||
struct dss_conv_node *n;
|
||||
|
Reference in New Issue
Block a user