diff mbox

[U-Boot,1/3] dm: ahci: Add a generic PCI-based AHCI driver

Message ID 1497706560-23385-1-git-send-email-bmeng.cn@gmail.com
State Changes Requested
Delegated to: Simon Glass
Headers show

Commit Message

Bin Meng June 17, 2017, 1:35 p.m. UTC
This adds support for PCI-based AHCI controller and enables it on
x86 by default.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
---

 drivers/ata/Kconfig    |  7 +++++++
 drivers/ata/Makefile   |  1 +
 drivers/ata/ahci-pci.c | 42 ++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 50 insertions(+)
 create mode 100644 drivers/ata/ahci-pci.c

Comments

Simon Glass June 21, 2017, 3:29 a.m. UTC | #1
Hi Bin,

On 17 June 2017 at 07:35, Bin Meng <bmeng.cn@gmail.com> wrote:
> This adds support for PCI-based AHCI controller and enables it on
> x86 by default.
>
> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
> ---
>
>  drivers/ata/Kconfig    |  7 +++++++
>  drivers/ata/Makefile   |  1 +
>  drivers/ata/ahci-pci.c | 42 ++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 50 insertions(+)
>  create mode 100644 drivers/ata/ahci-pci.c

I believe that if the device tree specifies this driver then it will
override the generic PCI probing done here. Is that right?

- Simon

>
> diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
> index 6427f1b..cc1c52c 100644
> --- a/drivers/ata/Kconfig
> +++ b/drivers/ata/Kconfig
> @@ -40,6 +40,13 @@ config DM_SCSI
>
>  menu "SATA/SCSI device support"
>
> +config AHCI_PCI
> +       bool "Support for PCI-based AHCI controller"
> +       default y if X86
> +       select DM_SCSI
> +       help
> +         Enables support for the PCI-based AHCI controller.
> +
>  config SATA_CEVA
>         bool "Ceva Sata controller"
>         depends on AHCI
> diff --git a/drivers/ata/Makefile b/drivers/ata/Makefile
> index c48184c..4e2de93 100644
> --- a/drivers/ata/Makefile
> +++ b/drivers/ata/Makefile
> @@ -7,6 +7,7 @@
>
>  obj-$(CONFIG_DWC_AHCI) += dwc_ahci.o
>  obj-$(CONFIG_AHCI) += ahci-uclass.o
> +obj-$(CONFIG_AHCI_PCI) += ahci-pci.o
>  obj-$(CONFIG_SCSI_AHCI) += ahci.o
>  obj-$(CONFIG_DWC_AHSATA) += dwc_ahsata.o
>  obj-$(CONFIG_FSL_SATA) += fsl_sata.o
> diff --git a/drivers/ata/ahci-pci.c b/drivers/ata/ahci-pci.c
> new file mode 100644
> index 0000000..f46fad8
> --- /dev/null
> +++ b/drivers/ata/ahci-pci.c
> @@ -0,0 +1,42 @@
> +/*
> + * Copyright (C) 2017, Bin Meng <bmeng.cn@gmail.com>
> + *
> + * SPDX-License-Identifier:    GPL-2.0+
> + */
> +
> +#include <common.h>
> +#include <ahci.h>
> +#include <dm.h>
> +#include <pci.h>
> +
> +static int ahci_pci_bind(struct udevice *dev)
> +{
> +       struct udevice *scsi_dev;
> +
> +       return ahci_bind_scsi(dev, &scsi_dev);
> +}
> +
> +static int ahci_pci_probe(struct udevice *dev)
> +{
> +       return ahci_probe_scsi(dev);
> +}
> +
> +static const struct udevice_id ahci_pci_ids[] = {
> +       { .compatible = "ahci-pci" },
> +       { }
> +};
> +
> +U_BOOT_DRIVER(ahci_pci) = {
> +       .name   = "ahci_pci",
> +       .id     = UCLASS_AHCI,
> +       .of_match = ahci_pci_ids,
> +       .bind   = ahci_pci_bind,
> +       .probe = ahci_pci_probe,
> +};
> +
> +static struct pci_device_id ahci_pci_supported[] = {
> +       { PCI_DEVICE_CLASS(PCI_CLASS_STORAGE_SATA_AHCI, ~0) },
> +       {},
> +};
> +
> +U_BOOT_PCI_DEVICE(ahci_pci, ahci_pci_supported);
> --
> 2.9.2
>
Bin Meng June 21, 2017, 5 a.m. UTC | #2
Hi Simon,

On Wed, Jun 21, 2017 at 11:29 AM, Simon Glass <sjg@chromium.org> wrote:
> Hi Bin,
>
> On 17 June 2017 at 07:35, Bin Meng <bmeng.cn@gmail.com> wrote:
>> This adds support for PCI-based AHCI controller and enables it on
>> x86 by default.
>>
>> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
>> ---
>>
>>  drivers/ata/Kconfig    |  7 +++++++
>>  drivers/ata/Makefile   |  1 +
>>  drivers/ata/ahci-pci.c | 42 ++++++++++++++++++++++++++++++++++++++++++
>>  3 files changed, 50 insertions(+)
>>  create mode 100644 drivers/ata/ahci-pci.c
>
> I believe that if the device tree specifies this driver then it will
> override the generic PCI probing done here. Is that right?
>

That's my understanding as well but I have no target to test. Can you
test that on Chromebook Link?

Regards,
Bin
Bin Meng July 7, 2017, 5:08 a.m. UTC | #3
Hi Simon,

On Wed, Jun 21, 2017 at 1:00 PM, Bin Meng <bmeng.cn@gmail.com> wrote:
> Hi Simon,
>
> On Wed, Jun 21, 2017 at 11:29 AM, Simon Glass <sjg@chromium.org> wrote:
>> Hi Bin,
>>
>> On 17 June 2017 at 07:35, Bin Meng <bmeng.cn@gmail.com> wrote:
>>> This adds support for PCI-based AHCI controller and enables it on
>>> x86 by default.
>>>
>>> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
>>> ---
>>>
>>>  drivers/ata/Kconfig    |  7 +++++++
>>>  drivers/ata/Makefile   |  1 +
>>>  drivers/ata/ahci-pci.c | 42 ++++++++++++++++++++++++++++++++++++++++++
>>>  3 files changed, 50 insertions(+)
>>>  create mode 100644 drivers/ata/ahci-pci.c
>>
>> I believe that if the device tree specifies this driver then it will
>> override the generic PCI probing done here. Is that right?
>>
>
> That's my understanding as well but I have no target to test. Can you
> test that on Chromebook Link?

Will this series be applied to u-boot-dm?

Regards,
Bin
Simon Glass July 13, 2017, 9:22 a.m. UTC | #4
Hi Bin,

On 6 July 2017 at 23:08, Bin Meng <bmeng.cn@gmail.com> wrote:
> Hi Simon,
>
> On Wed, Jun 21, 2017 at 1:00 PM, Bin Meng <bmeng.cn@gmail.com> wrote:
>> Hi Simon,
>>
>> On Wed, Jun 21, 2017 at 11:29 AM, Simon Glass <sjg@chromium.org> wrote:
>>> Hi Bin,
>>>
>>> On 17 June 2017 at 07:35, Bin Meng <bmeng.cn@gmail.com> wrote:
>>>> This adds support for PCI-based AHCI controller and enables it on
>>>> x86 by default.
>>>>
>>>> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
>>>> ---
>>>>
>>>>  drivers/ata/Kconfig    |  7 +++++++
>>>>  drivers/ata/Makefile   |  1 +
>>>>  drivers/ata/ahci-pci.c | 42 ++++++++++++++++++++++++++++++++++++++++++
>>>>  3 files changed, 50 insertions(+)
>>>>  create mode 100644 drivers/ata/ahci-pci.c
>>>
>>> I believe that if the device tree specifies this driver then it will
>>> override the generic PCI probing done here. Is that right?
>>>
>>
>> That's my understanding as well but I have no target to test. Can you
>> test that on Chromebook Link?
>
> Will this series be applied to u-boot-dm?

Yes, just got to testing this. Had some problems booting the device.

Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-on: chromebook_link
Tested-by: Simon Glass <sjg@chromium.org>

>
> Regards,
> Bin
Simon Glass July 28, 2017, 6:44 p.m. UTC | #5
Hi Bin,

On 13 July 2017 at 03:22, Simon Glass <sjg@chromium.org> wrote:
> Hi Bin,
>
> On 6 July 2017 at 23:08, Bin Meng <bmeng.cn@gmail.com> wrote:
>> Hi Simon,
>>
>> On Wed, Jun 21, 2017 at 1:00 PM, Bin Meng <bmeng.cn@gmail.com> wrote:
>>> Hi Simon,
>>>
>>> On Wed, Jun 21, 2017 at 11:29 AM, Simon Glass <sjg@chromium.org> wrote:
>>>> Hi Bin,
>>>>
>>>> On 17 June 2017 at 07:35, Bin Meng <bmeng.cn@gmail.com> wrote:
>>>>> This adds support for PCI-based AHCI controller and enables it on
>>>>> x86 by default.
>>>>>
>>>>> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
>>>>> ---
>>>>>
>>>>>  drivers/ata/Kconfig    |  7 +++++++
>>>>>  drivers/ata/Makefile   |  1 +
>>>>>  drivers/ata/ahci-pci.c | 42 ++++++++++++++++++++++++++++++++++++++++++
>>>>>  3 files changed, 50 insertions(+)
>>>>>  create mode 100644 drivers/ata/ahci-pci.c
>>>>
>>>> I believe that if the device tree specifies this driver then it will
>>>> override the generic PCI probing done here. Is that right?
>>>>
>>>
>>> That's my understanding as well but I have no target to test. Can you
>>> test that on Chromebook Link?
>>
>> Will this series be applied to u-boot-dm?
>
> Yes, just got to testing this. Had some problems booting the device.
>
> Reviewed-by: Simon Glass <sjg@chromium.org>
> Tested-on: chromebook_link
> Tested-by: Simon Glass <sjg@chromium.org>

Unfortunately this produces a build warning when applied to u-boot-dm/master:

+warning: (AHCI_PCI) selects DM_SCSI which has unmet direct
dependencies (BLK || BLK)

Can you please take a look? I'm sorry I did not get to it earlier.

Regards,
Simon
Bin Meng July 29, 2017, 5:43 a.m. UTC | #6
Hi Simon,

On Sat, Jul 29, 2017 at 2:44 AM, Simon Glass <sjg@chromium.org> wrote:
> Hi Bin,
>
> On 13 July 2017 at 03:22, Simon Glass <sjg@chromium.org> wrote:
>> Hi Bin,
>>
>> On 6 July 2017 at 23:08, Bin Meng <bmeng.cn@gmail.com> wrote:
>>> Hi Simon,
>>>
>>> On Wed, Jun 21, 2017 at 1:00 PM, Bin Meng <bmeng.cn@gmail.com> wrote:
>>>> Hi Simon,
>>>>
>>>> On Wed, Jun 21, 2017 at 11:29 AM, Simon Glass <sjg@chromium.org> wrote:
>>>>> Hi Bin,
>>>>>
>>>>> On 17 June 2017 at 07:35, Bin Meng <bmeng.cn@gmail.com> wrote:
>>>>>> This adds support for PCI-based AHCI controller and enables it on
>>>>>> x86 by default.
>>>>>>
>>>>>> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
>>>>>> ---
>>>>>>
>>>>>>  drivers/ata/Kconfig    |  7 +++++++
>>>>>>  drivers/ata/Makefile   |  1 +
>>>>>>  drivers/ata/ahci-pci.c | 42 ++++++++++++++++++++++++++++++++++++++++++
>>>>>>  3 files changed, 50 insertions(+)
>>>>>>  create mode 100644 drivers/ata/ahci-pci.c
>>>>>
>>>>> I believe that if the device tree specifies this driver then it will
>>>>> override the generic PCI probing done here. Is that right?
>>>>>
>>>>
>>>> That's my understanding as well but I have no target to test. Can you
>>>> test that on Chromebook Link?
>>>
>>> Will this series be applied to u-boot-dm?
>>
>> Yes, just got to testing this. Had some problems booting the device.
>>
>> Reviewed-by: Simon Glass <sjg@chromium.org>
>> Tested-on: chromebook_link
>> Tested-by: Simon Glass <sjg@chromium.org>
>
> Unfortunately this produces a build warning when applied to u-boot-dm/master:
>
> +warning: (AHCI_PCI) selects DM_SCSI which has unmet direct
> dependencies (BLK || BLK)
>
> Can you please take a look? I'm sorry I did not get to it earlier.

Sure I will take a look.

Regards,
Bin
diff mbox

Patch

diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
index 6427f1b..cc1c52c 100644
--- a/drivers/ata/Kconfig
+++ b/drivers/ata/Kconfig
@@ -40,6 +40,13 @@  config DM_SCSI
 
 menu "SATA/SCSI device support"
 
+config AHCI_PCI
+	bool "Support for PCI-based AHCI controller"
+	default y if X86
+	select DM_SCSI
+	help
+	  Enables support for the PCI-based AHCI controller.
+
 config SATA_CEVA
 	bool "Ceva Sata controller"
 	depends on AHCI
diff --git a/drivers/ata/Makefile b/drivers/ata/Makefile
index c48184c..4e2de93 100644
--- a/drivers/ata/Makefile
+++ b/drivers/ata/Makefile
@@ -7,6 +7,7 @@ 
 
 obj-$(CONFIG_DWC_AHCI) += dwc_ahci.o
 obj-$(CONFIG_AHCI) += ahci-uclass.o
+obj-$(CONFIG_AHCI_PCI) += ahci-pci.o
 obj-$(CONFIG_SCSI_AHCI) += ahci.o
 obj-$(CONFIG_DWC_AHSATA) += dwc_ahsata.o
 obj-$(CONFIG_FSL_SATA) += fsl_sata.o
diff --git a/drivers/ata/ahci-pci.c b/drivers/ata/ahci-pci.c
new file mode 100644
index 0000000..f46fad8
--- /dev/null
+++ b/drivers/ata/ahci-pci.c
@@ -0,0 +1,42 @@ 
+/*
+ * Copyright (C) 2017, Bin Meng <bmeng.cn@gmail.com>
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#include <common.h>
+#include <ahci.h>
+#include <dm.h>
+#include <pci.h>
+
+static int ahci_pci_bind(struct udevice *dev)
+{
+	struct udevice *scsi_dev;
+
+	return ahci_bind_scsi(dev, &scsi_dev);
+}
+
+static int ahci_pci_probe(struct udevice *dev)
+{
+	return ahci_probe_scsi(dev);
+}
+
+static const struct udevice_id ahci_pci_ids[] = {
+	{ .compatible = "ahci-pci" },
+	{ }
+};
+
+U_BOOT_DRIVER(ahci_pci) = {
+	.name	= "ahci_pci",
+	.id	= UCLASS_AHCI,
+	.of_match = ahci_pci_ids,
+	.bind	= ahci_pci_bind,
+	.probe = ahci_pci_probe,
+};
+
+static struct pci_device_id ahci_pci_supported[] = {
+	{ PCI_DEVICE_CLASS(PCI_CLASS_STORAGE_SATA_AHCI, ~0) },
+	{},
+};
+
+U_BOOT_PCI_DEVICE(ahci_pci, ahci_pci_supported);