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

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

Merge tag 'omap-for-v4.15/soc-signed' of...

Merge tag 'omap-for-v4.15/soc-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/soc

Pull "OMAP soc changes for omaps for v4.15 merge window" from Tony Lindgren:

SoC changes for omaps for v4.15 merge window that are mostly non-urgent
fixes and clean-up in preparation for dropping more platform data later
on:

- Fix am33xx/am437x MMC address space offsets

- Fix overwriting clkctrl and modulemode values when dts data is
  used

- Drop unused platform init code for omap_init_hdq

- Drop unused struct omap_hwmod_mux_info

- Remove duplicate define for dra722 es1.0 silicon revision

- Add support for dra71x es2.1

- Make omap_dma_dev_info __initdata

- A series of fixes for Coccinelle found issues

* tag 'omap-for-v4.15/soc-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
  ARM: OMAP: Fix typos in two comment lines in _omap_dm_timer_request()
  ARM: OMAP: Use kcalloc() in omap_system_dma_probe()
  ARM: OMAP: Improve a size determination in two functions
  ARM: OMAP: Delete an error message for a failed memory allocation in two functions
  ARM: OMAP2+: make omap_dma_dev_info __initdata
  ARM: DRA722: Add support for DRA71x Silicon Rev 2.1
  ARM: DRA722: remove redundant definition of 1.0 device
  ARM: OMAP2+: Drop unused omap_hwmod_mux_info
  ARM: OMAP2+: Drop unused omap_init_hdq
  ARM: OMAP2+: Fix overwriting of clkctrl and modulemode values
  ARM: OMAP2+: Fix MMC address space mismatch for am33xx and am43xx
parents 82e3c83e 28fd7e99
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -223,7 +223,7 @@ static struct omap_system_dma_plat_info dma_plat_info __initdata = {
	.dma_read	= dma_read,
};

static struct platform_device_info omap_dma_dev_info = {
static struct platform_device_info omap_dma_dev_info __initdata = {
	.name = "omap-dma-engine",
	.id = -1,
	.dma_mask = DMA_BIT_MASK(32),
+0 −22
Original line number Diff line number Diff line
@@ -75,25 +75,3 @@ int omap_hdq1w_reset(struct omap_hwmod *oh)

	return 0;
}

#ifndef CONFIG_OF
static int __init omap_init_hdq(void)
{
	int id = -1;
	struct platform_device *pdev;
	struct omap_hwmod *oh;
	char *oh_name = "hdq1w";
	char *devname = "omap_hdq";

	oh = omap_hwmod_lookup(oh_name);
	if (!oh)
		return 0;

	pdev = omap_device_build(devname, id, oh, NULL, 0);
	WARN(IS_ERR(pdev), "Can't build omap_device for %s:%s.\n",
	     devname, oh->name);

	return 0;
}
omap_arch_initcall(omap_init_hdq);
#endif
+4 −1
Original line number Diff line number Diff line
@@ -693,9 +693,12 @@ void __init dra7xxx_check_revision(void)
			omap_revision = DRA722_REV_ES1_0;
			break;
		case 1:
		default:
			omap_revision = DRA722_REV_ES2_0;
			break;
		case 2:
		default:
			omap_revision = DRA722_REV_ES2_1;
			break;
		}
		break;

+41 −8
Original line number Diff line number Diff line
@@ -993,6 +993,34 @@ static int _enable_clocks(struct omap_hwmod *oh)
	return 0;
}

/**
 * _omap4_clkctrl_managed_by_clkfwk - true if clkctrl managed by clock framework
 * @oh: struct omap_hwmod *
 */
static bool _omap4_clkctrl_managed_by_clkfwk(struct omap_hwmod *oh)
{
	if (oh->prcm.omap4.flags & HWMOD_OMAP4_CLKFWK_CLKCTR_CLOCK)
		return true;

	return false;
}

/**
 * _omap4_has_clkctrl_clock - returns true if a module has clkctrl clock
 * @oh: struct omap_hwmod *
 */
static bool _omap4_has_clkctrl_clock(struct omap_hwmod *oh)
{
	if (oh->prcm.omap4.clkctrl_offs)
		return true;

	if (!oh->prcm.omap4.clkctrl_offs &&
	    oh->prcm.omap4.flags & HWMOD_OMAP4_ZERO_CLKCTRL_OFFSET)
		return true;

	return false;
}

/**
 * _disable_clocks - disable hwmod main clock and interface clocks
 * @oh: struct omap_hwmod *
@@ -1030,7 +1058,8 @@ static int _disable_clocks(struct omap_hwmod *oh)
 */
static void _omap4_enable_module(struct omap_hwmod *oh)
{
	if (!oh->clkdm || !oh->prcm.omap4.modulemode)
	if (!oh->clkdm || !oh->prcm.omap4.modulemode ||
	    _omap4_clkctrl_managed_by_clkfwk(oh))
		return;

	pr_debug("omap_hwmod: %s: %s: %d\n",
@@ -1061,8 +1090,10 @@ static int _omap4_wait_target_disable(struct omap_hwmod *oh)
	if (oh->flags & HWMOD_NO_IDLEST)
		return 0;

	if (!oh->prcm.omap4.clkctrl_offs &&
	    !(oh->prcm.omap4.flags & HWMOD_OMAP4_ZERO_CLKCTRL_OFFSET))
	if (_omap4_clkctrl_managed_by_clkfwk(oh))
		return 0;

	if (!_omap4_has_clkctrl_clock(oh))
		return 0;

	return omap_cm_wait_module_idle(oh->clkdm->prcm_partition,
@@ -1847,7 +1878,8 @@ static int _omap4_disable_module(struct omap_hwmod *oh)
{
	int v;

	if (!oh->clkdm || !oh->prcm.omap4.modulemode)
	if (!oh->clkdm || !oh->prcm.omap4.modulemode ||
	    _omap4_clkctrl_managed_by_clkfwk(oh))
		return -EINVAL;

	/*
@@ -2829,8 +2861,10 @@ static int _omap4_wait_target_ready(struct omap_hwmod *oh)
	if (!_find_mpu_rt_port(oh))
		return 0;

	if (!oh->prcm.omap4.clkctrl_offs &&
	    !(oh->prcm.omap4.flags & HWMOD_OMAP4_ZERO_CLKCTRL_OFFSET))
	if (_omap4_clkctrl_managed_by_clkfwk(oh))
		return 0;

	if (!_omap4_has_clkctrl_clock(oh))
		return 0;

	/* XXX check module SIDLEMODE, hardreset status */
@@ -2986,8 +3020,7 @@ static int _omap4_disable_direct_prcm(struct omap_hwmod *oh)
	if (!oh)
		return -EINVAL;

	oh->prcm.omap4.clkctrl_offs = 0;
	oh->prcm.omap4.modulemode = 0;
	oh->prcm.omap4.flags |= HWMOD_OMAP4_CLKFWK_CLKCTR_CLOCK;

	return 0;
}
+3 −18
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@
 *
 * To do:
 * - add interconnect error log structures
 * - add pinmuxing
 * - init_conn_id_bit (CONNID_BIT_VECTOR)
 * - implement default hwmod SMS/SDRC flags?
 * - move Linux-specific data ("non-ROM data") out
@@ -150,22 +149,6 @@ extern struct omap_hwmod_sysc_fields omap_hwmod_sysc_type3;
#define DEBUG_AM33XXUART1_FLAGS DEBUG_OMAPUART_FLAGS
#endif

/**
 * struct omap_hwmod_mux_info - hwmod specific mux configuration
 * @pads:              array of omap_device_pad entries
 * @nr_pads:           number of omap_device_pad entries
 *
 * Note that this is currently built during init as needed.
 */
struct omap_hwmod_mux_info {
	int				nr_pads;
	struct omap_device_pad		*pads;
	int				nr_pads_dynamic;
	struct omap_device_pad		**pads_dynamic;
	int				*irqs;
	bool				enabled;
};

/**
 * struct omap_hwmod_irq_info - MPU IRQs used by the hwmod
 * @name: name of the IRQ channel (module local name)
@@ -446,9 +429,12 @@ struct omap_hwmod_omap2_prcm {
 * HWMOD_OMAP4_ZERO_CLKCTRL_OFFSET: Some IP blocks have a valid CLKCTRL
 *	offset of zero; this flag bit should be set in those cases to
 *	distinguish from hwmods that have no clkctrl offset.
 * HWMOD_OMAP4_CLKFWK_CLKCTR_CLOCK: Module clockctrl clock is managed
 *	by the common clock framework and not hwmod.
 */
#define HWMOD_OMAP4_NO_CONTEXT_LOSS_BIT		(1 << 0)
#define HWMOD_OMAP4_ZERO_CLKCTRL_OFFSET		(1 << 1)
#define HWMOD_OMAP4_CLKFWK_CLKCTR_CLOCK		(1 << 2)

/**
 * struct omap_hwmod_omap4_prcm - OMAP4-specific PRCM data
@@ -670,7 +656,6 @@ struct omap_hwmod {
	const char			*name;
	struct omap_hwmod_class		*class;
	struct omap_device		*od;
	struct omap_hwmod_mux_info	*mux;
	struct omap_hwmod_irq_info	*mpu_irqs;
	struct omap_hwmod_dma_info	*sdma_reqs;
	struct omap_hwmod_rst_info	*rst_lines;
Loading