Skip to contentSkip to conversation

Ethernet issue in most recent git?

DISCUSSION Dirk Behme 3 participants 7 messages Jan 19, 2006

Subsystems (2)
lore
Share & tools
lore

Dirk Behme

author
#0 lore raw

Hi,

has anybody else problems with ethernet with 2.6.16-rc1-omap1 on OSK?

# mount -t nfs -o nolock 192.0.0.1:/home/omap_linux/nfs /mnt/nfs
NETDEV WATCHDOG: eth0: transmit timed out
mount: RPC: Unable to receive; errno = No route to host
mount: nfsmount failed: Bad file descriptor
mount: Mounting 192.0.0.1:/home/omap_linux/nfs on /mnt/nfs failed: Invalid argument
# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0E:99:02:02:42
          inet addr:192.0.0.2  Bcast:192.0.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:20 errors:1 dropped:0 overruns:0 carrier:1
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:840 (840.0 B)
          Interrupt:160 Base address:0x1300 DMA chan:ff
# cat /proc/interrupts
           CPU0
...
160:          1   eth0
...
Err:          0

Telnet and ping don't work as well. I imagine that I doesn't change any configuration, only kernel update form git. UBoots tftpboot works quite well.

Regards

Dirk

#1 lore raw
Quoted 26 lines · Dirk Behme

Hi,

has anybody else problems with ethernet with 2.6.16-rc1-omap1 on OSK?

# mount -t nfs -o nolock 192.0.0.1:/home/omap_linux/nfs /mnt/nfs
NETDEV WATCHDOG: eth0: transmit timed out
mount: RPC: Unable to receive; errno = No route to host
mount: nfsmount failed: Bad file descriptor
mount: Mounting 192.0.0.1:/home/omap_linux/nfs on /mnt/nfs failed:
Invalid argument
# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0E:99:02:02:42
          inet addr:192.0.0.2  Bcast:192.0.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:20 errors:1 dropped:0 overruns:0 carrier:1
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:840 (840.0 B)
          Interrupt:160 Base address:0x1300 DMA chan:ff
# cat /proc/interrupts
           CPU0
...
160:          1   eth0
...
Err:          0
Quoted 3 lines

Telnet and ping don't work as well. I imagine that I doesn't change any configuration, only kernel update form git. UBoots tftpboot works quite well.

I tested here and I had the same problems on H2 and OSK as well.

Regards,

Anderson Briglia
INdT - Manaus

#3 lore raw
In reply to Dirk Behme

Hi,

Quoted 26 lines · Dirk Behme

Hi,

has anybody else problems with ethernet with 2.6.16-rc1-omap1 on OSK?

# mount -t nfs -o nolock 192.0.0.1:/home/omap_linux/nfs /mnt/nfs
NETDEV WATCHDOG: eth0: transmit timed out
mount: RPC: Unable to receive; errno = No route to host
mount: nfsmount failed: Bad file descriptor
mount: Mounting 192.0.0.1:/home/omap_linux/nfs on /mnt/nfs failed: 
Invalid argument
# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0E:99:02:02:42
          inet addr:192.0.0.2  Bcast:192.0.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:20 errors:1 dropped:0 overruns:0 carrier:1
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:840 (840.0 B)
          Interrupt:160 Base address:0x1300 DMA chan:ff
# cat /proc/interrupts
           CPU0
...
160:          1   eth0
...
Err:          0
Quoted 3 lines

Telnet and ping don't work as well. I imagine that I doesn't change any configuration, only kernel update form git. UBoots tftpboot works quite well.

Same problem here. I'd assume it's the recent "IRQ type flags" patch that does not work properly for omap gpio interrupts.

Tony

#2 lore raw
In reply to Anderson Briglia
Quoted 7 lines · Anderson Briglia
Quoted 4 lines · Dirk Behme

Telnet and ping don't work as well. I imagine that I doesn't change any configuration, only kernel update form git. UBoots tftpboot works quite well.

I tested here and I had the same problems on H2 and OSK as well.

Nfsroot seems to work on H4 though.

Tony

author
#4 lore raw
In reply to Tony Lindgren
Quoted 4 lines · Tony Lindgren
Quoted 1 line

Telnet and ping don't work as well. I imagine that I doesn't change any configuration, only kernel update form git. UBoots tftpboot works quite well.

Same problem here. I'd assume it's the recent "IRQ type flags" patch that does not work properly for omap gpio interrupts.

Thanks for the hint! Please try quick hack for OSK ethernet in the attachment.

With

-- cut --
[PATCH] IRQ type flags
/include/asm-arm/irq.h
blob:59975ee43cf139138503288801c7d8758dada859 ->
blob:7772432d3fd7750506943eaf88ea7eda9e720a7d

asm-arm/irq.h +0 -0
@@ -25,10 +25,14 @@ extern void disable_irq_nosync(unsigned

extern void disable_irq(unsigned int);
extern void enable_irq(unsigned int);
-#define __IRQT_FALEDGE (1 << 0)
-#define __IRQT_RISEDGE (1 << 1)
-#define __IRQT_LOWLVL (1 << 2)
-#define __IRQT_HIGHLVL (1 << 3)
+/*
+ * These correspond with the SA_TRIGGER_* defines, and therefore the
+ * IRQRESOURCE_IRQ_* defines.
+ */
+#define __IRQT_RISEDGE (1 << 0)
+#define __IRQT_FALEDGE (1 << 1)
+#define __IRQT_HIGHLVL (1 << 2)
+#define __IRQT_LOWLVL (1 << 3)
#define IRQT_NOEDGE (0)
#define IRQT_RISING (__IRQT_RISEDGE)
-- cut --

http://source.mvista.com/git/gitweb.cgi?p=linux-omap-2.6.git;a=blobdiff;h=7772432d3fd7750506943eaf88ea7eda9e720a7d;hp=59975ee43cf139138503288801c7d8758dada859;hb=9ded96f24c3a5fcbef954e88c443385a1af37eb9;f=include/asm-arm/irq.h

the meaning of __IRQT_RISEDGE and __IRQT_FALEDGE was inverted :( So I think we have to exchange _all_ places in OMAP code where these are used?

Dirk

arch/arm/plat-omap/gpio.c renamed from arch/arm/plat-omap/gpio.c_orig +4 -1
@@ -448,8 +448,11 @@ static int _set_gpio_triggering(struct g
 		/* We allow only edge triggering, i.e. two lowest bits */
 		if (trigger & ~IRQT_BOTHEDGE)
 			BUG();
-		/* NOTE: knows __IRQT_{FAL,RIS}EDGE match OMAP hardware */
 		trigger &= 0x03;
+		if(trigger == 0x01)
+			trigger = 0x02;
+		else
+			trigger = 0x01;
 		l = __raw_readl(reg);
 		l &= ~(3 << (gpio << 1));
 		l |= trigger << (gpio << 1);
#5 lore raw
Quoted 27 lines · Dirk Behme
Quoted 6 lines · Tony Lindgren
Quoted 3 lines

Telnet and ping don't work as well. I imagine that I doesn't change any configuration, only kernel update form git. UBoots tftpboot works quite well.

Same problem here. I'd assume it's the recent "IRQ type flags" patch that does not work properly for omap gpio interrupts.

Thanks for the hint! Please try quick hack for OSK ethernet in the attachment.

With

-- cut --
[PATCH] IRQ type flags
/include/asm-arm/irq.h
blob:59975ee43cf139138503288801c7d8758dada859 ->
blob:7772432d3fd7750506943eaf88ea7eda9e720a7d

asm-arm/irq.h +0 -4
@@ -25,10 +25,14 @@ extern void disable_irq_nosync(unsigned
 extern void disable_irq(unsigned int);
 extern void enable_irq(unsigned int);
-#define __IRQT_FALEDGE (1 << 0)
-#define __IRQT_RISEDGE (1 << 1)
-#define __IRQT_LOWLVL (1 << 2)
-#define __IRQT_HIGHLVL (1 << 3)

asm-arm/irq.h extern void disable_irq_nosync(unsigned · line 36

Quoted 10 lines
asm-arm/irq.h +8 -0
+/*
+ * These correspond with the SA_TRIGGER_* defines, and therefore the
+ * IRQRESOURCE_IRQ_* defines.
+ */
+#define __IRQT_RISEDGE (1 << 0)
+#define __IRQT_FALEDGE (1 << 1)
+#define __IRQT_HIGHLVL (1 << 2)
+#define __IRQT_LOWLVL (1 << 3)
 #define IRQT_NOEDGE (0)
 #define IRQT_RISING (__IRQT_RISEDGE)

Ah, that explains!

Quoted 5 lines

http://source.mvista.com/git/gitweb.cgi?p=linux-omap-2.6.git;a=blobdiff;h=7772432d3fd7750506943eaf88ea7eda9e720a7d;hp=59975ee43cf139138503288801c7d8758dada859;hb=9ded96f24c3a5fcbef954e88c443385a1af37eb9;f=include/asm-arm/irq.h

the meaning of __IRQT_RISEDGE and __IRQT_FALEDGE was inverted :( So I think we have to exchange _all_ places in OMAP code where these are used?

We should be able to just remap them in gpio.c. I believe there's a note there somewhere saying that by coincidence the bits are the same in omap hw as in irq.h...

Tony

#6 lore raw
Quoted 8 lines · Tony Lindgren
Quoted 3 lines · Dirk Behme

the meaning of __IRQT_RISEDGE and __IRQT_FALEDGE was inverted :( So I think we have to exchange _all_ places in OMAP code where these are used?

We should be able to just remap them in gpio.c. I believe there's a note there somewhere saying that by coincidence the bits are the same in omap hw as in irq.h...

I'll push the following patch today:

arch/arm/plat-omap/gpio.c +6 -3
index efba093..cf5ad29 100644
@@ -448,11 +448,14 @@ static int _set_gpio_triggering(struct g
 		/* We allow only edge triggering, i.e. two lowest bits */
 		if (trigger & ~IRQT_BOTHEDGE)
 			BUG();
-		/* NOTE: knows __IRQT_{FAL,RIS}EDGE match OMAP hardware */
-		trigger &= 0x03;
 		l = __raw_readl(reg);
 		l &= ~(3 << (gpio << 1));
-		l |= trigger << (gpio << 1);
+		if (trigger == IRQT_RISING)
+			l |= 2 << gpio;
+		else if (trigger == IRQT_FALLING)
+			l |= 1 << gpio;
+		else
+			goto bad;
 		break;
 	case METHOD_GPIO_730:
 		reg += OMAP730_GPIO_INT_CONTROL;