diff options
| author | Miquel Raynal <miquel.raynal@bootlin.com> | 2022-05-20 13:58:54 +0200 | 
|---|---|---|
| committer | Miquel Raynal <miquel.raynal@bootlin.com> | 2022-05-20 13:58:54 +0200 | 
| commit | e6828be5edcfea25cd70a2d1de41085c67ef9fa5 (patch) | |
| tree | 489ae4cdb47a4d83940e2472f49a3c601806b70e /drivers/platform/x86/amd-pmc.c | |
| parent | 1fefc8ecb834c88edfc27e712d683872d0c541dd (diff) | |
| parent | c47452194641b5d27c20e557c84a46c85fd7ce37 (diff) | |
Merge tag 'spi-nor/for-5.19' into mtd/next
SPI NOR core changes:
- Read back written SR value to make sure the write was done correctly.
- Introduce a common function for Read ID that manufacturer drivers can
  use to verify the Octal DTR switch worked correctly.
- Add helpers for read/write any register commands so manufacturer
  drivers don't open code it every time.
- Clarify rdsr dummy cycles documentation.
- Add debugfs entry to expose internal flash parameters and state.
SPI NOR manufacturer drivers changes:
- Add support for Winbond W25Q512NW-IM, and Eon EN25QH256A.
- Move spi_nor_write_ear() to Winbond module since only Winbond flashes
  use it.
- Rework Micron and Cypress Octal DTR enable methods to improve
  readability.
- Use the common Read ID function to verify switch to Octal DTR mode for
  Micron and Cypress flashes.
- Skip polling status on volatile register writes for Micron and Cypress
  flashes since the operation is instant.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Diffstat (limited to 'drivers/platform/x86/amd-pmc.c')
| -rw-r--r-- | drivers/platform/x86/amd-pmc.c | 14 | 
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/platform/x86/amd-pmc.c b/drivers/platform/x86/amd-pmc.c index e9d0dbbb2887..fa4123dbdf7f 100644 --- a/drivers/platform/x86/amd-pmc.c +++ b/drivers/platform/x86/amd-pmc.c @@ -160,8 +160,10 @@ MODULE_PARM_DESC(enable_stb, "Enable the STB debug mechanism");  static struct amd_pmc_dev pmc;  static int amd_pmc_send_cmd(struct amd_pmc_dev *dev, u32 arg, u32 *data, u8 msg, bool ret); -static int amd_pmc_write_stb(struct amd_pmc_dev *dev, u32 data);  static int amd_pmc_read_stb(struct amd_pmc_dev *dev, u32 *buf); +#ifdef CONFIG_SUSPEND +static int amd_pmc_write_stb(struct amd_pmc_dev *dev, u32 data); +#endif  static inline u32 amd_pmc_reg_read(struct amd_pmc_dev *dev, int reg_offset)  { @@ -325,6 +327,7 @@ static int get_metrics_table(struct amd_pmc_dev *pdev, struct smu_metrics *table  	return 0;  } +#ifdef CONFIG_SUSPEND  static void amd_pmc_validate_deepest(struct amd_pmc_dev *pdev)  {  	struct smu_metrics table; @@ -338,6 +341,7 @@ static void amd_pmc_validate_deepest(struct amd_pmc_dev *pdev)  		dev_dbg(pdev->dev, "Last suspend in deepest state for %lluus\n",  			 table.timein_s0i3_lastcapture);  } +#endif  #ifdef CONFIG_DEBUG_FS  static int smu_fw_info_show(struct seq_file *s, void *unused) @@ -569,6 +573,7 @@ out_unlock:  	return rc;  } +#ifdef CONFIG_SUSPEND  static int amd_pmc_get_os_hint(struct amd_pmc_dev *dev)  {  	switch (dev->cpu_id) { @@ -694,6 +699,7 @@ static struct acpi_s2idle_dev_ops amd_pmc_s2idle_dev_ops = {  	.prepare = amd_pmc_s2idle_prepare,  	.restore = amd_pmc_s2idle_restore,  }; +#endif  static const struct pci_device_id pmc_pci_ids[] = {  	{ PCI_DEVICE(PCI_VENDOR_ID_AMD, AMD_CPU_ID_YC) }, @@ -733,6 +739,7 @@ static int amd_pmc_s2d_init(struct amd_pmc_dev *dev)  	return 0;  } +#ifdef CONFIG_SUSPEND  static int amd_pmc_write_stb(struct amd_pmc_dev *dev, u32 data)  {  	int err; @@ -753,6 +760,7 @@ static int amd_pmc_write_stb(struct amd_pmc_dev *dev, u32 data)  	return 0;  } +#endif  static int amd_pmc_read_stb(struct amd_pmc_dev *dev, u32 *buf)  { @@ -859,9 +867,11 @@ static int amd_pmc_probe(struct platform_device *pdev)  	amd_pmc_get_smu_version(dev);  	platform_set_drvdata(pdev, dev); +#ifdef CONFIG_SUSPEND  	err = acpi_register_lps0_dev(&amd_pmc_s2idle_dev_ops);  	if (err)  		dev_warn(dev->dev, "failed to register LPS0 sleep handler, expect increased power consumption\n"); +#endif  	amd_pmc_dbgfs_register(dev);  	return 0; @@ -875,7 +885,9 @@ static int amd_pmc_remove(struct platform_device *pdev)  {  	struct amd_pmc_dev *dev = platform_get_drvdata(pdev); +#ifdef CONFIG_SUSPEND  	acpi_unregister_lps0_dev(&amd_pmc_s2idle_dev_ops); +#endif  	amd_pmc_dbgfs_unregister(dev);  	pci_dev_put(dev->rdev);  	mutex_destroy(&dev->lock);  | 
