All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v2 1/4] x86: acpi: Add CSRT description
@ 2019-07-14 16:23 Andy Shevchenko
  2019-07-14 16:23 ` [U-Boot] [PATCH v2 2/4] x86: acpi: Introduce a stub to generate CSRT Andy Shevchenko
                   ` (3 more replies)
  0 siblings, 4 replies; 12+ messages in thread
From: Andy Shevchenko @ 2019-07-14 16:23 UTC (permalink / raw)
  To: u-boot

Add CSRT [1] description as it provided in Linux kernel.

[1]: http://www.uefi.org/sites/default/files/resources/CSRT%20v2.pdf

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 arch/x86/include/asm/acpi_table.h | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/arch/x86/include/asm/acpi_table.h b/arch/x86/include/asm/acpi_table.h
index e3b65cff66..a70abd5d75 100644
--- a/arch/x86/include/asm/acpi_table.h
+++ b/arch/x86/include/asm/acpi_table.h
@@ -303,6 +303,37 @@ struct acpi_mcfg_mmconfig {
 /* ACPI global NVS structure */
 struct acpi_global_nvs;
 
+/* CSRT (Core System Resource Table) */
+struct acpi_csrt {
+	struct acpi_table_header header;
+};
+
+struct acpi_csrt_group {
+	u32 length;
+	u32 vendor_id;
+	u32 subvendor_id;
+	u16 device_id;
+	u16 subdevice_id;
+	u16 revision;
+	u16 reserved;
+	u32 shared_info_length;
+};
+
+struct acpi_csrt_shared_info {
+	u16 major_version;
+	u16 minor_version;
+	u32 mmio_base_low;
+	u32 mmio_base_high;
+	u32 gsi_interrupt;
+	u8 interrupt_polarity;
+	u8 interrupt_mode;
+	u8 num_channels;
+	u8 dma_address_width;
+	u16 base_request_line;
+	u16 num_handshake_signals;
+	u32 max_block_size;
+};
+
 /* DBG2 definitions are partially used for SPCR interface_type */
 
 /* Types for port_type field */
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v2 2/4] x86: acpi: Introduce a stub to generate CSRT
  2019-07-14 16:23 [U-Boot] [PATCH v2 1/4] x86: acpi: Add CSRT description Andy Shevchenko
@ 2019-07-14 16:23 ` Andy Shevchenko
  2019-07-18 14:27   ` Bin Meng
  2019-07-14 16:23 ` [U-Boot] [PATCH v2 3/4] x86: acpi: Enable ACPI companion for Intel iDMA 32-bit Andy Shevchenko
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 12+ messages in thread
From: Andy Shevchenko @ 2019-07-14 16:23 UTC (permalink / raw)
  To: u-boot

Here is a stub function that generates an empty CSRT. If the target platform
provides acpi_fill_csrt() function, it will be used to populate the table.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 arch/x86/include/asm/acpi_table.h |  1 +
 arch/x86/lib/acpi_table.c         | 32 +++++++++++++++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git a/arch/x86/include/asm/acpi_table.h b/arch/x86/include/asm/acpi_table.h
index a70abd5d75..02aea127c1 100644
--- a/arch/x86/include/asm/acpi_table.h
+++ b/arch/x86/include/asm/acpi_table.h
@@ -401,6 +401,7 @@ u32 acpi_fill_madt(u32 current);
 int acpi_create_mcfg_mmconfig(struct acpi_mcfg_mmconfig *mmconfig, u32 base,
 			      u16 seg_nr, u8 start, u8 end);
 u32 acpi_fill_mcfg(u32 current);
+u32 acpi_fill_csrt(u32 current);
 void acpi_create_gnvs(struct acpi_global_nvs *gnvs);
 ulong write_acpi_tables(ulong start);
 
diff --git a/arch/x86/lib/acpi_table.c b/arch/x86/lib/acpi_table.c
index e80e968b50..efc4edf801 100644
--- a/arch/x86/lib/acpi_table.c
+++ b/arch/x86/lib/acpi_table.c
@@ -337,6 +337,30 @@ static void acpi_create_mcfg(struct acpi_mcfg *mcfg)
 	header->checksum = table_compute_checksum((void *)mcfg, header->length);
 }
 
+__weak u32 acpi_fill_csrt(u32 current)
+{
+	return current;
+}
+
+static void acpi_create_csrt(struct acpi_csrt *csrt)
+{
+	struct acpi_table_header *header = &(csrt->header);
+	u32 current = (u32)csrt + sizeof(struct acpi_csrt);
+
+	memset((void *)csrt, 0, sizeof(struct acpi_csrt));
+
+	/* Fill out header fields */
+	acpi_fill_header(header, "CSRT");
+	header->length = sizeof(struct acpi_csrt);
+	header->revision = 0;
+
+	current = acpi_fill_csrt(current);
+
+	/* (Re)calculate length and checksum */
+	header->length = current - (u32)csrt;
+	header->checksum = table_compute_checksum((void *)csrt, header->length);
+}
+
 static void acpi_create_spcr(struct acpi_spcr *spcr)
 {
 	struct acpi_table_header *header = &(spcr->header);
@@ -440,6 +464,7 @@ ulong write_acpi_tables(ulong start)
 	struct acpi_fadt *fadt;
 	struct acpi_mcfg *mcfg;
 	struct acpi_madt *madt;
+	struct acpi_csrt *csrt;
 	struct acpi_spcr *spcr;
 	int i;
 
@@ -529,6 +554,13 @@ ulong write_acpi_tables(ulong start)
 	acpi_add_table(rsdp, mcfg);
 	current = ALIGN(current, 16);
 
+	debug("ACPI:    * CSRT\n");
+	csrt = (struct acpi_csrt *)current;
+	acpi_create_csrt(csrt);
+	current += csrt->header.length;
+	acpi_add_table(rsdp, csrt);
+	current = ALIGN(current, 16);
+
 	debug("ACPI:    * SPCR\n");
 	spcr = (struct acpi_spcr *)current;
 	acpi_create_spcr(spcr);
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v2 3/4] x86: acpi: Enable ACPI companion for Intel iDMA 32-bit
  2019-07-14 16:23 [U-Boot] [PATCH v2 1/4] x86: acpi: Add CSRT description Andy Shevchenko
  2019-07-14 16:23 ` [U-Boot] [PATCH v2 2/4] x86: acpi: Introduce a stub to generate CSRT Andy Shevchenko
@ 2019-07-14 16:23 ` Andy Shevchenko
  2019-07-18 14:27   ` Bin Meng
  2019-07-14 16:23 ` [U-Boot] [PATCH v2 4/4] x86: tangier: Populate CSRT for shared DMA controller Andy Shevchenko
  2019-07-18 14:26 ` [U-Boot] [PATCH v2 1/4] x86: acpi: Add CSRT description Bin Meng
  3 siblings, 1 reply; 12+ messages in thread
From: Andy Shevchenko @ 2019-07-14 16:23 UTC (permalink / raw)
  To: u-boot

ACPI has a capability to specify DMA parameters for DMA channel consumers.
To enable this for Intel Edison, describe GP DMA device in ACPI table
in order to get an ACPI handle to it in OS.

This works in conjunction with CSRT, which must be in align with DSDT.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 .../asm/arch-tangier/acpi/southcluster.asl    | 22 +++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/arch/x86/include/asm/arch-tangier/acpi/southcluster.asl b/arch/x86/include/asm/arch-tangier/acpi/southcluster.asl
index 241d4ac801..0ec195b51b 100644
--- a/arch/x86/include/asm/arch-tangier/acpi/southcluster.asl
+++ b/arch/x86/include/asm/arch-tangier/acpi/southcluster.asl
@@ -431,6 +431,28 @@ Device (PCI0)
             }
         }
     }
+
+    Device (GDMA)
+    {
+        Name (_ADR, 0x00150000)
+        Name (_HID, "808611A2")
+        Name (_UID, Zero)
+
+        Method (_STA, 0, NotSerialized)
+        {
+            Return (STA_VISIBLE)
+        }
+
+        Method (_CRS, 0, Serialized)
+        {
+            Name (RBUF, ResourceTemplate ()
+            {
+                    Memory32Fixed(ReadWrite, 0xFF192000, 0x00001000)
+                    Interrupt(ResourceConsumer, Level, ActiveHigh, Shared, ,, ) { 32 }
+            })
+            Return (RBUF)
+        }
+    }
 }
 
 Device (FLIS)
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v2 4/4] x86: tangier: Populate CSRT for shared DMA controller
  2019-07-14 16:23 [U-Boot] [PATCH v2 1/4] x86: acpi: Add CSRT description Andy Shevchenko
  2019-07-14 16:23 ` [U-Boot] [PATCH v2 2/4] x86: acpi: Introduce a stub to generate CSRT Andy Shevchenko
  2019-07-14 16:23 ` [U-Boot] [PATCH v2 3/4] x86: acpi: Enable ACPI companion for Intel iDMA 32-bit Andy Shevchenko
@ 2019-07-14 16:23 ` Andy Shevchenko
  2019-07-18 14:27   ` Bin Meng
  2019-07-18 14:26 ` [U-Boot] [PATCH v2 1/4] x86: acpi: Add CSRT description Bin Meng
  3 siblings, 1 reply; 12+ messages in thread
From: Andy Shevchenko @ 2019-07-14 16:23 UTC (permalink / raw)
  To: u-boot

Intel Tangier has a shared DMA controller that, according to Microsoft spec,
has to be presented in CSRT table.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 arch/x86/cpu/tangier/acpi.c | 38 +++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/arch/x86/cpu/tangier/acpi.c b/arch/x86/cpu/tangier/acpi.c
index 0e4f961c53..61b2642aa9 100644
--- a/arch/x86/cpu/tangier/acpi.c
+++ b/arch/x86/cpu/tangier/acpi.c
@@ -68,6 +68,44 @@ u32 acpi_fill_mcfg(u32 current)
 	return current;
 }
 
+static u32 acpi_fill_csrt_dma(struct acpi_csrt_group *grp)
+{
+	struct acpi_csrt_shared_info *si = (struct acpi_csrt_shared_info *)&grp[1];
+
+	/* Fill the Resource Group with Shared Information attached */
+	memset(grp, 0, sizeof(*grp));
+	grp->shared_info_length = sizeof(struct acpi_csrt_shared_info);
+	grp->length = sizeof(struct acpi_csrt_group) + grp->shared_info_length;
+	/* TODO: All values below should come from U-Boot DT somehow */
+	sprintf((char *)&grp->vendor_id, "%04X", 0x8086);
+	grp->device_id = 0x11a2;
+
+	/* Fill the Resource Group Shared Information */
+	memset(si, 0, sizeof(*si));
+	si->major_version = 1;
+	si->minor_version = 0;
+	/* TODO: All values below should come from U-Boot DT somehow */
+	si->mmio_base_low = 0xff192000;
+	si->mmio_base_high = 0;
+	si->gsi_interrupt = 32;
+	si->interrupt_polarity = 1;
+	si->interrupt_mode = 0;
+	si->num_channels = 8;
+	si->dma_address_width = 32;
+	si->base_request_line = 0;
+	si->num_handshake_signals = 16;
+	si->max_block_size = 0x20000;
+
+	return grp->length;
+}
+
+u32 acpi_fill_csrt(u32 current)
+{
+	current += acpi_fill_csrt_dma((struct acpi_csrt_group *)current);
+
+	return current;
+}
+
 void acpi_create_gnvs(struct acpi_global_nvs *gnvs)
 {
 	struct udevice *dev;
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v2 1/4] x86: acpi: Add CSRT description
  2019-07-14 16:23 [U-Boot] [PATCH v2 1/4] x86: acpi: Add CSRT description Andy Shevchenko
                   ` (2 preceding siblings ...)
  2019-07-14 16:23 ` [U-Boot] [PATCH v2 4/4] x86: tangier: Populate CSRT for shared DMA controller Andy Shevchenko
@ 2019-07-18 14:26 ` Bin Meng
  2019-07-19  9:48   ` Bin Meng
  3 siblings, 1 reply; 12+ messages in thread
From: Bin Meng @ 2019-07-18 14:26 UTC (permalink / raw)
  To: u-boot

On Mon, Jul 15, 2019 at 12:24 AM Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:
>
> Add CSRT [1] description as it provided in Linux kernel.
>
> [1]: http://www.uefi.org/sites/default/files/resources/CSRT%20v2.pdf
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
>  arch/x86/include/asm/acpi_table.h | 31 +++++++++++++++++++++++++++++++
>  1 file changed, 31 insertions(+)
>

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

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v2 2/4] x86: acpi: Introduce a stub to generate CSRT
  2019-07-14 16:23 ` [U-Boot] [PATCH v2 2/4] x86: acpi: Introduce a stub to generate CSRT Andy Shevchenko
@ 2019-07-18 14:27   ` Bin Meng
  2019-07-19  9:48     ` Bin Meng
  0 siblings, 1 reply; 12+ messages in thread
From: Bin Meng @ 2019-07-18 14:27 UTC (permalink / raw)
  To: u-boot

On Mon, Jul 15, 2019 at 12:24 AM Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:
>
> Here is a stub function that generates an empty CSRT. If the target platform
> provides acpi_fill_csrt() function, it will be used to populate the table.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
>  arch/x86/include/asm/acpi_table.h |  1 +
>  arch/x86/lib/acpi_table.c         | 32 +++++++++++++++++++++++++++++++
>  2 files changed, 33 insertions(+)
>

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

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v2 3/4] x86: acpi: Enable ACPI companion for Intel iDMA 32-bit
  2019-07-14 16:23 ` [U-Boot] [PATCH v2 3/4] x86: acpi: Enable ACPI companion for Intel iDMA 32-bit Andy Shevchenko
@ 2019-07-18 14:27   ` Bin Meng
  2019-07-19  9:48     ` Bin Meng
  0 siblings, 1 reply; 12+ messages in thread
From: Bin Meng @ 2019-07-18 14:27 UTC (permalink / raw)
  To: u-boot

On Mon, Jul 15, 2019 at 12:24 AM Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:
>
> ACPI has a capability to specify DMA parameters for DMA channel consumers.
> To enable this for Intel Edison, describe GP DMA device in ACPI table
> in order to get an ACPI handle to it in OS.
>
> This works in conjunction with CSRT, which must be in align with DSDT.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
>  .../asm/arch-tangier/acpi/southcluster.asl    | 22 +++++++++++++++++++
>  1 file changed, 22 insertions(+)
>

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

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v2 4/4] x86: tangier: Populate CSRT for shared DMA controller
  2019-07-14 16:23 ` [U-Boot] [PATCH v2 4/4] x86: tangier: Populate CSRT for shared DMA controller Andy Shevchenko
@ 2019-07-18 14:27   ` Bin Meng
  2019-07-19  9:48     ` Bin Meng
  0 siblings, 1 reply; 12+ messages in thread
From: Bin Meng @ 2019-07-18 14:27 UTC (permalink / raw)
  To: u-boot

On Mon, Jul 15, 2019 at 12:24 AM Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:
>
> Intel Tangier has a shared DMA controller that, according to Microsoft spec,
> has to be presented in CSRT table.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
>  arch/x86/cpu/tangier/acpi.c | 38 +++++++++++++++++++++++++++++++++++++
>  1 file changed, 38 insertions(+)
>

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

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v2 1/4] x86: acpi: Add CSRT description
  2019-07-18 14:26 ` [U-Boot] [PATCH v2 1/4] x86: acpi: Add CSRT description Bin Meng
@ 2019-07-19  9:48   ` Bin Meng
  0 siblings, 0 replies; 12+ messages in thread
From: Bin Meng @ 2019-07-19  9:48 UTC (permalink / raw)
  To: u-boot

On Thu, Jul 18, 2019 at 10:26 PM Bin Meng <bmeng.cn@gmail.com> wrote:
>
> On Mon, Jul 15, 2019 at 12:24 AM Andy Shevchenko
> <andriy.shevchenko@linux.intel.com> wrote:
> >
> > Add CSRT [1] description as it provided in Linux kernel.
> >
> > [1]: http://www.uefi.org/sites/default/files/resources/CSRT%20v2.pdf
> >
> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > ---
> >  arch/x86/include/asm/acpi_table.h | 31 +++++++++++++++++++++++++++++++
> >  1 file changed, 31 insertions(+)
> >
>
> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

applied to u-boot-x86, thanks!

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v2 2/4] x86: acpi: Introduce a stub to generate CSRT
  2019-07-18 14:27   ` Bin Meng
@ 2019-07-19  9:48     ` Bin Meng
  0 siblings, 0 replies; 12+ messages in thread
From: Bin Meng @ 2019-07-19  9:48 UTC (permalink / raw)
  To: u-boot

On Thu, Jul 18, 2019 at 10:27 PM Bin Meng <bmeng.cn@gmail.com> wrote:
>
> On Mon, Jul 15, 2019 at 12:24 AM Andy Shevchenko
> <andriy.shevchenko@linux.intel.com> wrote:
> >
> > Here is a stub function that generates an empty CSRT. If the target platform
> > provides acpi_fill_csrt() function, it will be used to populate the table.
> >
> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > ---
> >  arch/x86/include/asm/acpi_table.h |  1 +
> >  arch/x86/lib/acpi_table.c         | 32 +++++++++++++++++++++++++++++++
> >  2 files changed, 33 insertions(+)
> >
>
> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

applied to u-boot-x86, thanks!

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v2 3/4] x86: acpi: Enable ACPI companion for Intel iDMA 32-bit
  2019-07-18 14:27   ` Bin Meng
@ 2019-07-19  9:48     ` Bin Meng
  0 siblings, 0 replies; 12+ messages in thread
From: Bin Meng @ 2019-07-19  9:48 UTC (permalink / raw)
  To: u-boot

On Thu, Jul 18, 2019 at 10:27 PM Bin Meng <bmeng.cn@gmail.com> wrote:
>
> On Mon, Jul 15, 2019 at 12:24 AM Andy Shevchenko
> <andriy.shevchenko@linux.intel.com> wrote:
> >
> > ACPI has a capability to specify DMA parameters for DMA channel consumers.
> > To enable this for Intel Edison, describe GP DMA device in ACPI table
> > in order to get an ACPI handle to it in OS.
> >
> > This works in conjunction with CSRT, which must be in align with DSDT.
> >
> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > ---
> >  .../asm/arch-tangier/acpi/southcluster.asl    | 22 +++++++++++++++++++
> >  1 file changed, 22 insertions(+)
> >
>
> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

applied to u-boot-x86, thanks!

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [U-Boot] [PATCH v2 4/4] x86: tangier: Populate CSRT for shared DMA controller
  2019-07-18 14:27   ` Bin Meng
@ 2019-07-19  9:48     ` Bin Meng
  0 siblings, 0 replies; 12+ messages in thread
From: Bin Meng @ 2019-07-19  9:48 UTC (permalink / raw)
  To: u-boot

On Thu, Jul 18, 2019 at 10:27 PM Bin Meng <bmeng.cn@gmail.com> wrote:
>
> On Mon, Jul 15, 2019 at 12:24 AM Andy Shevchenko
> <andriy.shevchenko@linux.intel.com> wrote:
> >
> > Intel Tangier has a shared DMA controller that, according to Microsoft spec,
> > has to be presented in CSRT table.
> >
> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > ---
> >  arch/x86/cpu/tangier/acpi.c | 38 +++++++++++++++++++++++++++++++++++++
> >  1 file changed, 38 insertions(+)
> >
>
> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

applied to u-boot-x86, thanks!

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2019-07-19  9:48 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-14 16:23 [U-Boot] [PATCH v2 1/4] x86: acpi: Add CSRT description Andy Shevchenko
2019-07-14 16:23 ` [U-Boot] [PATCH v2 2/4] x86: acpi: Introduce a stub to generate CSRT Andy Shevchenko
2019-07-18 14:27   ` Bin Meng
2019-07-19  9:48     ` Bin Meng
2019-07-14 16:23 ` [U-Boot] [PATCH v2 3/4] x86: acpi: Enable ACPI companion for Intel iDMA 32-bit Andy Shevchenko
2019-07-18 14:27   ` Bin Meng
2019-07-19  9:48     ` Bin Meng
2019-07-14 16:23 ` [U-Boot] [PATCH v2 4/4] x86: tangier: Populate CSRT for shared DMA controller Andy Shevchenko
2019-07-18 14:27   ` Bin Meng
2019-07-19  9:48     ` Bin Meng
2019-07-18 14:26 ` [U-Boot] [PATCH v2 1/4] x86: acpi: Add CSRT description Bin Meng
2019-07-19  9:48   ` Bin Meng

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.