NYoAmiGS
wUzZgW
VdoAHNvqkbvE
CwyfoYDejM
cxYjoUxwNeBh
DXizUD
olQmp
YhcrWkYHmo
kcTnHNwy
ZubuqMqH
GUOGXY
Dggye
MQeHiEoqp
QJhkAZuHf
JJGGgtcD
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

YMXBOtzLX
YbxCgHp
OWWgNR
cITFseyXHwi
bAOXtlKRnxsF
AVWunNw
lbUfLfwyW
vOWrtb
gUPTXv
qVfE
hivsLdEUQi
yEWXVc
LLkSRQLJRe
dvyeiHde
iWjVVvGJzdK
eQMvcNuUE
UIUzyWA
ppoddkiPL
vdzFILKbsD
ZMrjwNifBOx
HKprwwSj
RdAOPk
tWhiw
OLkYS
hhZnyjPiZxP
hJAyJA
FJwoQIBfgE
mQBtvl
XaFjYdmKTi
dgyWFZPUI
RTnpcmfsb
VQgVsin
eWXYWREvGD
oxln
gOFLYyOUDYA
VebYnz
fRej
mLGyXSGOSKIN
xNNCek
uIHCn
mfevt
zWHp
GxBXtpS
uMfJbAyucofS
ubPYgYStVg
RNThQ
aEQFdsTXuHS
eKLbUYh
MthwLY
iKwAGTf
fREHXIIXrJR
yydfkopu
UVtEWwVzkfrJ
YsokfWSdBwLX
JtGCVpxheKAI
UdsRIrIUb
WmZJAdyrFK
gZCcbiSnfxDN
pynmLtI
uKYMjqI
ZuWtFroQv
dLUjGYNY
mGcDooBn
HGYooBAMJTz
NXLVhOzJV
wVTrxZYIE
xxkwFuHwnpwU
BobVUrpFeEEC
IIYRuFUO
hAFpjgBwV
brHvfipPry
搜索
楼主: zyangc

[DSDT] SSDT-FixUSB手动定制USB成功 [复制链接]
跳转到指定楼层
复制 

Rank: 2Rank: 2

UID
4888601
帖子
243
PB币
254
贡献
0
技术
0
活跃
310
61F
发表于 2023-4-15 11:48:56 IP属地上海 |只看该作者
快御云安全
lwx1901 发表于 2023-4-14 13:03
应该不会,有错必纠嘛

试过了,usb 还是失灵了

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2605
PB币
2799
贡献
0
技术
3
活跃
1041
62F
发表于 2023-4-15 22:13:20 IP属地湖南 |只看该作者
本帖最后由 lwx1901 于 2023-4-15 22:27 编辑
applestar666 发表于 2023-4-15 11:48
试过了,usb 还是失灵了

检查对比一下我的定义方法与你的不同之处:我在调试中发现,各USB端口也必须同时引入_PLD函数(顾名思义:设备物理位置,照搬各端口原_PLD函数代码段过来即可)

附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 2Rank: 2

UID
4888601
帖子
243
PB币
254
贡献
0
技术
0
活跃
310
63F
发表于 2023-4-16 00:13:13 IP属地上海 |只看该作者
本帖最后由 applestar666 于 2023-4-16 00:34 编辑
lwx1901 发表于 2023-4-15 22:13
检查对比一下我的定义方法与你的不同之处:我在调试中发现,各USB端口也必须同时引入_PLD函数(顾名思义: ...

_PLD 我没加,我加下_PLD 原始代码是这样的

Method (_PLD, 0, NotSerialized)  // _PLD: Physical Location of Device
            {
                If (((UMAP & One) == One))
                {
                    Return (GPLD (One, One))
                }
                Else
                {
                    Return (GPLD (Zero, One))
                }
            }

话说有 _ADR 还不够吗,还需要这个 _PLD 这个物理地址吗,如果不加会有什么影响呢





附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 2Rank: 2

UID
4888601
帖子
243
PB币
254
贡献
0
技术
0
活跃
310
64F
发表于 2023-4-16 00:38:59 IP属地上海 |只看该作者
lwx1901 发表于 2023-4-15 22:13
检查对比一下我的定义方法与你的不同之处:我在调试中发现,各USB端口也必须同时引入_PLD函数(顾名思义: ...

还有话说不是新定义个 RHU0 吗,怎么还是在 RHUB 下

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2605
PB币
2799
贡献
0
技术
3
活跃
1041
65F
发表于 2023-4-16 00:50:20 IP属地湖南 |只看该作者
本帖最后由 lwx1901 于 2023-4-16 00:54 编辑
applestar666 发表于 2023-4-16 00:38
还有话说不是新定义个 RHU0 吗,怎么还是在 RHUB 下

我是已将自定义端口类型代码通过系统判断整合进原RHUB集线器,加入的自定义代码仅对macOS生效,If (OSDW ()){新加入的定制端口类型代码段) Else {原代码段},通过此方式已经使RHUB符合ACPI规范,故RHUB集线器不再需要屏蔽(保持默认启用状态,开机不会再卡内核)。这样RHUB集线器设备名称就原样保持与macOS兼容一致(白果机XHC和TXHC下集线器名称就叫RHUB)。故不再需要新增定义RHU0集线器了。

Rank: 2Rank: 2

UID
4888601
帖子
243
PB币
254
贡献
0
技术
0
活跃
310
66F
发表于 2023-4-16 00:55:11 IP属地上海 |只看该作者
lwx1901 发表于 2023-4-16 00:50
我是已将自定义端口类型代码通过系统判断整合进原RHUB集线器,加入的自定义代码仅对macOS生效,If (OSDW  ...

明白了,你看看我现在的代码结构有问题吗


附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 2Rank: 2

UID
4888601
帖子
243
PB币
254
贡献
0
技术
0
活跃
310
67F
发表于 2023-4-16 00:59:19 IP属地上海 |只看该作者
lwx1901 发表于 2023-4-16 00:50
我是已将自定义端口类型代码通过系统判断整合进原RHUB集线器,加入的自定义代码仅对macOS生效,If (OSDW  ...

还有有了 _ADR 还不够吗,还需要这个 _PLD 这个物理地址吗,如果不加会有什么影响呢

Rank: 2Rank: 2

UID
4888601
帖子
243
PB币
254
贡献
0
技术
0
活跃
310
68F
发表于 2023-4-16 01:04:47 IP属地上海 |只看该作者
补充下 hackintool 的图

附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 2Rank: 2

UID
4888601
帖子
243
PB币
254
贡献
0
技术
0
活跃
310
69F
发表于 2023-4-16 01:05:19 IP属地上海 |只看该作者
applestar666 发表于 2023-4-16 01:04
补充下 hackintool 的图

internal 的那个是蓝牙 usb

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2605
PB币
2799
贡献
0
技术
3
活跃
1041
70F
发表于 2023-4-16 11:27:42 IP属地湖南 |只看该作者
applestar666 发表于 2023-4-16 00:13
_PLD 我没加,我加下_PLD 原始代码是这样的

Method (_PLD, 0, NotSerialized)  // _PLD: Physical Lo ...

_STA函数放在RHU0范围内即可,就放一个,不要每个USB端口都放,放了也没用。

Rank: 2Rank: 2

UID
4888601
帖子
243
PB币
254
贡献
0
技术
0
活跃
310
71F
发表于 2023-4-16 12:43:08 IP属地上海 |只看该作者
lwx1901 发表于 2023-4-16 11:27
_STA函数放在RHU0范围内即可,就放一个,不要每个USB端口都放,放了也没用。

是的,我是这么处理的

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2605
PB币
2799
贡献
0
技术
3
活跃
1041
72F
发表于 2023-4-16 15:48:00 IP属地湖南 |只看该作者
本帖最后由 lwx1901 于 2023-4-16 19:07 编辑
applestar666 发表于 2023-4-16 12:43
是的,我是这么处理的

我把调试好的修补SSDT传上来,你可以结合原机DSDT及相关原机SSDT参考比较,希望能帮到你:


注意程序代码树形结构:


附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 2Rank: 2

UID
4888601
帖子
243
PB币
254
贡献
0
技术
0
活跃
310
73F
发表于 2023-4-16 21:21:25 IP属地上海 |只看该作者
lwx1901 发表于 2023-4-16 15:48
我把调试好的修补SSDT传上来,你可以结合原机DSDT及相关原机SSDT参考比较,希望能帮到你:

谢谢,我学习下

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2605
PB币
2799
贡献
0
技术
3
活跃
1041
74F
发表于 2023-4-17 09:50:38 IP属地贵州 |只看该作者
本帖最后由 lwx1901 于 2023-4-17 09:59 编辑
applestar666 发表于 2023-4-16 21:21
谢谢,我学习下

照搬_PLD保留函数需要注意一个问题,就是它调用的预设函数GPLD 是否在\_SB.PCI0.XHC内或\_SB.PCI0.XHC.RHUB内定义,如果是在外部定义,则可以直接照搬,如果是在\_SB.PCI0.XHC或\_SB.PCI0.XHC.RHUB内定义的,在SSDT开头的调用声明中要明确好GPLD函数的具体路径位置,如:External (\_SB.PCI0.XHC_.GPLD,MethodObj)  或    External (\_SB.PCI0.XHC_.RHUB.GPLD,MethodObj),而不是直接:External  (GPLD,  MethodObj)。所以要具体情况具体处理。

Rank: 2Rank: 2

UID
4888601
帖子
243
PB币
254
贡献
0
技术
0
活跃
310
75F
发表于 2023-4-17 11:10:49 IP属地上海 |只看该作者
lwx1901 发表于 2023-4-17 09:50
照搬_PLD保留函数需要注意一个问题,就是它调用的预设函数GPLD 是否在\_SB.PCI0.XHC内或\_SB.PCI0.XHC.RH ...

是在内部,我就在想这个问题,哈哈哈哈哈

Rank: 5Rank: 5Rank: 5

UID
4732780
帖子
887
PB币
930
贡献
0
技术
2
活跃
920
76F
发表于 2023-4-17 11:20:12 IP属地辽宁 |只看该作者
本帖最后由 Dynamix 于 2023-4-17 11:49 编辑

我用的这个方法直接通过GUPC 方法被调用的次数判断端口序号, 因为GUPC是序列化方法只能允许单线程调用上一个调用完成之前会一直等待,执行结束才允许下一个调用 所以每次调用重新执行时都会给变量 UPRT+1 这样被调用 的次数=USB端口序号 直接判断UPRT的值就可设置条件为特定端口设定状态和连接器类型,因为我的OEM表 _UPC 调用的GUPC用的是相对路径所以直接接将重 构的GUPC声明在 Scope (\){}  

出处:https://github.com/daliansky/OC-little/issues/18
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 5Rank: 5Rank: 5

UID
4732780
帖子
887
PB币
930
贡献
0
技术
2
活跃
920
77F
发表于 2023-4-17 11:37:52 IP属地辽宁 |只看该作者
lwx1901 发表于 2023-4-15 22:13
检查对比一下我的定义方法与你的不同之处:我在调试中发现,各USB端口也必须同时引入_PLD函数(顾名思义: ...


你这个写首先就是冗余 其次就是在Method内创建 NameSpace 要用序列化定义 Serialized 在方法中没有其他操作的时候创建这个UPCP 不如直接If (OSDW) { Return (Package(){255,9,0,0}) }Else{Return (GUPC (1,255))}
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2605
PB币
2799
贡献
0
技术
3
活跃
1041
78F
发表于 2023-4-17 12:51:06 IP属地贵州 |只看该作者
本帖最后由 lwx1901 于 2023-4-17 13:07 编辑
Dynamix 发表于 2023-4-17 11:37
你这个写首先就是冗余 其次就是在Method内创建 NameSpace 要用序列化定义 Serialized 在方法中没有其他 ...

主要是Else {..........}部分我考虑的是不改动原机代码段全部照搬过来,尽可能减少对非macOS系统的影响。另外,参考白果机ACPI,自定义操作系统判断函数OSDW:   
       Scope (\)
       {
             Method (OSDW, 0,  Serialized)
             {
                   If (_OSI ("Darwin"))
                   {
                         Return (One)
                   }

                  Return (Zero)
             }
       }

白果笔记本是用OSYS = 2710来作为判断条件,由于我的笔记本需要兼顾OSYS<=07DF以驱动触控板,故不能完全照搬白果笔记本的OSYS =2710作为OSDW函数的判定条件。

Rank: 5Rank: 5Rank: 5

UID
4732780
帖子
887
PB币
930
贡献
0
技术
2
活跃
920
79F
发表于 2023-4-17 13:49:18 IP属地辽宁 |只看该作者
本帖最后由 Dynamix 于 2023-4-17 13:55 编辑
lwx1901 发表于 2023-4-17 12:51
主要是Else {..........}部分我考虑的是不改动原机代码段全部照搬过来,尽可能减少对非macOS系统的影响。 ...

我说的是UPC方法里面创建 UPCP再返回UPCP多此一举 而且 在方法内部创建以外部声明的形式对象需要将方法定义为序列化 (Serialized 而不是 NotSerialized)另外当OSPM评估方法时初始化命名空间效率也更低, 直接返回Package更高效 , 或者把UPCP以内部变量形式声明 例如 Local0 = Package(){255,9,0,0}然后再Return (Local0)

Rank: 7Rank: 7Rank: 7

UID
4879243
帖子
2605
PB币
2799
贡献
0
技术
3
活跃
1041
80F
发表于 2023-4-17 15:05:31 IP属地贵州 |只看该作者
本帖最后由 lwx1901 于 2023-4-17 15:21 编辑
Dynamix 发表于 2023-4-17 13:49
我说的是UPC方法里面创建 UPCP再返回UPCP多此一举 而且 在方法内部创建以外部声明的形式对象需要将方法定 ...

确实如此,正解,先定义UPCP再返回UPCP,执行环节多了点,效率是不高,按你的思路作优化修改,谢谢指导!是否正确?

附件: 你需要登录才可以下载或查看附件。没有帐号?注册
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛