microcodepatch
Peter Desnoyers
pdesnoyers at chinook.com
Thu Oct 25 05:06:31 EST 2001
The I2C driver doesn't work properly with the microcode patch - it
initializes tbptr and rbptr to 0, not r_tbase and r_rbase, and it uses
the INIT_TRX command (which the patched code doesn't support) instead of
separate INIT_RX and INIT_TX.
You might want to try the attached minor patch, which works for us.
--
.....................................................................
Peter Desnoyers (781) 457-1165 pdesnoyers at chinook.com
Chinook Communications (617) 661-1979 pjd at fred.cambridge.ma.us
100 Hayden Ave, Lexington MA 02421
-------------- next part --------------
Index: i2c-algo-8xx.c
===================================================================
RCS file: /src/cvs/hardhat/devkit/lsp/motorola-mbx860/linux-2.4.2_hhl20/drivers/i2c/i2c-algo-8xx.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- i2c-algo-8xx.c 2001/07/24 17:23:38 1.1.1.1
+++ i2c-algo-8xx.c 2001/10/01 19:08:20 1.2
@@ -99,8 +99,12 @@
volatile cpm8xx_t *cp = cpm_adap->cp;
cp->cp_cpcr =
- mk_cr_cmd(CPM_CR_CH_I2C, CPM_CR_INIT_TRX) | CPM_CR_FLG;
+ mk_cr_cmd(CPM_CR_CH_I2C, CPM_CR_INIT_RX) | CPM_CR_FLG;
while (cp->cp_cpcr & CPM_CR_FLG);
+
+ cp->cp_cpcr =
+ mk_cr_cmd(CPM_CR_CH_I2C, CPM_CR_INIT_TX) | CPM_CR_FLG;
+ while (cp->cp_cpcr & CPM_CR_FLG);
}
/* Select an arbitrary address. Just make sure it is unique.
@@ -151,12 +155,12 @@
iip->iic_rstate = 0;
iip->iic_rdp = 0;
- iip->iic_rbptr = 0;
+ iip->iic_rbptr = r_rbase;
iip->iic_rbc = 0;
iip->iic_rxtmp = 0;
iip->iic_tstate = 0;
iip->iic_tdp = 0;
- iip->iic_tbptr = 0;
+ iip->iic_tbptr = r_tbase;
iip->iic_tbc = 0;
iip->iic_txtmp = 0;
}
More information about the Linuxppc-embedded
mailing list