Commit f22940b7 authored by Arnd Bergmann's avatar Arnd Bergmann
Browse files

Merge tag 'omap-for-v5.7/ti-sysc-signed' of...

Merge tag 'omap-for-v5.7/ti-sysc-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into arm/drivers

Driver changes for ti-sysc for v5.7 merge window

Driver changes for ti-sysc interconnect target module driver mostly
to be able to probe display subsystem (DSS) without platform data:

- Rename clk_enable/disable quirks to less confusing pre and post
  reset quirks

- Enable module reset to work with modules with no sysconfig register

- Also consider non-existing module register when matching quirks

- Don't warn with nested ti-sysc devices

- Implement basic SoC revision handling

- Detect DSS related devices

- Implement DSS reset quirks

Note that there is also a DSS driver specific probe fix to allow
probing devices configured for interconnect target module data that
was agreed to be merged along with the ti-sysc driver changes.

And then there also changes to handle RTC, EDMA and PRUSS:

- Add module unlock quirk for RTC

- Detect EDMA modules

- Add support for handling PRUSS

* tag 'omap-for-v5.7/ti-sysc-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
  bus: ti-sysc: Add support for PRUSS SYSC type
  dt-bindings: bus: ti-sysc: Add support for PRUSS SYSC type
  bus: ti-sysc: Detect EDMA and set quirk flags for tptc
  bus: ti-sysc: Fix wrong offset for display subsystem reset quirk
  bus: ti-sysc: Implement display subsystem reset quirk
  bus: ti-sysc: Detect display subsystem related devices
  bus: ti-sysc: Handle module unlock quirk needed for some RTC
  bus: ti-sysc: Implement SoC revision handling
  bus: ti-sysc: Don't warn about legacy property for nested ti-sysc devices
  bus: ti-sysc: Consider non-existing registers too when matching quirks
  bus: ti-sysc: Improve reset to work with modules with no sysconfig
  bus: ti-sysc: Rename clk related quirks to pre_reset and post_reset quirks
  bus: ti-sysc: Fix 1-wire reset quirk
  drm/omap: Prepare DSS for probing without legacy platform data

Link: https://lore.kernel.org/r/pull-1583511417-919838@atomide.com-3


Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parents 5fc04587 b2745d92
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ Required standard properties:
		"ti,sysc-dra7-mcasp"
		"ti,sysc-usb-host-fs"
		"ti,sysc-dra7-mcan"
		"ti,sysc-pruss"

- reg		shall have register areas implemented for the interconnect
		target module in question such as revision, sysc and syss
+6 −0
Original line number Diff line number Diff line
@@ -397,10 +397,16 @@ static int ti_sysc_shutdown_module(struct device *dev,
	return omap_hwmod_shutdown(cookie->data);
}

static bool ti_sysc_soc_type_gp(void)
{
	return omap_type() == OMAP2_DEVICE_TYPE_GP;
}

static struct of_dev_auxdata omap_auxdata_lookup[];

static struct ti_sysc_platform_data ti_sysc_pdata = {
	.auxdata = omap_auxdata_lookup,
	.soc_type_gp = ti_sysc_soc_type_gp,
	.init_clockdomain = ti_sysc_clkdm_init,
	.clkdm_deny_idle = ti_sysc_clkdm_deny_idle,
	.clkdm_allow_idle = ti_sysc_clkdm_allow_idle,
+516 −90

File changed.

Preview size limit exceeded, changes collapsed.

+22 −3
Original line number Diff line number Diff line
@@ -1339,9 +1339,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
@@ -1352,7 +1358,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;
}
@@ -1395,6 +1411,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;
@@ -1472,7 +1489,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)
+17 −8
Original line number Diff line number Diff line
@@ -183,9 +183,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);

@@ -195,13 +210,7 @@ static int __init omapdss_boot_init(void)
		return 0;

	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;
Loading