Merge remote-tracking branch 'stable/linux-5.15.y' into rpi-5.15.y
authorDom Cobley <popcornmix@gmail.com>
Mon, 31 Oct 2022 16:58:37 +0000 (16:58 +0000)
committerDom Cobley <popcornmix@gmail.com>
Mon, 31 Oct 2022 16:58:37 +0000 (16:58 +0000)
12 files changed:
1  2 
drivers/clk/bcm/clk-bcm2835.c
drivers/gpu/drm/drm_bridge.c
drivers/mmc/core/block.c
drivers/mmc/core/quirks.h
drivers/spi/spi.c
drivers/usb/host/xhci-mem.c
drivers/usb/host/xhci.c
drivers/usb/host/xhci.h
include/linux/mmc/card.h
kernel/cgroup/cgroup.c
sound/usb/card.c
sound/usb/quirks.c

@@@ -1013,33 -1032,14 +1038,38 @@@ static unsigned long bcm2835_clock_get_
  
        div = cprman_read(cprman, data->div_reg);
  
-       return bcm2835_clock_rate_from_divisor(clock, parent_rate, div);
+       rate = bcm2835_clock_rate_from_divisor(clock, parent_rate, div);
+       if (data->round_up)
+               rate = bcm2835_round_rate(rate);
+       return rate;
  }
  
 +static unsigned long bcm2835_clock_get_rate_vpu(struct clk_hw *hw,
 +                                              unsigned long parent_rate)
 +{
 +      struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw);
 +      struct bcm2835_cprman *cprman = clock->cprman;
 +
 +      if (cprman->fw) {
 +              struct {
 +                      u32 id;
 +                      u32 val;
 +              } packet;
 +
 +              packet.id = VCMSG_ID_CORE_CLOCK;
 +              packet.val = 0;
 +
 +              if (!rpi_firmware_property(cprman->fw,
 +                                         RPI_FIRMWARE_GET_MAX_CLOCK_RATE,
 +                                         &packet, sizeof(packet)))
 +                      return packet.val;
 +      }
 +
 +      return bcm2835_clock_get_rate(hw, parent_rate);
 +}
 +
  static void bcm2835_clock_wait_busy(struct bcm2835_clock *clock)
  {
        struct bcm2835_cprman *cprman = clock->cprman;
@@@ -2206,8 -2174,24 +2236,9 @@@ static const struct bcm2835_clk_desc cl
                .div_reg = CM_UARTDIV,
                .int_bits = 10,
                .frac_bits = 12,
-               .tcnt_mux = 28),
+               .tcnt_mux = 28,
+               .round_up = true),
  
 -      /* TV encoder clock.  Only operating frequency is 108Mhz.  */
 -      [BCM2835_CLOCK_VEC]     = REGISTER_PER_CLK(
 -              SOC_ALL,
 -              .name = "vec",
 -              .ctl_reg = CM_VECCTL,
 -              .div_reg = CM_VECDIV,
 -              .int_bits = 4,
 -              .frac_bits = 0,
 -              /*
 -               * Allow rate change propagation only on PLLH_AUX which is
 -               * assigned index 7 in the parent array.
 -               */
 -              .set_rate_parent = BIT(7),
 -              .tcnt_mux = 29),
 -
        /* dsi clocks */
        [BCM2835_CLOCK_DSI0E]   = REGISTER_PER_CLK(
                SOC_ALL,
Simple merge
Simple merge
@@@ -100,13 -100,11 +100,19 @@@ static const struct mmc_fixup __maybe_u
                  MMC_QUIRK_TRIM_BROKEN),
  
        /*
+        * Some SD cards reports discard support while they don't
+        */
+       MMC_FIXUP(CID_NAME_ANY, CID_MANFID_SANDISK_SD, 0x5344, add_quirk_sd,
+                 MMC_QUIRK_BROKEN_SD_DISCARD),
++      /*
 +       *  On some Kingston SD cards, multiple erases of less than 64
 +       *  sectors can cause corruption.
 +       */
 +      MMC_FIXUP("SD16G", 0x41, 0x3432, add_quirk, MMC_QUIRK_ERASE_BROKEN),
 +      MMC_FIXUP("SD32G", 0x41, 0x3432, add_quirk, MMC_QUIRK_ERASE_BROKEN),
 +      MMC_FIXUP("SD64G", 0x41, 0x3432, add_quirk, MMC_QUIRK_ERASE_BROKEN),
 +
        END_FIXUP
  };
  
Simple merge
Simple merge
Simple merge
@@@ -1904,9 -1903,7 +1904,10 @@@ struct xhci_hcd 
  #define XHCI_NO_SOFT_RETRY    BIT_ULL(40)
  #define XHCI_BROKEN_D3COLD    BIT_ULL(41)
  #define XHCI_EP_CTX_BROKEN_DCS        BIT_ULL(42)
- #define XHCI_AVOID_DQ_ON_LINK BIT_ULL(43)
- #define XHCI_VLI_TRB_CACHE_BUG        BIT_ULL(44)
- #define XHCI_VLI_SS_BULK_OUT_BUG      BIT_ULL(45)
+ #define XHCI_SUSPEND_RESUME_CLKS      BIT_ULL(43)
++#define XHCI_AVOID_DQ_ON_LINK BIT_ULL(44)
++#define XHCI_VLI_TRB_CACHE_BUG        BIT_ULL(45)
++#define XHCI_VLI_SS_BULK_OUT_BUG      BIT_ULL(46)
  
        unsigned int            num_active_eps;
        unsigned int            limit_active_eps;
@@@ -292,9 -292,8 +292,10 @@@ struct mmc_card 
  #define MMC_QUIRK_BROKEN_IRQ_POLLING  (1<<11) /* Polling SDIO_CCCR_INTx could create a fake interrupt */
  #define MMC_QUIRK_TRIM_BROKEN (1<<12)         /* Skip trim */
  #define MMC_QUIRK_BROKEN_HPI  (1<<13)         /* Disable broken HPI support */
+ #define MMC_QUIRK_BROKEN_SD_DISCARD   (1<<14) /* Disable broken SD discard support */
  
 +#define MMC_QUIRK_ERASE_BROKEN        (1<<31)         /* Skip erase */
 +
        bool                    reenable_cmdq;  /* Re-enable Command Queue */
  
        unsigned int            erase_size;     /* erase size in sectors */
Simple merge
Simple merge
Simple merge