ACPI相关(7)- ACPI对ata的管理

一、SATA在acpi规范中的描述

ATA控制器有两种类型:IDE控制器(也称为ATA控制器)和串行ATA (SATA)控制器。IDE控制器是那些使用传统IDE编程接口的控制器,可以支持并行ATA (P-ATA)或SATA连接。SATA控制器可以设计为仅在仿真模式、本机模式下运行,也可以设计为同时支持本机和非本机SATA模式。不管支持何种模式,SATA控制器都被设计为仅与支持串行ATA物理接口的驱动器一起工作。如下所述,SATA控制器的处理方法与传统的IDE控制器类似,但不是完全相同。

包含支持本机和非本机SATA模式的控制器的平台必须采取步骤,以确保将适当的对象放置在其操作模式的名称空间中。

_GTF可选对象,返回重新初始化驱动器以启动默认值所需的ATA task file。ide和sata全使用

_GTM可选对象,返回IDE控制器定时信息。仅ide使用

_STM可选控制方法,用于设置IDE控制器的传输定时设置。仅ide

_SDD可选控制方法,通知平台连接到端口的设备类型。仅SATA

1、串行ATA (SATA)控制器设备

(1)概述

HBA ——主机总线适配器

Native SATA aware ——指理解特定SATA HBA实现并理解其编程接口和电源管理行为的系统软件(平台固件、选项ROM、操作系统等)。

Non-native SATA aware ——指不理解特定SATA HBA实现、不理解其编程接口或电源管理行为的系统软件(平台固件、选项ROM、操作系统等)。通常,非本地的SATA感知软件将使用SATA HBA的仿真接口(例如,任务文件寄存器)来控制HBA并访问它的设备。

仿真模式——SATA HBA支持的可选模式。允许非本地的SATA感知软件通过传统的任务文件寄存器访问SATA设备。

本机模式——SATA HBA支持的可选模式。允许本地SATA感知软件通过特定于HBA的寄存器访问SATA设备。

混合设备——指既实现了模拟又实现了本地编程接口的SATA HBA。

SATA HBA在许多方面与IDE控制器不同。首先,它可以保存其完整的设备上下文。其次,它用端口代替了IDE通道(最多支持2个附加设备),而端口只支持一个附加设备,除非有端口倍增器。最后,SATA不需要来自平台的时间信息,从而简化了ACPI中SATA控制器的表示方式。(将_GTM和_STM替换为更简单的_SDD方法。)

所有的端口,甚至那些连接到端口乘法器的端口,都被直接表示为SATA控制器设备下的子端口,因为SATA规范不允许将端口乘法器附加到端口乘法器上。每个端口的_ADR指示它们连接到哪个根端口,以及端口乘法器位置(如果适用)。(_ADR格式见表6-186)

因为这个规范只涵盖主板设备的配置,这也是本节中定义的情况下,控制方法不能用于向设备发送taskfiles连接通过一个插件SATA HBA,或者通过主板SATA HBA连接,如果使用一个端口乘数也不是在主板上。

下面是一个示例SATA名称空间:

\_SB- System bus

PCI0- PCI bus

SATA - SATA Controller device

ADR - Indicates address of the controller on the PCI bus

PR0  - Power resources needed for D0 power state

PRT0 - Port 0 device

_ADR - Indicates physical port and port multiplier topology

_SDD - Identify information for drive attached to this port

_GTF - Control method to get task file

PRTn - Port n device

_ADR - Indicates physical port and port multiplier topology

_SDD - Identify information for drive attached to this port

_GTF - Control method to get task file

2、控制方法

1、_GTF对象

这个可选对象返回一个缓冲区,其中包含用于恢复驱动器以启动默认值(即POST后驱动器的状态)的ATA命令。返回的缓冲区是一个数组,数组中的每个元素由7个8位寄存器值(56位)组成,这些值对应于ATA任务寄存器1F1到1F7。数组中的每个条目都为驱动器定义一个命令。

返回值:

为驱动器包含ATA命令的字节流的缓冲区

此对象可能出现在SATA端口设备对象或IDE通道对象之下。

ATA任务文件数组定义:

命令1有7个寄存器值

- Reg值:(1F1, 1F2, 1F3, 1F4, 1F5, 1F6, 1F7)

命令2的七个寄存器值

- Reg值:(1F1, 1F2, 1F3, 1F4, 1F5, 1F6, 1F7)

命令3的七个寄存器值

- Reg值:(1F1, 1F2, 1F3, 1F4, 1F5, 1F6, 1F7)

启动驱动器后,OSPM将按照指定的顺序将这些命令发送到驱动器。在SATA HBAs上,OSPM在评估_GTF之前评估_SDD。IDE驱动程序可以修改一些特性命令,或者在向驱动程序发送命令之前附加自己的命令,以便更好地为OSPM特性调整驱动程序。

这个控制方法列在每个驱动设备对象下面。在评估_GTF对象之前,OSPM必须评估_STM对象或_SDD对象。

从_GTF返回的例子:

Method(_GTF, 0x0, NotSerialized)

{

Return(GTF0)

}

Name(GTF0, Buffer(0x1c)

{

0x03, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xef,

0x03, 0x00, 0x00, 0x00, 0x00,0xa0, 0xef,

0x00, 0x10, 0x00, 0x00, 0x00, 0xa0, 0xc6,

0x00, 0x00, 0x00,0x00, 0x00, 0xa0, 0x91

}

 

2、SATA控制器特有的控制方法

为了确保OSPM、固件和附加到SATA控制器的设备之间的适当交互,要求OSPM在某些事件发生时执行_SDD和_GTF控制方法。OSPM对事件的响应必须如下:

1) COMRESET,初始OS加载,设备插入,HBA D3向D0过渡,异步信号丢失:

1. OSPM向设备发送IDENTIFY DEVICE或IDENTIFY PACKET DEVICE命令。

2. 操作系统执行_SDD。_SDD控制方法需要一个参数,该参数由主机发出的IDENTIFY DEVICE或IDENTIFY PACKET DEVICE命令到设备接收的数据块组成。

3.在_SDD方法完成之后,操作系统执行_GTF方法。使用_GTF提供的任务文件信息,OS然后将_GTF包含的commadn发送到的设备执行。

_SDD控制方法

这个控制方法将连接到端口的设备类型传递给平台。_SDD对象存在于SATA端口设备对象之下。平台通常使用_SDD对象传递的信息来构造_GTF对象返回的值。OSPM将ATA驱动器ID块传送给平台,它是由识别(包)设备,ATA命令(命令代码“ech.”)。详情请参阅ATA/ATAPI-6规范。

参数:(1)

Arg0 -一个包含ATA驱动器标识块的缓冲区,内容由ATA规范描述

返回值:无

3、特性支持

通过打印将IDENTIFY DEVICE命令块打印出来,发现在龙芯平台的sata设备对以下特性有支持:

Word 78: SATA特性支持

第2位表示设备是否支持DMA设置FIS自动激活优化。当设置为1时,设备支持使用自动激活优化,当清除为0时,设备不支持自动激活优化。

第3位表示设备是否支持向主机发起电源管理请求。当设置为1时,设备支持初始化接口电源管理请求,当清除为0时,设备不支持初始化电源管理请求。
一种设备可以支持接收由主机发起的、如字76第9位定义所述的电源管理请求,而不支持发起该位所述的电源管理请求。

第6位表示设备是否支持软件设置保存。当一个COMRESET发生,置一表示设备支持软件设置保存。当清除为0时,设备清除所有的软件设置。后续通过参考联想笔记本对command命令的定义,通过GTF控制方法发送命令。开启设备支持向主机发起电源管理请求。命令成功执行。

为验证是否使能,通过查看Word 79: 特性使能相关位域,设备支持向主机发起电源管理请求确实已使能,证明操作有效。

4、特性介绍

在Link Power Management方面,SATA一视同仁,Host和Device都可以发起,分别称为:
HIPM(Host Initiated Power Management)
DIPM (Device Initiated Power Management)

发起归发起,还是需要对方配合,才能让Link进入Partial 或者 Slumber。具体做法是这样的,以Host发起为例:
Host发送一个 PMREQ_P(请求进入Partial)给Device 【如果发PMREQ_S就是请求进Slumber】;
Device回复PMACK或者PMNAK;
如果Device回复ACK,两边一起进Partial(一般接收方都会发送多个PMACK以确保发起方收到
如果回复的不同意,那就什么都不发生;
如果需要退出partial或者Slumber, 需要通过OOB重新建立链接。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值