|
@@ -640,8 +640,15 @@ again:
|
|
|
}
|
|
|
|
|
|
/* we have a packet address, so tell the card to use it */
|
|
|
+#ifndef CONFIG_XAENIAX
|
|
|
SMC_outb (packet_no, PN_REG);
|
|
|
-
|
|
|
+#else
|
|
|
+ /* On Xaeniax board, we can't use SMC_outb here because that way
|
|
|
+ * the Allocate MMU command will end up written to the command register
|
|
|
+ * as well, which will lead to a problem.
|
|
|
+ */
|
|
|
+ SMC_outl (packet_no << 16, 0);
|
|
|
+#endif
|
|
|
/* do not write new ptr value if Write data fifo not empty */
|
|
|
while ( saved_ptr & PTR_NOTEMPTY )
|
|
|
printf ("Write data fifo not empty!\n");
|
|
@@ -702,7 +709,9 @@ again:
|
|
|
|
|
|
/* release packet */
|
|
|
/* no need to release, MMU does that now */
|
|
|
- /* SMC_outw (MC_FREEPKT, MMU_CMD_REG); */
|
|
|
+#ifdef CONFIG_XAENIAX
|
|
|
+ SMC_outw (MC_FREEPKT, MMU_CMD_REG);
|
|
|
+#endif
|
|
|
|
|
|
/* wait for MMU getting ready (low) */
|
|
|
while (SMC_inw (MMU_CMD_REG) & MC_BUSY) {
|
|
@@ -722,7 +731,9 @@ again:
|
|
|
|
|
|
/* release packet */
|
|
|
/* no need to release, MMU does that now */
|
|
|
- /* SMC_outw (MC_FREEPKT, MMU_CMD_REG); */
|
|
|
+#ifdef CONFIG_XAENIAX
|
|
|
+ SMC_outw (MC_FREEPKT, MMU_CMD_REG);
|
|
|
+#endif
|
|
|
|
|
|
/* wait for MMU getting ready (low) */
|
|
|
while (SMC_inw (MMU_CMD_REG) & MC_BUSY) {
|
|
@@ -735,7 +746,15 @@ again:
|
|
|
}
|
|
|
|
|
|
/* restore previously saved registers */
|
|
|
+#ifndef CONFIG_XAENIAX
|
|
|
SMC_outb( saved_pnr, PN_REG );
|
|
|
+#else
|
|
|
+ /* On Xaeniax board, we can't use SMC_outb here because that way
|
|
|
+ * the Allocate MMU command will end up written to the command register
|
|
|
+ * as well, which will lead to a problem.
|
|
|
+ */
|
|
|
+ SMC_outl(saved_pnr << 16, 0);
|
|
|
+#endif
|
|
|
SMC_outw( saved_ptr, PTR_REG );
|
|
|
|
|
|
return length;
|
|
@@ -913,7 +932,15 @@ static int smc_rcv()
|
|
|
udelay(1); /* Wait until not busy */
|
|
|
|
|
|
/* restore saved registers */
|
|
|
+#ifndef CONFIG_XAENIAX
|
|
|
SMC_outb( saved_pnr, PN_REG );
|
|
|
+#else
|
|
|
+ /* On Xaeniax board, we can't use SMC_outb here because that way
|
|
|
+ * the Allocate MMU command will end up written to the command register
|
|
|
+ * as well, which will lead to a problem.
|
|
|
+ */
|
|
|
+ SMC_outl( saved_pnr << 16, 0);
|
|
|
+#endif
|
|
|
SMC_outw( saved_ptr, PTR_REG );
|
|
|
|
|
|
if (!is_error) {
|