]> Git Repo - linux.git/commitdiff
Merge tag 'v5.8-rc1' into fixes
authorTony Lindgren <[email protected]>
Tue, 16 Jun 2020 16:25:03 +0000 (09:25 -0700)
committerTony Lindgren <[email protected]>
Tue, 16 Jun 2020 16:25:03 +0000 (09:25 -0700)
Linux 5.8-rc1

1  2 
arch/arm/boot/dts/am33xx.dtsi
arch/arm/boot/dts/dra7-evm-common.dtsi
arch/arm/boot/dts/dra7-l4.dtsi
drivers/bus/ti-sysc.c

index ed6634d34c3c77d7c4100551c2c6d39fc00fe25b,3b177c9c4412feea18d83281f2b14869ee2e3066..2b630d3109683e98408e5e6eb50a8756c233ba02
                              <0x47400010 0x4>;
                        reg-names = "rev", "sysc";
                        ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
 -                                       SYSC_OMAP2_SOFTRESET)>;
 +                                       SYSC_OMAP4_SOFTRESET)>;
                        ti,sysc-midle = <SYSC_IDLE_FORCE>,
                                        <SYSC_IDLE_NO>,
                                        <SYSC_IDLE_SMART>;
                        clock-names = "fck";
                        #address-cells = <1>;
                        #size-cells = <1>;
 -                      ranges = <0x0 0x47400000 0x5000>;
 +                      ranges = <0x0 0x47400000 0x8000>;
  
                        usb0_phy: usb-phy@1300 {
                                compatible = "ti,am335x-usb-phy";
                #reset-cells = <1>;
        };
  };
+ /* Preferred always-on timer for clocksource */
+ &timer1_target {
+       ti,no-reset-on-init;
+       ti,no-idle;
+       timer@0 {
+               assigned-clocks = <&timer1_fck>;
+               assigned-clock-parents = <&sys_clkin_ck>;
+       };
+ };
+ /* Preferred timer for clockevent */
+ &timer2_target {
+       ti,no-reset-on-init;
+       ti,no-idle;
+       timer@0 {
+               assigned-clocks = <&timer2_fck>;
+               assigned-clock-parents = <&sys_clkin_ck>;
+       };
+ };
index 488201f0ac956b8c4d289b3031e26c9a1f521824,f89a64cbcd5395ebd656e6545b8627ac12c6df20..2cf6a529d4ad04b1b6d263b6bfe71d23e25f10d0
@@@ -3,6 -3,7 +3,7 @@@
   * Copyright (C) 2017 Texas Instruments Incorporated - http://www.ti.com/
   */
  
+ #include "dra74-ipu-dsp-common.dtsi"
  #include <dt-bindings/gpio/gpio.h>
  #include <dt-bindings/clock/ti-dra7-atl.h>
  #include <dt-bindings/input/input.h>
        rx-num-evt = <32>;
  };
  
 -&mailbox5 {
 -      status = "okay";
 -      mbox_ipu1_ipc3x: mbox_ipu1_ipc3x {
 -              status = "okay";
 -      };
 -      mbox_dsp1_ipc3x: mbox_dsp1_ipc3x {
 -              status = "okay";
 -      };
 -};
 -
 -&mailbox6 {
 -      status = "okay";
 -      mbox_ipu2_ipc3x: mbox_ipu2_ipc3x {
 -              status = "okay";
 -      };
 -      mbox_dsp2_ipc3x: mbox_dsp2_ipc3x {
 -              status = "okay";
 -      };
 -};
 -
  &pcie1_rc {
        status = "okay";
  };
index e059054d9110f79be046f50d599481bbdfb487a6,62ca8955121913e024a8913a10e20cbd78882ebf..0c6f26605506011f6390277e7b533a0e3fa0513d
  
                target-module@32000 {                   /* 0x48032000, ap 5 3e.0 */
                        compatible = "ti,sysc-omap4-timer", "ti,sysc";
-                       ti,hwmods = "timer2";
                        reg = <0x32000 0x4>,
                              <0x32010 0x4>;
                        reg-names = "rev", "sysc";
  
                target-module@34000 {                   /* 0x48034000, ap 7 46.0 */
                        compatible = "ti,sysc-omap4-timer", "ti,sysc";
-                       ti,hwmods = "timer3";
                        reg = <0x34000 0x4>,
                              <0x34010 0x4>;
                        reg-names = "rev", "sysc";
  
                target-module@36000 {                   /* 0x48036000, ap 9 4e.0 */
                        compatible = "ti,sysc-omap4-timer", "ti,sysc";
-                       ti,hwmods = "timer4";
                        reg = <0x36000 0x4>,
                              <0x36010 0x4>;
                        reg-names = "rev", "sysc";
                                        <SYSC_IDLE_SMART>,
                                        <SYSC_IDLE_SMART_WKUP>;
                        /* Domains (P, C): l4per_pwrdm, l4per_clkdm */
 -                      clocks = <&l4per_clkctrl DRA7_L4PER_TIMER4_CLKCTRL 0>,
 -                               <&timer_sys_clk_div>;
 -                      clock-names = "fck", "timer_sys_ck";
 +                      clocks = <&l4per_clkctrl DRA7_L4PER_TIMER4_CLKCTRL 0>;
 +                      clock-names = "fck";
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges = <0x0 0x36000 0x1000>;
                                        <SYSC_IDLE_SMART>,
                                        <SYSC_IDLE_SMART_WKUP>;
                        /* Domains (P, C): ipu_pwrdm, ipu_clkdm */
 -                      clocks = <&ipu_clkctrl DRA7_IPU_TIMER5_CLKCTRL 0>, <&timer_sys_clk_div>;
 -                      clock-names = "fck", "timer_sys_ck";
 +                      clocks = <&ipu_clkctrl DRA7_IPU_TIMER5_CLKCTRL 0>;
 +                      clock-names = "fck";
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges = <0x0 0x20000 0x1000>;
                        timer5: timer@0 {
                                compatible = "ti,omap5430-timer";
                                reg = <0x0 0x80>;
 -                              clocks = <&ipu_clkctrl DRA7_IPU_TIMER5_CLKCTRL 24>;
 -                              clock-names = "fck";
 +                              clocks = <&ipu_clkctrl DRA7_IPU_TIMER5_CLKCTRL 24>, <&timer_sys_clk_div>;
 +                              clock-names = "fck", "timer_sys_ck";
                                interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
                        };
                };
                                        <SYSC_IDLE_SMART>,
                                        <SYSC_IDLE_SMART_WKUP>;
                        /* Domains (P, C): ipu_pwrdm, ipu_clkdm */
 -                      clocks = <&ipu_clkctrl DRA7_IPU_TIMER6_CLKCTRL 0>,
 -                               <&timer_sys_clk_div>;
 -                      clock-names = "fck", "timer_sys_ck";
 +                      clocks = <&ipu_clkctrl DRA7_IPU_TIMER6_CLKCTRL 0>;
 +                      clock-names = "fck";
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges = <0x0 0x22000 0x1000>;
                        timer6: timer@0 {
                                compatible = "ti,omap5430-timer";
                                reg = <0x0 0x80>;
 -                              clocks = <&ipu_clkctrl DRA7_IPU_TIMER6_CLKCTRL 24>;
 -                              clock-names = "fck";
 +                              clocks = <&ipu_clkctrl DRA7_IPU_TIMER6_CLKCTRL 24>, <&timer_sys_clk_div>;
 +                              clock-names = "fck", "timer_sys_ck";
                                interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
                        };
                };
                        timer14: timer@0 {
                                compatible = "ti,omap5430-timer";
                                reg = <0x0 0x80>;
 -                              clocks = <&l4per3_clkctrl DRA7_L4PER3_TIMER14_CLKCTRL 24>;
 -                              clock-names = "fck";
 +                              clocks = <&l4per3_clkctrl DRA7_L4PER3_TIMER14_CLKCTRL 24>, <&timer_sys_clk_div>;
 +                              clock-names = "fck", "timer_sys_ck";
                                interrupts = <GIC_SPI 340 IRQ_TYPE_LEVEL_HIGH>;
                                ti,timer-pwm;
                        };
                        timer15: timer@0 {
                                compatible = "ti,omap5430-timer";
                                reg = <0x0 0x80>;
 -                              clocks = <&l4per3_clkctrl DRA7_L4PER3_TIMER15_CLKCTRL 24>;
 -                              clock-names = "fck";
 +                              clocks = <&l4per3_clkctrl DRA7_L4PER3_TIMER15_CLKCTRL 24>, <&timer_sys_clk_div>;
 +                              clock-names = "fck", "timer_sys_ck";
                                interrupts = <GIC_SPI 341 IRQ_TYPE_LEVEL_HIGH>;
                                ti,timer-pwm;
                        };
                        timer16: timer@0 {
                                compatible = "ti,omap5430-timer";
                                reg = <0x0 0x80>;
 -                              clocks = <&l4per3_clkctrl DRA7_L4PER3_TIMER16_CLKCTRL 24>;
 -                              clock-names = "fck";
 +                              clocks = <&l4per3_clkctrl DRA7_L4PER3_TIMER16_CLKCTRL 24>, <&timer_sys_clk_div>;
 +                              clock-names = "fck", "timer_sys_ck";
                                interrupts = <GIC_SPI 342 IRQ_TYPE_LEVEL_HIGH>;
                                ti,timer-pwm;
                        };
  
                target-module@4000 {                    /* 0x4ae04000, ap 15 40.0 */
                        compatible = "ti,sysc-omap2", "ti,sysc";
-                       ti,hwmods = "counter_32k";
                        reg = <0x4000 0x4>,
                              <0x4010 0x4>;
                        reg-names = "rev", "sysc";
                        };
                };
  
-               target-module@8000 {                    /* 0x4ae18000, ap 9 30.0 */
+               timer1_target: target-module@8000 {     /* 0x4ae18000, ap 9 30.0 */
                        compatible = "ti,sysc-omap4-timer", "ti,sysc";
-                       ti,hwmods = "timer1";
                        reg = <0x8000 0x4>,
                              <0x8010 0x4>;
                        reg-names = "rev", "sysc";
diff --combined drivers/bus/ti-sysc.c
index db9541f3850558d49128fa2608599b92eae11f18,3affd180baac191fcf0859ba2dd9b1df8f9505d1..bb54fb514e40fc3b072c7b2af25efd560a2cac29
@@@ -221,35 -221,6 +221,35 @@@ static u32 sysc_read_sysstatus(struct s
        return sysc_read(ddata, offset);
  }
  
 +/* Poll on reset status */
 +static int sysc_wait_softreset(struct sysc *ddata)
 +{
 +      u32 sysc_mask, syss_done, rstval;
 +      int syss_offset, error = 0;
 +
 +      syss_offset = ddata->offsets[SYSC_SYSSTATUS];
 +      sysc_mask = BIT(ddata->cap->regbits->srst_shift);
 +
 +      if (ddata->cfg.quirks & SYSS_QUIRK_RESETDONE_INVERTED)
 +              syss_done = 0;
 +      else
 +              syss_done = ddata->cfg.syss_mask;
 +
 +      if (syss_offset >= 0) {
 +              error = readx_poll_timeout(sysc_read_sysstatus, ddata, rstval,
 +                                         (rstval & ddata->cfg.syss_mask) ==
 +                                         syss_done,
 +                                         100, MAX_MODULE_SOFTRESET_WAIT);
 +
 +      } else if (ddata->cfg.quirks & SYSC_QUIRK_RESET_STATUS) {
 +              error = readx_poll_timeout(sysc_read_sysconfig, ddata, rstval,
 +                                         !(rstval & sysc_mask),
 +                                         100, MAX_MODULE_SOFTRESET_WAIT);
 +      }
 +
 +      return error;
 +}
 +
  static int sysc_add_named_clock_from_child(struct sysc *ddata,
                                           const char *name,
                                           const char *optfck_name)
@@@ -954,47 -925,18 +954,47 @@@ static int sysc_enable_module(struct de
        struct sysc *ddata;
        const struct sysc_regbits *regbits;
        u32 reg, idlemodes, best_mode;
 +      int error;
  
        ddata = dev_get_drvdata(dev);
 +
 +      /*
 +       * Some modules like DSS reset automatically on idle. Enable optional
 +       * reset clocks and wait for OCP softreset to complete.
 +       */
 +      if (ddata->cfg.quirks & SYSC_QUIRK_OPT_CLKS_IN_RESET) {
 +              error = sysc_enable_opt_clocks(ddata);
 +              if (error) {
 +                      dev_err(ddata->dev,
 +                              "Optional clocks failed for enable: %i\n",
 +                              error);
 +                      return error;
 +              }
 +      }
 +      error = sysc_wait_softreset(ddata);
 +      if (error)
 +              dev_warn(ddata->dev, "OCP softreset timed out\n");
 +      if (ddata->cfg.quirks & SYSC_QUIRK_OPT_CLKS_IN_RESET)
 +              sysc_disable_opt_clocks(ddata);
 +
 +      /*
 +       * Some subsystem private interconnects, like DSS top level module,
 +       * need only the automatic OCP softreset handling with no sysconfig
 +       * register bits to configure.
 +       */
        if (ddata->offsets[SYSC_SYSCONFIG] == -ENODEV)
                return 0;
  
        regbits = ddata->cap->regbits;
        reg = sysc_read(ddata, ddata->offsets[SYSC_SYSCONFIG]);
  
 -      /* Set CLOCKACTIVITY, we only use it for ick */
 +      /*
 +       * Set CLOCKACTIVITY, we only use it for ick. And we only configure it
 +       * based on the SYSC_QUIRK_USE_CLOCKACT flag, not based on the hardware
 +       * capabilities. See the old HWMOD_SET_DEFAULT_CLOCKACT flag.
 +       */
        if (regbits->clkact_shift >= 0 &&
 -          (ddata->cfg.quirks & SYSC_QUIRK_USE_CLOCKACT ||
 -           ddata->cfg.sysc_val & BIT(regbits->clkact_shift)))
 +          (ddata->cfg.quirks & SYSC_QUIRK_USE_CLOCKACT))
                reg |= SYSC_CLOCACT_ICK << regbits->clkact_shift;
  
        /* Set SIDLE mode */
@@@ -1049,9 -991,6 +1049,9 @@@ set_autoidle
                sysc_write_sysconfig(ddata, reg);
        }
  
 +      /* Flush posted write */
 +      sysc_read(ddata, ddata->offsets[SYSC_SYSCONFIG]);
 +
        if (ddata->module_enable_quirk)
                ddata->module_enable_quirk(ddata);
  
@@@ -1132,9 -1071,6 +1132,9 @@@ set_sidle
                reg |= 1 << regbits->autoidle_shift;
        sysc_write_sysconfig(ddata, reg);
  
 +      /* Flush posted write */
 +      sysc_read(ddata, ddata->offsets[SYSC_SYSCONFIG]);
 +
        return 0;
  }
  
@@@ -1339,13 -1275,6 +1339,6 @@@ static const struct sysc_revision_quir
                   SYSC_QUIRK_LEGACY_IDLE),
        SYSC_QUIRK("smartreflex", 0, -ENODEV, 0x38, -ENODEV, 0x00000000, 0xffffffff,
                   SYSC_QUIRK_LEGACY_IDLE),
-       SYSC_QUIRK("timer", 0, 0, 0x10, 0x14, 0x00000015, 0xffffffff,
-                  0),
-       /* Some timers on omap4 and later */
-       SYSC_QUIRK("timer", 0, 0, 0x10, -ENODEV, 0x50002100, 0xffffffff,
-                  0),
-       SYSC_QUIRK("timer", 0, 0, 0x10, -ENODEV, 0x4fff1301, 0xffff00ff,
-                  0),
        SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x00000046, 0xffffffff,
                   SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_LEGACY_IDLE),
        SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x00000052, 0xffffffff,
        SYSC_QUIRK("slimbus", 0, 0, 0x10, -ENODEV, 0x40002903, 0xffffffff, 0),
        SYSC_QUIRK("spinlock", 0, 0, 0x10, -ENODEV, 0x50020000, 0xffffffff, 0),
        SYSC_QUIRK("rng", 0, 0x1fe0, 0x1fe4, -ENODEV, 0x00000020, 0xffffffff, 0),
+       SYSC_QUIRK("timer", 0, 0, 0x10, 0x14, 0x00000013, 0xffffffff, 0),
+       SYSC_QUIRK("timer", 0, 0, 0x10, 0x14, 0x00000015, 0xffffffff, 0),
+       /* Some timers on omap4 and later */
+       SYSC_QUIRK("timer", 0, 0, 0x10, -ENODEV, 0x50002100, 0xffffffff, 0),
+       SYSC_QUIRK("timer", 0, 0, 0x10, -ENODEV, 0x4fff1301, 0xffff00ff, 0),
+       SYSC_QUIRK("timer32k", 0, 0, 0x4, -ENODEV, 0x00000040, 0xffffffff, 0),
+       SYSC_QUIRK("timer32k", 0, 0, 0x4, -ENODEV, 0x00000011, 0xffffffff, 0),
        SYSC_QUIRK("timer32k", 0, 0, 0x4, -ENODEV, 0x00000060, 0xffffffff, 0),
        SYSC_QUIRK("tpcc", 0, 0, -ENODEV, -ENODEV, 0x40014c00, 0xffffffff, 0),
        SYSC_QUIRK("usbhstll", 0, 0, 0x10, 0x14, 0x00000004, 0xffffffff, 0),
@@@ -1552,7 -1488,7 +1552,7 @@@ static u32 sysc_quirk_dispc(struct sys
        bool lcd_en, digit_en, lcd2_en = false, lcd3_en = false;
        const int lcd_en_mask = BIT(0), digit_en_mask = BIT(1);
        int manager_count;
 -      bool framedonetv_irq;
 +      bool framedonetv_irq = true;
        u32 val, irq_mask = 0;
  
        switch (sysc_soc->soc) {
                break;
        case SOC_AM4:
                manager_count = 1;
 +              framedonetv_irq = false;
                break;
        case SOC_UNKNOWN:
        default:
@@@ -1887,10 -1822,11 +1887,10 @@@ static int sysc_legacy_init(struct sys
   */
  static int sysc_reset(struct sysc *ddata)
  {
 -      int sysc_offset, syss_offset, sysc_val, rstval, error = 0;
 -      u32 sysc_mask, syss_done;
 +      int sysc_offset, sysc_val, error;
 +      u32 sysc_mask;
  
        sysc_offset = ddata->offsets[SYSC_SYSCONFIG];
 -      syss_offset = ddata->offsets[SYSC_SYSSTATUS];
  
        if (ddata->legacy_mode ||
            ddata->cap->regbits->srst_shift < 0 ||
  
        sysc_mask = BIT(ddata->cap->regbits->srst_shift);
  
 -      if (ddata->cfg.quirks & SYSS_QUIRK_RESETDONE_INVERTED)
 -              syss_done = 0;
 -      else
 -              syss_done = ddata->cfg.syss_mask;
 -
        if (ddata->pre_reset_quirk)
                ddata->pre_reset_quirk(ddata);
  
        if (ddata->post_reset_quirk)
                ddata->post_reset_quirk(ddata);
  
 -      /* Poll on reset status */
 -      if (syss_offset >= 0) {
 -              error = readx_poll_timeout(sysc_read_sysstatus, ddata, rstval,
 -                                         (rstval & ddata->cfg.syss_mask) ==
 -                                         syss_done,
 -                                         100, MAX_MODULE_SOFTRESET_WAIT);
 -
 -      } else if (ddata->cfg.quirks & SYSC_QUIRK_RESET_STATUS) {
 -              error = readx_poll_timeout(sysc_read_sysconfig, ddata, rstval,
 -                                         !(rstval & sysc_mask),
 -                                         100, MAX_MODULE_SOFTRESET_WAIT);
 -      }
 +      error = sysc_wait_softreset(ddata);
 +      if (error)
 +              dev_warn(ddata->dev, "OCP softreset timed out\n");
  
        if (ddata->reset_done_quirk)
                ddata->reset_done_quirk(ddata);
@@@ -2794,6 -2744,17 +2794,17 @@@ static int sysc_init_soc(struct sysc *d
        if (match && match->data)
                sysc_soc->soc = (int)match->data;
  
+       /* Ignore devices that are not available on HS and EMU SoCs */
+       if (!sysc_soc->general_purpose) {
+               switch (sysc_soc->soc) {
+               case SOC_3430 ... SOC_3630:
+                       sysc_add_disabled(0x48304000);  /* timer12 */
+                       break;
+               default:
+                       break;
+               };
+       }
        match = soc_device_match(sysc_soc_feat_match);
        if (!match)
                return 0;
This page took 0.079003 seconds and 4 git commands to generate.