abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 15:33 | IT novinky

    Spotify spustilo přehrávání v bezztrátové kvalitě. V předplatném Spotify Premium.

    Ladislav Hagara | Komentářů: 0
    dnes 15:00 | IT novinky

    Spoluzakladatel a předseda správní rady americké softwarové společnosti Oracle Larry Ellison vystřídal spoluzakladatele automobilky Tesla a dalších firem Elona Muska na postu nejbohatšího člověka světa. Hodnota Ellisonova majetku díky dnešnímu prudkému posílení ceny akcií Oraclu odpoledne vykazovala nárůst o více než 100 miliard dolarů a dosáhla 393 miliard USD (zhruba 8,2 bilionu Kč). Hodnota Muskova majetku činila zhruba 385 miliard dolarů.

    Ladislav Hagara | Komentářů: 0
    včera 21:22 | Nová verze

    Bylo vydáno Eclipse IDE 2025-09 aneb Eclipse 4.37. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.

    Ladislav Hagara | Komentářů: 0
    včera 18:22 | IT novinky

    T-Mobile od 15. září zpřístupňuje RCS (Rich Communication Services) zprávy i pro iPhone.

    Ladislav Hagara | Komentářů: 2
    včera 13:22 | IT novinky

    Společnost ARM představila platformu Arm Lumex s Arm C1 CPU Cluster a Arm Mali G1-Ultra GPU pro vlajkové chytré telefony a počítače nové generace.

    Ladislav Hagara | Komentářů: 0
    včera 05:44 | Nová verze

    Unicode Consortium, nezisková organizace koordinující rozvoj standardu Unicode, oznámila vydání Unicode 17.0. Přidáno bylo 4 803 nových znaků. Celkově jich je 159 801. Přibylo 7 nových Emoji.

    Ladislav Hagara | Komentářů: 0
    9.9. 21:00 | IT novinky Ladislav Hagara | Komentářů: 14
    9.9. 18:33 | Nová verze

    Realtimová strategie Warzone 2100 (Wikipedie) byla vydána ve verzi 4.6.0. Podrobný přehled novinek, změn a oprav v ChangeLogu na GitHubu. Nejnovější verzi Warzone 2100 lze již instalovat také ze Snapcraftu a Flathubu.

    Ladislav Hagara | Komentářů: 1
    9.9. 12:22 | IT novinky

    Polské vývojářské studio CD Projekt Red publikovalo na Printables.com 3D modely z počítačové hry Cyberpunk 2077.

    Ladislav Hagara | Komentářů: 1
    9.9. 11:44 | Pozvánky

    Organizátoři konference LinuxDays 2025 vydali program a zároveň otevřeli registrace. Akce se uskuteční 4. a 5. října na FIT ČVUT v pražských Dejvicích, kde vás čekají přednášky, workshopy, stánky a spousta šikovných lidí. Vstup na akci je zdarma.

    Petr Krčmář | Komentářů: 7
    Pro otevření více webových stránek ve webovém prohlížečí používám
     (83%)
     (7%)
     (2%)
     (2%)
     (4%)
     (2%)
    Celkem 163 hlasů
     Komentářů: 12, poslední včera 13:00
    Rozcestník

    Administrace komentářů

    Jste na stránce určené pro řešení chyb a problémů týkajících se diskusí a komentářů. Můžete zde našim administrátorům reportovat špatně zařazenou či duplicitní diskusi, vulgární či osočující příspěvek a podobně. Děkujeme vám za vaši pomoc, více očí více vidí, společně můžeme udržet vysokou kvalitu AbcLinuxu.cz.

    Příspěvek
    5.2.2022 07:24 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Sekajúci trackpoint na TP P14s gen 2 s AMD

    Takže prepísal som všetky používané časti ovládača podľa disassemblovaného ovládača z windowsu. Predpokladám, že prepis je správny, ale nefunguje to, z čoho usudzujem, že kernel robí niečo zle.

    V prvom rade ResourceTemplate z ACPI vyzerá takto:

    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
    {
        IO (Decode16,
            0x0B20,             // Range Minimum
            0x0B20,             // Range Maximum
            0x20,               // Alignment
            0x20,               // Length
            )
        IRQ (Level, ActiveLow, Shared, )
            {7}
    })
    

    Dôležité je, že IRQ je level triggered s aktívnym stavom low.

    Moja registrácia IRQ handleru vyzerá takto:

    retval = devm_request_irq(&dev->dev, dev->irq, piix4_isr, IRQF_SHARED | IRQF_TRIGGER_LOW, "piix4_smbus", piix4_aux_adapter);

    Výpis z /proc/interrupts vyzerá takto:

                CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7       CPU8       CPU9       CPU10      CPU11      CPU12      CPU13      CPU14      CPU15
       0:        110          0          0          0          0          0          0          0          0          0          0          0          0          0          0          0  IR-IO-APIC    2-edge      timer
       1:          0          0          0          0          0          0          0          0          0          0          0       3298          0          0          0          0  IR-IO-APIC    1-edge      i8042
       7:          0          0          0          0          0          0          0          0          0          0          0          0          0          3          0          0  IR-IO-APIC    7-edge      piix4_smbus

    Kernel síce registruje môj interrupt handler, ale je nastavený ako edge triggered, nie level triggerred.

    Súčasný kernel driver používa pre kontrolu stavu aktívne čakanie v slučke. Teda nastaví príslušné registre a v slučke kontroluje, vyčistenie bitu busy. Ja sa snažím prepísať ovládač, tak, aby bol riadený priamo prerušeniami bez použitia aktívneho čakania. Teraz prichádza paradox:

    Po spustení prvej transakcie nedôjde k volaniu prerušenia. Pri druhej, tretej atď áno. V prerušení je vždy status 0, teda zariadenie nie je busy, nedokončilo operáciu, neskončilo chybou. Teda v stave, v akom by malo byť pred transakciou. Tak mi to vŕtalo v hlave a pozrel som sa na časovanie:

    [  297.581942] Quick
    [  297.581949] isr HostStatus=00

    Interrupt handler je spustený o 7µs. Pripomeňme si, čo je vlastne quick write. Na I2C zbernici môže byť niekoľko zariadení. Každé zariadenie má 7-bitovú adresu. Komunikácia s každým zariadením začína tým, že master vyšle start bit, potom adresu, R/W bit a nakoniec čaká na potvrdenie od zariadenia. Ak zariadenie potvrdí príjem, komunikácia môže pokračovať. Quick write príkaz je len odoslanie adresy, čo je veľmi pekne vymyslené, pretože umožňuje enumerovať zariadenia (každé zariadenie, ktoré chce komunikovať musí najskôr odpovedať na svoju adresu). No ok, to som už asi zašiel trochu do detailov.

    Takže pošlem 10 bitov a interrupt handler sa spustí o 7µs po spustení druhého a každého ďalšieho zápisu. Z PM registra namapovaného cez MMIO viem, že frekvencia zbernice je 100kHz. Maximálna frekvencia je 1MHz. Ak beriem do úvahy to, čo viem prečítať z registrov, potom minimálny čas do ukončenia transakcie mal byť 100µs. Aj keby zbernica bežala na maximálnej frekvencii, nebolo by to pod 10µs. Takže interrupt handler sa mi spúšťa určite pred spustením transakcie (alebo prejsnejšie povedané po uvoľnení interrupt line), zatiaľ čo vo windowse to funguje po ukončení transakcie. Preto mám neplatný stav a preto zrejme dochádza ku kolíziám, pretože sa snažím vysielať presne v momente, keď sa o to snaží zariadenie.

    Otázka znie, prečo kernel ignoruje moju požiadavku o level triggered interrupt?

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon

    V tomto formuláři můžete formulovat svou stížnost ohledně příspěvku. Nejprve vyberte typ akce, kterou navrhujete provést s diskusí či příspěvkem. Potom do textového pole napište důvody, proč by měli admini provést vaši žádost, problém nemusí být patrný na první pohled. Odkaz na příspěvek bude přidán automaticky.

    Vaše jméno
    Váš email
    Typ požadavku
    Slovní popis
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.