Commit c60cc2e4d974ee9815399c536c538162ae930cc5

Authored by Dan Murphy

Merge branch 'connectivity-ti-linux-3.14.y' of git://git.ti.com/connectivity-int…

…egration-tree/connectivity-ti-linux-kernel into ti-linux-3.14.y

TI-Feature: connectivity
TI-Tree: git://git.ti.com/connectivity-integration-tree/connectivity-ti-linux-kernel.git
TI-Branch: connectivity-ti-linux-3.14.y

* 'connectivity-ti-linux-3.14.y' of git://git.ti.com/connectivity-integration-tree/connectivity-ti-linux-kernel:
  ARM: DRA7: GMAC: Apply Errata i877
  ARM: OMAP2+: GMAC: Fix clock domain flags
  ARM: OMAP2+: hwmod: Introduce ti,no-idle dt property

Signed-off-by: Dan Murphy <dmurphy@ti.com>

Showing 7 changed files Side-by-side Diff

Documentation/devicetree/bindings/arm/omap/omap.txt
... ... @@ -25,6 +25,7 @@
25 25 - ti,no-idle-on-init: When present, the module should not be idled at init
26 26 - ti,no_init: When present, the module is marked as disabled immediately and
27 27 no setup is done.
  28 +- ti,no-idle: When present, the module is never allowed to idle.
28 29 Example:
29 30  
30 31 spinlock@1 {
arch/arm/boot/dts/am57xx-beagle-x15.dts
... ... @@ -487,6 +487,7 @@
487 487 &mac {
488 488 status = "okay";
489 489 dual_emac;
  490 + ti,no-idle;
490 491 };
491 492  
492 493 &cpsw_emac0 {
arch/arm/boot/dts/dra7-evm.dts
... ... @@ -680,6 +680,7 @@
680 680 &mac {
681 681 status = "okay";
682 682 dual_emac;
  683 + ti,no-idle;
683 684 };
684 685  
685 686 &cpsw_emac0 {
arch/arm/boot/dts/dra72-evm.dts
... ... @@ -738,6 +738,7 @@
738 738 pinctrl-0 = <&cpsw_default>;
739 739 pinctrl-1 = <&cpsw_sleep>;
740 740 slaves = <1>;
  741 + ti,no-idle;
741 742 };
742 743  
743 744 &cpsw_emac0 {
arch/arm/mach-omap2/clockdomains7xx_data.c
... ... @@ -482,7 +482,7 @@
482 482 .dep_bit = DRA7XX_GMAC_STATDEP_SHIFT,
483 483 .wkdep_srcs = gmac_wkup_sleep_deps,
484 484 .sleepdep_srcs = gmac_wkup_sleep_deps,
485   - .flags = CLKDM_CAN_HWSUP_SWSUP,
  485 + .flags = CLKDM_CAN_SWSUP,
486 486 };
487 487  
488 488 static struct clockdomain l4cfg_7xx_clkdm = {
arch/arm/mach-omap2/omap_hwmod.c
... ... @@ -2262,6 +2262,11 @@
2262 2262 */
2263 2263 static int _idle(struct omap_hwmod *oh)
2264 2264 {
  2265 + if (oh->flags & HWMOD_NO_IDLE) {
  2266 + oh->_int_flags |= _HWMOD_SKIP_ENABLE;
  2267 + return 0;
  2268 + }
  2269 +
2265 2270 pr_debug("omap_hwmod: %s: idling\n", oh->name);
2266 2271  
2267 2272 if (oh->_state != _HWMOD_STATE_ENABLED) {
... ... @@ -2582,6 +2587,8 @@
2582 2587 oh->flags |= HWMOD_INIT_NO_IDLE;
2583 2588 if (of_find_property(np, "ti,no-init", NULL))
2584 2589 oh->flags |= HWMOD_NO_INIT;
  2590 + if (of_find_property(np, "ti,no-idle", NULL))
  2591 + oh->flags |= HWMOD_NO_IDLE;
2585 2592 }
2586 2593 if (oh->flags & HWMOD_NO_INIT)
2587 2594 oh->_state = _HWMOD_STATE_DISABLED;
... ... @@ -2710,7 +2717,7 @@
2710 2717 * XXX HWMOD_INIT_NO_IDLE does not belong in hwmod data -
2711 2718 * it should be set by the core code as a runtime flag during startup
2712 2719 */
2713   - if ((oh->flags & HWMOD_INIT_NO_IDLE) &&
  2720 + if ((oh->flags & (HWMOD_INIT_NO_IDLE | HWMOD_NO_IDLE)) &&
2714 2721 (postsetup_state == _HWMOD_STATE_IDLE)) {
2715 2722 oh->_int_flags |= _HWMOD_SKIP_ENABLE;
2716 2723 postsetup_state = _HWMOD_STATE_ENABLED;
arch/arm/mach-omap2/omap_hwmod.h
... ... @@ -522,6 +522,8 @@
522 522 * default after losing context if no driver is present and using the
523 523 * hwmod. This will break subsequent suspend cycles but can be fixed by
524 524 * enabling then idling the unused hwmod after each suspend cycle.
  525 + * HWMOD_NO_IDLE: Do not idle the hwmod at all. Useful to handle certain
  526 + * IPs like CPSW on DRA7, where clocks to this module cannot be disabled.
525 527 */
526 528 #define HWMOD_SWSUP_SIDLE (1 << 0)
527 529 #define HWMOD_SWSUP_MSTANDBY (1 << 1)
... ... @@ -538,6 +540,7 @@
538 540 #define HWMOD_SWSUP_SIDLE_ACT (1 << 12)
539 541 #define HWMOD_NO_INIT (1 << 13)
540 542 #define HWMOD_NEEDS_REIDLE (1 << 14)
  543 +#define HWMOD_NO_IDLE (1 << 15)
541 544  
542 545 /*
543 546 * omap_hwmod._int_flags definitions