提交 189f1d9b 编写于 作者: H Hector Martin 提交者: Ulf Hansson

mmc: sdhci-pci-gli: GL9755: Support for CD/WP inversion on OF platforms

This is required on some Apple ARM64 laptops using this controller.
As is typical on DT platforms, pull these quirks from the device tree
using the standard mmc bindings.

See Documentation/devicetree/bindings/mmc/mmc-controller.yaml
Acked-by: NAdrian Hunter <adrian.hunter@intel.com>
Signed-off-by: NHector Martin <marcan@marcan.st>
Link: https://lore.kernel.org/r/20211215161045.38843-2-marcan@marcan.stSigned-off-by: NUlf Hansson <ulf.hansson@linaro.org>
上级 1ccaa1bd
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/mmc/mmc.h> #include <linux/mmc/mmc.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/of.h>
#include "sdhci.h" #include "sdhci.h"
#include "sdhci-pci.h" #include "sdhci-pci.h"
#include "cqhci.h" #include "cqhci.h"
...@@ -116,6 +117,8 @@ ...@@ -116,6 +117,8 @@
#define PCI_GLI_9755_PECONF 0x44 #define PCI_GLI_9755_PECONF 0x44
#define PCI_GLI_9755_LFCLK GENMASK(14, 12) #define PCI_GLI_9755_LFCLK GENMASK(14, 12)
#define PCI_GLI_9755_DMACLK BIT(29) #define PCI_GLI_9755_DMACLK BIT(29)
#define PCI_GLI_9755_INVERT_CD BIT(30)
#define PCI_GLI_9755_INVERT_WP BIT(31)
#define PCI_GLI_9755_CFG2 0x48 #define PCI_GLI_9755_CFG2 0x48
#define PCI_GLI_9755_CFG2_L1DLY GENMASK(28, 24) #define PCI_GLI_9755_CFG2_L1DLY GENMASK(28, 24)
...@@ -570,6 +573,14 @@ static void gl9755_hw_setting(struct sdhci_pci_slot *slot) ...@@ -570,6 +573,14 @@ static void gl9755_hw_setting(struct sdhci_pci_slot *slot)
gl9755_wt_on(pdev); gl9755_wt_on(pdev);
pci_read_config_dword(pdev, PCI_GLI_9755_PECONF, &value); pci_read_config_dword(pdev, PCI_GLI_9755_PECONF, &value);
/*
* Apple ARM64 platforms using these chips may have
* inverted CD/WP detection.
*/
if (of_property_read_bool(pdev->dev.of_node, "cd-inverted"))
value |= PCI_GLI_9755_INVERT_CD;
if (of_property_read_bool(pdev->dev.of_node, "wp-inverted"))
value |= PCI_GLI_9755_INVERT_WP;
value &= ~PCI_GLI_9755_LFCLK; value &= ~PCI_GLI_9755_LFCLK;
value &= ~PCI_GLI_9755_DMACLK; value &= ~PCI_GLI_9755_DMACLK;
pci_write_config_dword(pdev, PCI_GLI_9755_PECONF, value); pci_write_config_dword(pdev, PCI_GLI_9755_PECONF, value);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册