On Mon, Nov 14, 2016 at 07:29:53PM +0800, Heyi Guo wrote:
Check the value of register(0xD000E014) to decide whether this is 50MHZ or 66MHZ board attached. Configure register PHY_CTRL to support 50MHZ or 66MHZ. Default Configure of PHY_CTRL is the configure of 50MHZ, if 66MHZ board attached, change the value of PHY_CTRL.
Excellent shows exactly why we want to use ACPI, let the kernel be generic.
Review-by: Graeme Gregory graeme.gregory@linaro.org
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Xiang Chen chenxiang66@Hisilicon.com
.../Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl | 122 ++++++++++++++++++++- 1 file changed, 121 insertions(+), 1 deletion(-)
diff --git a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl index e19ea18..9944a50 100644 --- a/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl +++ b/Chips/Hisilicon/Hi1610/Hi1610AcpiTables/Dsdt/D03Sas.asl @@ -80,6 +80,32 @@ Scope(_SB) STS, 32, }
- OperationRegion (PHYS, SystemMemory, 0xC3002000, 0x2000)
- Field (PHYS, DWordAcc, NoLock, Preserve) {
Offset (0x0014),PHY0, 32,Offset (0x0414),PHY1, 32,Offset (0x0814),PHY2, 32,Offset (0x0c14),PHY3, 32,Offset (0x1014),PHY4, 32,Offset (0x1414),PHY5, 32,Offset (0x1814),PHY6, 32,Offset (0x1c14),PHY7, 32,- }
- OperationRegion (SYSR, SystemMemory, 0xD0000000, 0x10000)
- Field (SYSR, DWordAcc, NoLock, Preserve) {
Offset (0xe014),DIE4, 32,- }
- Method (_RST, 0x0, Serialized) { Store(0x7ffff, RST)
@@ -88,6 +114,19 @@ Scope(_SB) Store(0x7ffff, DRST) Store(0x7ffff, CLK) Sleep(1)
Store(DIE4, local0)If (LEqual (local0, 0)) {/* 66MHZ */Store(0x0199B694, Local1)Store(Local1, PHY0)Store(Local1, PHY1)Store(Local1, PHY2)Store(Local1, PHY3)Store(Local1, PHY4)Store(Local1, PHY5)Store(Local1, PHY6)Store(Local1, PHY7) } }}@@ -157,6 +196,32 @@ Scope(_SB) STS, 32, }
- OperationRegion (PHYS, SystemMemory, 0xA2002000, 0x2000)
- Field (PHYS, DWordAcc, NoLock, Preserve) {
Offset (0x0014),PHY0, 32,Offset (0x0414),PHY1, 32,Offset (0x0814),PHY2, 32,Offset (0x0c14),PHY3, 32,Offset (0x1014),PHY4, 32,Offset (0x1414),PHY5, 32,Offset (0x1814),PHY6, 32,Offset (0x1c14),PHY7, 32,- }
- OperationRegion (SYSR, SystemMemory, 0xD0000000, 0x10000)
- Field (SYSR, DWordAcc, NoLock, Preserve) {
Offset (0xe014),DIE4, 32,- }
- Method (_RST, 0x0, Serialized) { Store(0x7ffff, RST)
@@ -165,6 +230,19 @@ Scope(_SB) Store(0x7ffff, DRST) Store(0x7ffff, CLK) Sleep(1)
Store(DIE4, local0)If (LEqual (local0, 0)) {/* 66MHZ */Store(0x0199B694, Local1)Store(Local1, PHY0)Store(Local1, PHY1)Store(Local1, PHY2)Store(Local1, PHY3)Store(Local1, PHY4)Store(Local1, PHY5)Store(Local1, PHY6)Store(Local1, PHY7) } }}@@ -216,7 +294,7 @@ Scope(_SB) Package () {"interrupt-parent",Package() {_SB.MBI2}}, Package (2) {"sas-addr", Package() {50, 01, 88, 20, 16, 00, 00, 00}}, Package () {"queue-count", 16},
Package () {"phy-count", 8},
})Package () {"phy-count", 9}, }@@ -233,6 +311,34 @@ Scope(_SB) STS, 32, }
- OperationRegion (PHYS, SystemMemory, 0xA3002000, 0x2400)
- Field (PHYS, DWordAcc, NoLock, Preserve) {
Offset (0x0014),PHY0, 32,Offset (0x0414),PHY1, 32,Offset (0x0814),PHY2, 32,Offset (0x0c14),PHY3, 32,Offset (0x1014),PHY4, 32,Offset (0x1414),PHY5, 32,Offset (0x1814),PHY6, 32,Offset (0x1c14),PHY7, 32,offset (0x2014),PHY8, 32,- }
- OperationRegion (SYSR, SystemMemory, 0xD0000000, 0x10000)
- Field (SYSR, DWordAcc, NoLock, Preserve) {
Offset (0xe014),DIE4, 32,- }
- Method (_RST, 0x0, Serialized) { Store(0x7ffff, RST)
@@ -241,6 +347,20 @@ Scope(_SB) Store(0x7ffff, DRST) Store(0x7ffff, CLK) Sleep(1)
Store(DIE4, local0)If (LEqual (local0, 0)) {/* 66MHZ */Store(0x0199B694, Local1)Store(Local1, PHY0)Store(Local1, PHY1)Store(Local1, PHY2)Store(Local1, PHY3)Store(Local1, PHY4)Store(Local1, PHY5)Store(Local1, PHY6)Store(Local1, PHY7)Store(Local1, PHY8) } }}1.9.1