1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

[Manual] Как сделать DSDT с чистого листа

Тема в разделе 'DSDT', создана пользователем slice, 30 сен 2017.

  1. slice

    slice Apple Life Dev Разработчик

    Симпатии:
    9`648
    Вот правильно! Я тоже верну _PRW к первоначальному состоянию, там немного сложнее
    Код:
       Scope (_SB.PCI0)
        {
            Method (UPRW, 0, NotSerialized)
            {
                Local0 = GENS (0x18, One, Zero)
                Return (Local0)
            }
        }
    
        Scope (_SB.PCI0.EHC1)
        {
            Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
            {
                Local0 = UPRW ()
                If (Local0 == 0x03)
                {
                    Return (Package (0x02)
                    {
                        0x0D,
                        0x03
                    })
                }
    
                If (Local0 == One)
                {
                    Return (Package (0x02)
                    {
                        0x0D,
                        One
                    })
                }
    
                Return (Package (0x02)
                {
                    0x0D,
                    Zero
                })
            }
        }
    
    
    GENS(arg1, arg2, arg3) это метод SMM, что он делает можно только догадываться.

    ЗЫ. Да, PME и PMS документированы, можно рекомендовать этим пользоваться
     
    Moorre нравится это.
  2. Pawel69

    Pawel69 iГуру

    Симпатии:
    86
    @slice, отредактировал все таблици какую команду надо дать чтоб скопилить дсдт и ссдт вместе
     

    Вложения:

  3. slice

    slice Apple Life Dev Разработчик

    Симпатии:
    9`648
    А вы знаете, что можно переключить с софтового спидстепа на хардверный?
    Метод \_PR.CPU0._PSD
    Если возвращает {5,0,0,0xFC,2}, то софтовый, то есть полагаемся на AppleIntelCPUPM
    Если же сделать {5,0,0,0xFE,2}, то хардверный, и драйвера Мака нам не нужны. Очень, кстати, интересно тем, у кого в БИОСе 0хЕ2 залочен.
     
    Последнее редактирование: 11 окт 2017
    Jeka, egosys, Moorre и ещё 1-му нравится это.
  4. slice

    slice Apple Life Dev Разработчик

    Симпатии:
    9`648
    Вопрос сформулирован некорректно.
    Варианты.
    1. Компилируем все подряд
    iasl -ta *.dsl
    2. Вливаем все SSDT внутрь DSDT, и компилируем как единый DSDT. Кстати, очень правильный вариант.
    Это при декомпиляции нам необходимо держать их вместе, в одном пространстве. Компиляция этого не требует, они компилируются независимо.
     
    Alvaro нравится это.
  5. Pawel69

    Pawel69 iГуру

    Симпатии:
    86
  6. slice

    slice Apple Life Dev Разработчик

    Симпатии:
    9`648
    Вот образец, включается то, или другое, в зависимости от переменной, выставленной в БИОСе PDC0, и ее бит 0х0800
    Код:
            Name (PSDF, Zero)
            Method (_PSD, 0, NotSerialized)  // _PSD: Power State Dependencies
            {
                If (!PSDF)
                {
                    DerefOf (HPSD [Zero]) [0x04] = TCNT /* \TCNT */
                    DerefOf (SPSD [Zero]) [0x04] = TCNT /* \TCNT */
                    PSDF = Ones
                }
    
                If (PDC0 & 0x0800)
                {
                    Return (HPSD) /* \_PR_.CPU0.HPSD */
                }
    
                Return (SPSD) /* \_PR_.CPU0.SPSD */
            }
    
            Name (HPSD, Package (0x01)
            {
                Package (0x05)
                {
                    0x05,
                    Zero,
                    Zero,
                    0xFE,
                    0x80
                }
            })
            Name (SPSD, Package (0x01)
            {
                Package (0x05)
                {
                    0x05,
                    Zero,
                    Zero,
                    0xFC,
                    0x80
                }
            })
    
     
    tatur_sn и Moorre нравится это.
  7. ACIDSky

    ACIDSky iГуру

    Симпатии:
    1`208
    Ну в подписи у него плата асус з97, на ней наверно нет тачпадов..
     
  8. chrome

    chrome iГуру

    Симпатии:
    875
    и где MacOS использует метод _PSD? Хоть один пример. Тем более вы сторонник дропа всех процессорных таблиц. @slice, хватит уже темы плодить. Может NullCPUPowerManagement будете пропагандировать.
     
  9. slice

    slice Apple Life Dev Разработчик

    Симпатии:
    9`648
    А почему ты знаешь, что не использует? Из каких соображений?
    NullCPUPowerManagement я давно пропагандирую. Сейчас тех постов не найду, но если ты не помнишь, напишу еще раз.
    Dell Latitude D430 с процессором Core2Duo, Merom.
    Спидстеп заводится легко, видим и нижние стейты, и верхние. Температура в покое 48.
    По рекомендации сайта osxlalitude.com поставил NullCPUPowerManagement, просто ради того, чтобы было что им ответить на настойчивые призывы. Результат:
    Частота процессора стоит на верхней планке. Температура в покое 38 градусов. Вот как это?
    Именно это они и утверждали.

    Я сейчас экспериментирую с этим _PSD, и разница есть, но мне нужен чистый эксперимент, типа того, чтобы прямо в системе переключаться из HW в SW. Ну или две перезагрузки с разницей в одном бите. Тогда и посмотрим.
    Дроп пропагандирую, но также призываю внимательно следить, что мы там оставили, а надо было взять.
    Вот в третьем посте
    Код:
    В исходном DSDT видим
    External (CFGD, IntObj)
    И эту переменную находим в SSDT CpuPm. И тут пора вспомнить, что мы эту таблицу дроппаем, вместе с этой переменной!
    Надо ее скопировать в DSDT. Как и другие, которые могут пригодиться.
    
     
    nms42 и Moorre нравится это.
  10. chrome

    chrome iГуру

    Симпатии:
    875
    @slice, вообще то я первый у вас спросил, где этот метод используется? Он ведь не обязательный ( в спецификации вы же читали, это я английский только с переводчиком, вы та с ним дружите и лучше поняли что там написано ), и наверно вообще никогда не используется ( какой в нем смысл?), может быть только при заходе в биос. Про NullCPUPowerManagement специально упомянул, зная ваше к нему отношение.
     
  11. slice

    slice Apple Life Dev Разработчик

    Симпатии:
    9`648
    Раз ДСДТ пишут для виндов, значит в виндах это используется.
    В Маке не знаю. Почему бы AppleACPIPlatform не сканировать стандартные методы?
     
    nms42 нравится это.
  12. Pawel69

    Pawel69 iГуру

    Симпатии:
    86
    добавил 2 метода в родную таблицу и заработал спид степ см скрин попугаев прибавилось;)
     

    Вложения:

    Последнее редактирование: 15 окт 2017 в 16:36
  13. chrome

    chrome iГуру

    Симпатии:
    875
  14. Pawel69

    Pawel69 iГуру

    Симпатии:
    86
    @chrome, так это же хорошо ;)
     
  15. Pawel69

    Pawel69 iГуру

    Симпатии:
    86
    @chrome, я еще ради эксперимента вот таку табличку подкинул
    DefinitionBlock ("", "SSDT", 1, "APPLE ", "SsdtS3", 0x00001000)
    {
    Name (_S3, Package (0x03) // _S3_: S3 System State
    {
    0x07,
    0x07,
    Zero
    })
    }
     

    Вложения:

  16. ACIDSky

    ACIDSky iГуру

    Симпатии:
    1`208
    Во всех ДСДТ, что видел, это прописано. Обычно в конце.
    В таком виде:

    Код:
        Name (_S0, Package (0x04)  // _S0_: S0 System State
        {
            Zero,
            Zero,
            Zero,
            Zero
        })
        If (SS1)
        {
            Name (_S1, Package (0x04)  // _S1_: S1 System State
            {
                One,
                Zero,
                Zero,
                Zero
            })
        }
    
        If (SS3)
        {
            Name (_S3, Package (0x04)  // _S3_: S3 System State
            {
                0x05,
                Zero,
                Zero,
                Zero
            })
        }
    
        If (SS4)
        {
            Name (_S4, Package (0x04)  // _S4_: S4 System State
            {
                0x06,
                Zero,
                Zero,
                Zero
            })
        }
    
        Name (_S5, Package (0x04)  // _S5_: S5 System State
        {
            0x07,
            Zero,
            Zero,
            Zero
        })
     
  17. chrome

    chrome iГуру

    Симпатии:
    875
    @Pawel69, раз уж ты прописал iMac18,3 то пробуй iMac19,1. В этот .plist Снимок экрана 2017-10-15 в 21.04.01. пропиши эти данные Снимок экрана 2017-10-15 в 21.06.30. , сможешь загрузиться как iMac19,1.
     
  18. Pawel69

    Pawel69 iГуру

    Симпатии:
    86
    @chrome, да уже делал
     
  19. Pawel69

    Pawel69 iГуру

    Симпатии:
    86
    @chrome, а ты откуда их взял эти данные они еще не вышли эти ямаки :D
     
  20. chrome

    chrome iГуру

    Симпатии:
    875
    @Pawel69, оттуда откуда и ты брал, когда делал:D.
     

Поделиться этой страницей