Newsgroup: it.comp.os.linux.sys
Titolo: DSDT table tecra 8200

Salve a tutti. Ho un problema con il supporto acpi del mio laptop un tecra
8200. In pratica se compilo il kernel con il supporto acpi questo fà
casino con l'irq routing. Nello specifico la dsdt table dell'acpi non è
corretta e di conseguenza mi manda a pallino le altre periferiche che
usano accesso irq tipo il wireless. Infatti la scheda wireless se non
compilo il supporto acpi funziona perfettamente. L'errore della scheda
wireless è il seguente:
RequestIRQ: in use
Ho letto qualche miliardo di posto e vari su google e a quanto pare
l'unica soluzione per correggere il problema è riassemblare e compilare la
dsdt table e poi ricompilare il kernel. L'operazione non è per niente
semplice ho letto queste istruzioni:
http://acpi.sourceforge.net/wiki/index.php/HowToOverrideTable
Ma ci sono dei punti che non ho capito.
allora io scarico il mio file per il toshiba ok e quindi salto al punto 4 
lo compilo ma ricevo 40 warnings e 16 errori.. e già qui mi blocco..
arriviamo al punto 5.. lui la fà semplice:
"patch -p1 -i /PATH/TO/osl.diff
Customize the path to your "dsdt.hex"."
Ok ma io dopo la compilazione mi trovo un file hex... cioè mi pare di aver
capito che il .diff devo costruirmelo da solo.. ma come??
Sapete darmi una mano?mille grazie ciao ciao
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 capito che il .diff devo costruirmelo da solo.. ma come??
E` sul sito, comunque non e` vitale. Quello che devi fare e` modificare
il file drivers/acpi/osl.c. La funzione chiave e`
acpi_os_table_override. Al posto di "*new_table = NULL;" devi mettere:
if (strncmp(existing_table->signature, DSDT_SIG, 4)) == 0)
        /* override */
        *new_table = (struct acpi_table_header *)AmlCode;
else
        *new_table = NULL;
AmlCode e` definito nel file hex generato. Questo file hex andra`
incluso prima della funzione, aggiungendo:
#include "/path/my_dsdt.hex"
Luca
-- 
Home: 
http://kronoz.cjb.net
"Di tutte le perversioni sessuali, la castita` e` la piu` strana".
Anatole France

Grazie mille per l'aiuto. Ho seguito alla lettera tutto quello che hai
scritto ma ho incontrato dei problemi:
1)Ho scaricato e compilato iasl dal sito della intel, poi ho dato il
comando: iasl -tc dsdt.dsl (Il file dsdt in realta prima era
Toshiba-Tecra_8200-1.30-original.asl l'ho rinominato io). Compilo e im dà
circa 40 errori e 16 warnings dopo la carrelata di errori mi ritrovo con
il mio bel dsdt.hex 
2)Modifico il file drivers/acpi/osl.c aggiungendo alla lista degli include
la tabella dell'hex #include "/prova/dsdt.hex" poi modifico il codice e
Al posto di "*new_table = NULL;" metto:
 if (strncmp(existing_table->signature, DSDT_SIG, 4)) == 0)
         /* override */
         *new_table = (struct acpi_table_header *)AmlCode;
 else
         *new_table = NULL;
Ed è qui che in fase di compilazione ricevo un errore sull'== . Siccome
programmo in C ma a livello un pò più amatoriale ho capito che il problema
stà nella stringcompare e sul infatti mi dice error before ==. Secondo me
il problema stà nel: existing_table->signature non capisco il simbolo ->.
Poi allora ho sostituito: 
*new_tale = NULL 
con: 
*new_table = (struct acpi_table_header *)AmlCode; 
Eliminado l'if. Dopo questa operazione tutto si è compilato correttamente
e la scheda wireless funziona includendendo il supporto acpi. Il problema
ora è che mi dice che la tabella acpi non è valida e infatti il supoorto
acpi non funziona. Mentre prima funzionava l'acpi. Molto probabilmente c'è
qualcosa di errato o nella mia modifica o nell'hex table.. ma cosa??Forse
dovrei correggere quei 40 error?ma come? Kronos sai darmi una mano?grazie
mille a tutti ciao ciao


Ciao ho fatto un pò di ricerca su google e il problema stava nell'==
ho rimediato in questo modo:
delete the following line: 
*new_table = NULL
and replace it with: 
       *new_table=(strncmp(existing_table->signature, DSDT_SIG, 4)) ? NULL
                             : (struct acpi_table_header *) AmlCode;
Ora si compila senza problemi.
Ho trovato anche un tutorial su come correggere gli errori. Non sembra per
niente facile.. ci provo lo stesso... grazie mille  ciao ciao


 dovrei correggere quei 40 error?ma come?
Devi prima imparare l'AML per sistemare gli errori piu` comuni. Per il
resto devi arrangiarti, sperando di capire come il firmware interagisce
con l'hardware. Non e` affatto banale.
