* [PATCH 0/2] mmc: sdhci-pci: Use ACPI to set max frequency of sdio host @ 2016-11-21 23:04 Zach Brown 2016-11-21 23:04 ` [PATCH 1/2] mmc: sdhci-pci: Add PCI ID for Intel byt sdio host controller sub-vended by NI Zach Brown ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: Zach Brown @ 2016-11-21 23:04 UTC (permalink / raw) To: ulf.hansson; +Cc: adrian.hunter, linux-mmc, linux-kernel, zach.brown On some boards, max SDIO frequency is limited by trace lengths and other layout choices. We would like a way to specify this limitation so the driver can behave accordingly. This patch set assumes that the limitation has been reported in an ACPI table which the driver can check to get the max frequency. The first patch creates a PCI ID and support for the Intel byt sdio where NI is the subvendor. The second patch uses the ACPI table to set f_max during the new ni_byt_sdio_probe_slot. Zach Brown (2): mmc: sdhci-pci: Add PCI ID for Intel byt sdio host controller sub-vended by NI mmc: sdhci-pci: Use ACPI to get max frequency for Intel byt sdio controller sub-vended by NI drivers/mmc/host/sdhci-pci-core.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) -- 2.7.4 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] mmc: sdhci-pci: Add PCI ID for Intel byt sdio host controller sub-vended by NI 2016-11-21 23:04 [PATCH 0/2] mmc: sdhci-pci: Use ACPI to set max frequency of sdio host Zach Brown @ 2016-11-21 23:04 ` Zach Brown 2016-11-21 23:04 ` [PATCH 2/2] mmc: sdhci-pci: Use ACPI to get max frequency for Intel byt sdio " Zach Brown 2016-11-22 8:27 ` [PATCH 0/2] mmc: sdhci-pci: Use ACPI to set max frequency of sdio host Ulf Hansson 2 siblings, 0 replies; 8+ messages in thread From: Zach Brown @ 2016-11-21 23:04 UTC (permalink / raw) To: ulf.hansson; +Cc: adrian.hunter, linux-mmc, linux-kernel, zach.brown Add PCI ID for Intel byt sdio host controller sub-vended by NI. The controller has different behavior because of the board layout NI puts it on. Signed-off-by: Zach Brown <zach.brown@ni.com> --- drivers/mmc/host/sdhci-pci-core.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c index 1d9e00a..9741505 100644 --- a/drivers/mmc/host/sdhci-pci-core.c +++ b/drivers/mmc/host/sdhci-pci-core.c @@ -375,6 +375,13 @@ static int byt_emmc_probe_slot(struct sdhci_pci_slot *slot) return 0; } +static int ni_byt_sdio_probe_slot(struct sdhci_pci_slot *slot) +{ + slot->host->mmc->caps |= MMC_CAP_POWER_OFF_CARD | MMC_CAP_NONREMOVABLE | + MMC_CAP_WAIT_WHILE_BUSY; + return 0; +} + static int byt_sdio_probe_slot(struct sdhci_pci_slot *slot) { slot->host->mmc->caps |= MMC_CAP_POWER_OFF_CARD | MMC_CAP_NONREMOVABLE | @@ -447,6 +454,15 @@ static const struct sdhci_pci_fixes sdhci_intel_byt_emmc = { .ops = &sdhci_intel_byt_ops, }; +static const struct sdhci_pci_fixes sdhci_ni_byt_sdio = { + .quirks = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC, + .quirks2 = SDHCI_QUIRK2_HOST_OFF_CARD_ON | + SDHCI_QUIRK2_PRESET_VALUE_BROKEN, + .allow_runtime_pm = true, + .probe_slot = ni_byt_sdio_probe_slot, + .ops = &sdhci_intel_byt_ops, +}; + static const struct sdhci_pci_fixes sdhci_intel_byt_sdio = { .quirks = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC, .quirks2 = SDHCI_QUIRK2_HOST_OFF_CARD_ON | @@ -1079,6 +1095,14 @@ static const struct pci_device_id pci_ids[] = { { .vendor = PCI_VENDOR_ID_INTEL, .device = PCI_DEVICE_ID_INTEL_BYT_SDIO, + .subvendor = PCI_VENDOR_ID_NI, + .subdevice = 0x7884, + .driver_data = (kernel_ulong_t)&sdhci_ni_byt_sdio, + }, + + { + .vendor = PCI_VENDOR_ID_INTEL, + .device = PCI_DEVICE_ID_INTEL_BYT_SDIO, .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, .driver_data = (kernel_ulong_t)&sdhci_intel_byt_sdio, -- 2.7.4 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] mmc: sdhci-pci: Use ACPI to get max frequency for Intel byt sdio controller sub-vended by NI 2016-11-21 23:04 [PATCH 0/2] mmc: sdhci-pci: Use ACPI to set max frequency of sdio host Zach Brown 2016-11-21 23:04 ` [PATCH 1/2] mmc: sdhci-pci: Add PCI ID for Intel byt sdio host controller sub-vended by NI Zach Brown @ 2016-11-21 23:04 ` Zach Brown 2016-11-22 6:46 ` Adrian Hunter 2016-11-22 8:24 ` Ulf Hansson 2016-11-22 8:27 ` [PATCH 0/2] mmc: sdhci-pci: Use ACPI to set max frequency of sdio host Ulf Hansson 2 siblings, 2 replies; 8+ messages in thread From: Zach Brown @ 2016-11-21 23:04 UTC (permalink / raw) To: ulf.hansson; +Cc: adrian.hunter, linux-mmc, linux-kernel, zach.brown On NI 9037 boards the max SDIO frequency is limited by trace lengths and other layout choices. The max SDIO frequency is stored in an ACPI table. The driver reads the ACPI entry MXFQ during sdio_probe_slot and sets the f_max field of the host. Signed-off-by: Nathan Sullivan <nathan.sullivan@ni.com> Reviewed-by: Jaeden Amero <jaeden.amero@ni.com> Reviewed-by: Josh Cartwright <joshc@ni.com> Signed-off-by: Zach Brown <zach.brown@ni.com> --- drivers/mmc/host/sdhci-pci-core.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c index 9741505..a855c97 100644 --- a/drivers/mmc/host/sdhci-pci-core.c +++ b/drivers/mmc/host/sdhci-pci-core.c @@ -27,6 +27,7 @@ #include <linux/pm_runtime.h> #include <linux/mmc/slot-gpio.h> #include <linux/mmc/sdhci-pci-data.h> +#include <linux/acpi.h> #include "sdhci.h" #include "sdhci-pci.h" @@ -377,6 +378,20 @@ static int byt_emmc_probe_slot(struct sdhci_pci_slot *slot) static int ni_byt_sdio_probe_slot(struct sdhci_pci_slot *slot) { +#ifdef CONFIG_ACPI + acpi_status status; + unsigned long long max_freq; + + status = acpi_evaluate_integer(ACPI_HANDLE(&slot->chip->pdev->dev), + "MXFQ", NULL, &max_freq); + if (ACPI_FAILURE(status)) { + dev_info(&slot->chip->pdev->dev, + "MXFQ not found in acpi table\n"); + return -EINVAL; + } + + slot->host->mmc->f_max = max_freq * 1000000; +#endif slot->host->mmc->caps |= MMC_CAP_POWER_OFF_CARD | MMC_CAP_NONREMOVABLE | MMC_CAP_WAIT_WHILE_BUSY; return 0; -- 2.7.4 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] mmc: sdhci-pci: Use ACPI to get max frequency for Intel byt sdio controller sub-vended by NI 2016-11-21 23:04 ` [PATCH 2/2] mmc: sdhci-pci: Use ACPI to get max frequency for Intel byt sdio " Zach Brown @ 2016-11-22 6:46 ` Adrian Hunter 2016-11-22 8:24 ` Ulf Hansson 1 sibling, 0 replies; 8+ messages in thread From: Adrian Hunter @ 2016-11-22 6:46 UTC (permalink / raw) To: Zach Brown, ulf.hansson; +Cc: linux-mmc, linux-kernel On 22/11/16 01:04, Zach Brown wrote: > On NI 9037 boards the max SDIO frequency is limited by trace lengths > and other layout choices. The max SDIO frequency is stored in an ACPI > table. > > The driver reads the ACPI entry MXFQ during sdio_probe_slot and sets the > f_max field of the host. > > Signed-off-by: Nathan Sullivan <nathan.sullivan@ni.com> > Reviewed-by: Jaeden Amero <jaeden.amero@ni.com> > Reviewed-by: Josh Cartwright <joshc@ni.com> > Signed-off-by: Zach Brown <zach.brown@ni.com> > --- > drivers/mmc/host/sdhci-pci-core.c | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c > index 9741505..a855c97 100644 > --- a/drivers/mmc/host/sdhci-pci-core.c > +++ b/drivers/mmc/host/sdhci-pci-core.c > @@ -27,6 +27,7 @@ > #include <linux/pm_runtime.h> > #include <linux/mmc/slot-gpio.h> > #include <linux/mmc/sdhci-pci-data.h> > +#include <linux/acpi.h> > > #include "sdhci.h" > #include "sdhci-pci.h" > @@ -377,6 +378,20 @@ static int byt_emmc_probe_slot(struct sdhci_pci_slot *slot) > > static int ni_byt_sdio_probe_slot(struct sdhci_pci_slot *slot) > { > +#ifdef CONFIG_ACPI > + acpi_status status; > + unsigned long long max_freq; > + > + status = acpi_evaluate_integer(ACPI_HANDLE(&slot->chip->pdev->dev), > + "MXFQ", NULL, &max_freq); > + if (ACPI_FAILURE(status)) { > + dev_info(&slot->chip->pdev->dev, Doesn't it error out the whole probe. So it should be dev_err() > + "MXFQ not found in acpi table\n"); > + return -EINVAL; > + } > + > + slot->host->mmc->f_max = max_freq * 1000000; > +#endif > slot->host->mmc->caps |= MMC_CAP_POWER_OFF_CARD | MMC_CAP_NONREMOVABLE | > MMC_CAP_WAIT_WHILE_BUSY; > return 0; > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] mmc: sdhci-pci: Use ACPI to get max frequency for Intel byt sdio controller sub-vended by NI 2016-11-21 23:04 ` [PATCH 2/2] mmc: sdhci-pci: Use ACPI to get max frequency for Intel byt sdio " Zach Brown 2016-11-22 6:46 ` Adrian Hunter @ 2016-11-22 8:24 ` Ulf Hansson 1 sibling, 0 replies; 8+ messages in thread From: Ulf Hansson @ 2016-11-22 8:24 UTC (permalink / raw) To: Zach Brown; +Cc: Adrian Hunter, linux-mmc, linux-kernel On 22 November 2016 at 00:04, Zach Brown <zach.brown@ni.com> wrote: > On NI 9037 boards the max SDIO frequency is limited by trace lengths > and other layout choices. The max SDIO frequency is stored in an ACPI > table. > > The driver reads the ACPI entry MXFQ during sdio_probe_slot and sets the > f_max field of the host. > > Signed-off-by: Nathan Sullivan <nathan.sullivan@ni.com> > Reviewed-by: Jaeden Amero <jaeden.amero@ni.com> > Reviewed-by: Josh Cartwright <joshc@ni.com> > Signed-off-by: Zach Brown <zach.brown@ni.com> > --- > drivers/mmc/host/sdhci-pci-core.c | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c > index 9741505..a855c97 100644 > --- a/drivers/mmc/host/sdhci-pci-core.c > +++ b/drivers/mmc/host/sdhci-pci-core.c > @@ -27,6 +27,7 @@ > #include <linux/pm_runtime.h> > #include <linux/mmc/slot-gpio.h> > #include <linux/mmc/sdhci-pci-data.h> > +#include <linux/acpi.h> > > #include "sdhci.h" > #include "sdhci-pci.h" > @@ -377,6 +378,20 @@ static int byt_emmc_probe_slot(struct sdhci_pci_slot *slot) > > static int ni_byt_sdio_probe_slot(struct sdhci_pci_slot *slot) > { > +#ifdef CONFIG_ACPI I am not a fan of these kind of "ifdefs" immediately in the code. I rather see them around functions. Either separate the code within the ifdefs here into it's own function (and call it from here) and make a stub function in case when CONFIG_ACPI is unset. Or, perhaps easier, have one version of ni_byt_sdio_probe_slot() when CONFIG_ACPI is set and another one when it's unset. > + acpi_status status; > + unsigned long long max_freq; > + > + status = acpi_evaluate_integer(ACPI_HANDLE(&slot->chip->pdev->dev), > + "MXFQ", NULL, &max_freq); > + if (ACPI_FAILURE(status)) { > + dev_info(&slot->chip->pdev->dev, > + "MXFQ not found in acpi table\n"); > + return -EINVAL; > + } > + > + slot->host->mmc->f_max = max_freq * 1000000; > +#endif > slot->host->mmc->caps |= MMC_CAP_POWER_OFF_CARD | MMC_CAP_NONREMOVABLE | > MMC_CAP_WAIT_WHILE_BUSY; > return 0; > -- > 2.7.4 > Kind regards Uffe ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/2] mmc: sdhci-pci: Use ACPI to set max frequency of sdio host 2016-11-21 23:04 [PATCH 0/2] mmc: sdhci-pci: Use ACPI to set max frequency of sdio host Zach Brown 2016-11-21 23:04 ` [PATCH 1/2] mmc: sdhci-pci: Add PCI ID for Intel byt sdio host controller sub-vended by NI Zach Brown 2016-11-21 23:04 ` [PATCH 2/2] mmc: sdhci-pci: Use ACPI to get max frequency for Intel byt sdio " Zach Brown @ 2016-11-22 8:27 ` Ulf Hansson 2016-11-22 16:37 ` Zach Brown 2 siblings, 1 reply; 8+ messages in thread From: Ulf Hansson @ 2016-11-22 8:27 UTC (permalink / raw) To: Zach Brown; +Cc: Adrian Hunter, linux-mmc, linux-kernel On 22 November 2016 at 00:04, Zach Brown <zach.brown@ni.com> wrote: > On some boards, max SDIO frequency is limited by trace lengths and other layout > choices. We would like a way to specify this limitation so the driver can > behave accordingly. > > This patch set assumes that the limitation has been reported in an ACPI table > which the driver can check to get the max frequency. > > The first patch creates a PCI ID and support for the Intel byt sdio where NI is > the subvendor. > > The second patch uses the ACPI table to set f_max during the new > ni_byt_sdio_probe_slot. > > > Zach Brown (2): > mmc: sdhci-pci: Add PCI ID for Intel byt sdio host controller > sub-vended by NI > mmc: sdhci-pci: Use ACPI to get max frequency for Intel byt sdio > controller sub-vended by NI > > drivers/mmc/host/sdhci-pci-core.c | 39 +++++++++++++++++++++++++++++++++++++++ > 1 file changed, 39 insertions(+) > > -- > 2.7.4 > Please try to not forget to bump the version number and to provide a history of the what changes between revisions. It makes life easier when reviewing and when I am about to apply patches. Kind regards Uffe ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/2] mmc: sdhci-pci: Use ACPI to set max frequency of sdio host 2016-11-22 8:27 ` [PATCH 0/2] mmc: sdhci-pci: Use ACPI to set max frequency of sdio host Ulf Hansson @ 2016-11-22 16:37 ` Zach Brown 2016-11-22 17:30 ` Ulf Hansson 0 siblings, 1 reply; 8+ messages in thread From: Zach Brown @ 2016-11-22 16:37 UTC (permalink / raw) To: Ulf Hansson; +Cc: Adrian Hunter, linux-mmc, linux-kernel On Tue, Nov 22, 2016 at 09:27:29AM +0100, Ulf Hansson wrote: > > Please try to not forget to bump the version number and to provide a > history of the what changes between revisions. It makes life easier > when reviewing and when I am about to apply patches. > Sorry, I'll make sure to include a history. When switching from RFC to PATCH should the version number of the PATCH be 1 or the lastest RFC version plus 1? Or does it not matter either way as long as the history is present? -- Zach ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/2] mmc: sdhci-pci: Use ACPI to set max frequency of sdio host 2016-11-22 16:37 ` Zach Brown @ 2016-11-22 17:30 ` Ulf Hansson 0 siblings, 0 replies; 8+ messages in thread From: Ulf Hansson @ 2016-11-22 17:30 UTC (permalink / raw) To: Zach Brown; +Cc: Adrian Hunter, linux-mmc, linux-kernel On 22 November 2016 at 17:37, Zach Brown <zach.brown@ni.com> wrote: > On Tue, Nov 22, 2016 at 09:27:29AM +0100, Ulf Hansson wrote: >> >> Please try to not forget to bump the version number and to provide a >> history of the what changes between revisions. It makes life easier >> when reviewing and when I am about to apply patches. >> > > Sorry, I'll make sure to include a history. > When switching from RFC to PATCH should the version number of the PATCH > be 1 or the lastest RFC version plus 1? Or does it not matter either way RFC + 1, that would be best. Although it doesn't matter that much. > as long as the history is present? Yes, this is the most important part. Kind regards Uffe ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2016-11-22 17:31 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2016-11-21 23:04 [PATCH 0/2] mmc: sdhci-pci: Use ACPI to set max frequency of sdio host Zach Brown 2016-11-21 23:04 ` [PATCH 1/2] mmc: sdhci-pci: Add PCI ID for Intel byt sdio host controller sub-vended by NI Zach Brown 2016-11-21 23:04 ` [PATCH 2/2] mmc: sdhci-pci: Use ACPI to get max frequency for Intel byt sdio " Zach Brown 2016-11-22 6:46 ` Adrian Hunter 2016-11-22 8:24 ` Ulf Hansson 2016-11-22 8:27 ` [PATCH 0/2] mmc: sdhci-pci: Use ACPI to set max frequency of sdio host Ulf Hansson 2016-11-22 16:37 ` Zach Brown 2016-11-22 17:30 ` Ulf Hansson
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).