Discussion:
[edk2] [MinnowBoard] UART and COM ports problem
Anteja Vuk Macek
2015-06-30 05:33:25 UTC
Permalink
Hi Ivan,

Thank you for advice, but I want two COM ports. I found LPC_DEV.ASL
ACPI_table in Vlv2TbltDeviceRefCodePkg where was ASL code for the device
IUR3 HID - PNP0501.

Device(IUR3) // Internal UART
{
Name(_HID, EISAID("PNP0501"))

Name(_UID,1)

// Status Method for internal UART

Method(_STA,0,Serialized)
{
// Only report resources to the OS if internal UART is
// not set to Disabled in BIOS Setup.

If(LEqual(USEL,0))
{
If(LEqual(PU1E,1))
{
Store(1,UI3E) // Enable IRQ3 for UART
Store(1,UI4E) // Enable IRQ4 for UART
Store(1,C1EN) // Enable UART
Return(0x000F)
}
}

Return(0x0000)
}

// Disable Method for internal UART

Method(_DIS,0,Serialized)
{
Store(0,UI3E)
Store(0,UI4E)
Store(0,C1EN)
}

// Current Resource Setting Method for internal UART

Method(_CRS,0,Serialized)
{
// Create the Buffer that stores the Resources to
// be returned.

Name(BUF0,ResourceTemplate()
{
IO(Decode16,0x03F8,0x03F8,0x01,0x08)
IRQNoFlags() {3}
})

Name(BUF1,ResourceTemplate()
{
IO(Decode16,0x03F8,0x03F8,0x01,0x08)
IRQNoFlags() {4}
})

If (LLessEqual(SRID, 0x04))
{
Return(BUF0)
} Else
{
Return(BUF1)
}
}
}

I want to make second IUR device. I don't know value of variables : SEL,
PU1E, UI3E, UI4E and C1EN and where it was defined. Also, I would like
to know what I need to change to write ASL code for second IURx device.
Best regards,

Anteja
Anteja,
As far as I understand we have 2 UARTs but only one follows legacy
COM-interface and the other one does not so Windows inbox driver serial.sys
does not work with it so you only have one COM port.
(Basically COMx is just a symbolic link serial.sys creates to point to
its device object, so if it does not service a device like in the case of
the second HSUART, then it is not a COM-port).
f you need to use COM-port and have ability to debug, I'd suggest to use
Ethernet for debugging and free up COM1 for your other needs.
I hope this helps.
Best regards,
van Rouzanov.
Message: 3
Date: Wed, 24 Jun 2015 10:06:02 +0200
Subject: [MinnowBoard] UART and COM ports problem
<
Content-Type: text/plain; charset="utf-8"
Hi all,
On MinnowMax I work on Windows 8.1 with UART.
In BIOS Setup I enable UART. In LSS & SCC Configuration menu in BIOS
Setup I enable : LSS HSUART #1 Support , LSS HSUART #1 FlowCtrl , LSS
HSUART #2 Support , and LSS HSUART #2 FlowCtrl . But I don't know if I
need to in BIOS Setup in Miscellaneous configuration set UART >interface
on Super IO UART, for now I set Internal UART for UART interface.
I install Intel driver (
https://downloadcenter.intel.com/download/24228/Intel-embedded-drivers-for-Windows-8-1-32-bit-
)
and I got two UART controllers.
Problem is that I have only one COM port ( COM1) and it is for
debugging. I looking in inf (iaiouart.inf ) file of driver for which
device is , and I find APCI/INT33BC device. The COM1 is device
APCI/PNP0501 .
What I need to do to get COM 2 device ? I saw BaseSerialPortLib 16550
module in MdeModulePkg/Library for what it is this module. Need I add
some module for UART or Serial port in fdf (PlatformPkg.fdf ) file to get
COM2 device, or add COM2 in ACPI_table? Where I can find ACPI_table in
source of firmware?
Best regards,
Anteja
Darren Hart
2015-06-30 16:12:49 UTC
Permalink
The device you mention here (IUR3) is the debug port of the E3825 SoC. It is
routed to the 6 pin header on the MinnowBoard MAX. The other two devices are
HSUARTs hung off LPSS. These can be enumerated via ACPI or via PCI. One of
these has all the RS232 signals (UART1), while the other only routes RX and
TX (UART2) (but I thought that was a routing decision rather than a silicon
limitation - will have to look that up in the data sheet to be sure).

Ivan, have we previously documented that that only LPSS UART1 is compatible
with Windows?
--
Darren Hart
Intel Open Source Technology Center
Post by Anteja Vuk Macek
Hi Ivan,
Thank you for advice, but I want two COM ports. I found LPC_DEV.ASL
ACPI_table in Vlv2TbltDeviceRefCodePkg where was ASL code for the device IUR3
HID - PNP0501.
Device(IUR3) // Internal UART
{
Name(_HID, EISAID("PNP0501"))
Name(_UID,1)
// Status Method for internal UART
Method(_STA,0,Serialized)
{
// Only report resources to the OS if internal UART is
// not set to Disabled in BIOS Setup.
If(LEqual(USEL,0))
{
If(LEqual(PU1E,1))
{
Store(1,UI3E) // Enable IRQ3 for UART
Store(1,UI4E) // Enable IRQ4 for UART
Store(1,C1EN) // Enable UART
Return(0x000F)
}
}
Return(0x0000)
}
// Disable Method for internal UART
Method(_DIS,0,Serialized)
{
Store(0,UI3E)
Store(0,UI4E)
Store(0,C1EN)
}
// Current Resource Setting Method for internal UART
Method(_CRS,0,Serialized)
{
// Create the Buffer that stores the Resources to
// be returned.
Name(BUF0,ResourceTemplate()
{
IO(Decode16,0x03F8,0x03F8,0x01,0x08)
IRQNoFlags() {3}
})
Name(BUF1,ResourceTemplate()
{
IO(Decode16,0x03F8,0x03F8,0x01,0x08)
IRQNoFlags() {4}
})
If (LLessEqual(SRID, 0x04))
{
Return(BUF0)
} Else
{
Return(BUF1)
}
}
}
I want to make second IUR device. I don't know value of variables : SEL,
PU1E, UI3E, UI4E and C1EN and where it was defined. Also, I would like to
know what I need to change to write ASL code for second IURx device.
Best regards,
Anteja
Anteja,
As far as I understand we have 2 UARTs but only one follows legacy
COM-interface and the other one does not so Windows inbox driver serial.sys
does not work with it so you only have one COM port.
(Basically COMx is just a symbolic link serial.sys creates to point to its
device object, so if it does not service a device like in the case of the
second HSUART, then it is not a COM-port).
f you need to use COM-port and have ability to debug, I'd suggest to use
Ethernet for debugging and free up COM1 for your other needs.
I hope this helps.
Best regards,
van Rouzanov.
Message: 3
Date: Wed, 24 Jun 2015 10:06:02 +0200
Subject: [MinnowBoard] UART and COM ports problem
om> >
Content-Type: text/plain; charset="utf-8"
Hi all,
On MinnowMax I work on Windows 8.1 with UART.
In BIOS Setup I enable UART. In LSS & SCC Configuration menu in BIOS
Setup I enable : LSS HSUART #1 Support , LSS HSUART #1 FlowCtrl , LSS
HSUART #2 Support , and LSS HSUART #2 FlowCtrl . But I don't know if I
need to in BIOS Setup in Miscellaneous configuration set UART >interface
on Super IO UART, for now I set Internal UART for UART interface.
I install Intel driver (
https://downloadcenter.intel.com/download/24228/Intel-embedded-drivers-for-
Windows-8-1-32-bit-
)
and I got two UART controllers.
Problem is that I have only one COM port ( COM1) and it is for debugging.
I looking in inf (iaiouart.inf ) file of driver for which device is , and I
find APCI/INT33BC device. The COM1 is device
APCI/PNP0501 .
What I need to do to get COM 2 device ? I saw BaseSerialPortLib 16550
module in MdeModulePkg/Library for what it is this module. Need I add some
module for UART or Serial port in fdf (PlatformPkg.fdf ) file to get
COM2 device, or add COM2 in ACPI_table? Where I can find ACPI_table in
source of firmware?
Best regards,
Anteja
_______________________________________________ elinux-MinnowBoard mailing
http://lists.elinux.org/mailman/listinfo/elinux-minnowboard
Anteja Vuk Macek
2015-07-01 12:42:34 UTC
Permalink
Hello,



I tried with IOCTL, but problem was I couldn't open driver file with
CreateFile method because I couldn't find path ( something like this
\\\\.\\PCI#VEN_8086&DEV_0F0E&SUBSYS_72708086&REV_0C#3&11583659&0&F5#{badc33d6-be37-4372-b90e-bbf2d986b0eb}
). For UART I have iaiouart.sys driver and I want to know if this driver
return SerCx framework. I find for Windows 8 UART driver ( uart16550pc.sys
), but I don't know if I need some kind of bridge driver between two
drivers.

Best regards,

Anteja
Post by Anteja Vuk Macek
Post by Anteja Vuk Macek
Hi Ivan,
Thank you for advice, but I want two COM ports. I found LPC_DEV.ASL
ACPI_table in Vlv2TbltDeviceRefCodePkg where was ASL code for the device
IUR3 HID - PNP0501.
Device(IUR3) // Internal UART
{
Name(_HID, EISAID("PNP0501"))
Name(_UID,1)
// Status Method for internal UART
Method(_STA,0,Serialized)
{
// Only report resources to the OS if internal UART is
// not set to Disabled in BIOS Setup.
If(LEqual(USEL,0))
{
If(LEqual(PU1E,1))
{
Store(1,UI3E) // Enable IRQ3 for UART
Store(1,UI4E) // Enable IRQ4 for UART
Store(1,C1EN) // Enable UART
Return(0x000F)
}
}
Return(0x0000)
}
// Disable Method for internal UART
Method(_DIS,0,Serialized)
{
Store(0,UI3E)
Store(0,UI4E)
Store(0,C1EN)
}
// Current Resource Setting Method for internal UART
Method(_CRS,0,Serialized)
{
// Create the Buffer that stores the Resources to
// be returned.
Name(BUF0,ResourceTemplate()
{
IO(Decode16,0x03F8,0x03F8,0x01,0x08)
IRQNoFlags() {3}
})
Name(BUF1,ResourceTemplate()
{
IO(Decode16,0x03F8,0x03F8,0x01,0x08)
IRQNoFlags() {4}
})
If (LLessEqual(SRID, 0x04))
{
Return(BUF0)
} Else
{
Return(BUF1)
}
}
}
I want to make second IUR device. I don't know value of variables : SEL,
PU1E, UI3E, UI4E and C1EN and where it was defined. Also, I would like
to know what I need to change to write ASL code for second IURx device.
Best regards,
Anteja
Post by Anteja Vuk Macek
Anteja,
As far as I understand we have 2 UARTs but only one follows legacy
COM-interface and the other one does not so Windows inbox driver serial.sys
does not work with it so you only have one COM port.
(Basically COMx is just a symbolic link serial.sys creates to point to
its device object, so if it does not service a device like in the case of
the second HSUART, then it is not a COM-port).
f you need to use COM-port and have ability to debug, I'd suggest to use
Ethernet for debugging and free up COM1 for your other needs.
I hope this helps.
Best regards,
van Rouzanov.
Message: 3
Date: Wed, 24 Jun 2015 10:06:02 +0200
Subject: [MinnowBoard] UART and COM ports problem
<
Content-Type: text/plain; charset="utf-8"
Hi all,
On MinnowMax I work on Windows 8.1 with UART.
In BIOS Setup I enable UART. In LSS & SCC Configuration menu in BIOS
Setup I enable : LSS HSUART #1 Support , LSS HSUART #1 FlowCtrl , LSS
HSUART #2 Support , and LSS HSUART #2 FlowCtrl . But I don't know if I
need to in BIOS Setup in Miscellaneous configuration set UART >interface
on Super IO UART, for now I set Internal UART for UART interface.
I install Intel driver (
https://downloadcenter.intel.com/download/24228/Intel-embedded-drivers-for-Windows-8-1-32-bit-
)
and I got two UART controllers.
Problem is that I have only one COM port ( COM1) and it is for
debugging. I looking in inf (iaiouart.inf ) file of driver for which
device is , and I find APCI/INT33BC device. The COM1 is device
APCI/PNP0501 .
What I need to do to get COM 2 device ? I saw BaseSerialPortLib 16550
module in MdeModulePkg/Library for what it is this module. Need I add
some module for UART or Serial port in fdf (PlatformPkg.fdf ) file to get
COM2 device, or add COM2 in ACPI_table? Where I can find ACPI_table in
source of firmware?
Best regards,
Anteja
Loading...