021-ssb_commit_settings_export.patch 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. --- a/drivers/ssb/driver_pcicore.c
  2. +++ b/drivers/ssb/driver_pcicore.c
  3. @@ -476,30 +476,6 @@ static void ssb_pcie_mdio_write(struct s
  4. pcicore_write32(pc, mdio_control, 0);
  5. }
  6. -static void ssb_broadcast_value(struct ssb_device *dev,
  7. - u32 address, u32 data)
  8. -{
  9. - /* This is used for both, PCI and ChipCommon core, so be careful. */
  10. - BUILD_BUG_ON(SSB_PCICORE_BCAST_ADDR != SSB_CHIPCO_BCAST_ADDR);
  11. - BUILD_BUG_ON(SSB_PCICORE_BCAST_DATA != SSB_CHIPCO_BCAST_DATA);
  12. -
  13. - ssb_write32(dev, SSB_PCICORE_BCAST_ADDR, address);
  14. - ssb_read32(dev, SSB_PCICORE_BCAST_ADDR); /* flush */
  15. - ssb_write32(dev, SSB_PCICORE_BCAST_DATA, data);
  16. - ssb_read32(dev, SSB_PCICORE_BCAST_DATA); /* flush */
  17. -}
  18. -
  19. -static void ssb_commit_settings(struct ssb_bus *bus)
  20. -{
  21. - struct ssb_device *dev;
  22. -
  23. - dev = bus->chipco.dev ? bus->chipco.dev : bus->pcicore.dev;
  24. - if (WARN_ON(!dev))
  25. - return;
  26. - /* This forces an update of the cached registers. */
  27. - ssb_broadcast_value(dev, 0xFD8, 0);
  28. -}
  29. -
  30. int ssb_pcicore_dev_irqvecs_enable(struct ssb_pcicore *pc,
  31. struct ssb_device *dev)
  32. {
  33. --- a/drivers/ssb/main.c
  34. +++ b/drivers/ssb/main.c
  35. @@ -1330,6 +1330,31 @@ error:
  36. }
  37. EXPORT_SYMBOL(ssb_bus_powerup);
  38. +static void ssb_broadcast_value(struct ssb_device *dev,
  39. + u32 address, u32 data)
  40. +{
  41. + /* This is used for both, PCI and ChipCommon core, so be careful. */
  42. + BUILD_BUG_ON(SSB_PCICORE_BCAST_ADDR != SSB_CHIPCO_BCAST_ADDR);
  43. + BUILD_BUG_ON(SSB_PCICORE_BCAST_DATA != SSB_CHIPCO_BCAST_DATA);
  44. +
  45. + ssb_write32(dev, SSB_PCICORE_BCAST_ADDR, address);
  46. + ssb_read32(dev, SSB_PCICORE_BCAST_ADDR); /* flush */
  47. + ssb_write32(dev, SSB_PCICORE_BCAST_DATA, data);
  48. + ssb_read32(dev, SSB_PCICORE_BCAST_DATA); /* flush */
  49. +}
  50. +
  51. +void ssb_commit_settings(struct ssb_bus *bus)
  52. +{
  53. + struct ssb_device *dev;
  54. +
  55. + dev = bus->chipco.dev ? bus->chipco.dev : bus->pcicore.dev;
  56. + if (WARN_ON(!dev))
  57. + return;
  58. + /* This forces an update of the cached registers. */
  59. + ssb_broadcast_value(dev, 0xFD8, 0);
  60. +}
  61. +EXPORT_SYMBOL(ssb_commit_settings);
  62. +
  63. u32 ssb_admatch_base(u32 adm)
  64. {
  65. u32 base = 0;
  66. --- a/include/linux/ssb/ssb.h
  67. +++ b/include/linux/ssb/ssb.h
  68. @@ -518,6 +518,7 @@ extern int ssb_bus_may_powerdown(struct
  69. * Otherwise static always-on powercontrol will be used. */
  70. extern int ssb_bus_powerup(struct ssb_bus *bus, bool dynamic_pctl);
  71. +extern void ssb_commit_settings(struct ssb_bus *bus);
  72. /* Various helper functions */
  73. extern u32 ssb_admatch_base(u32 adm);