All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Klute <thomas2.klute@uni-dortmund.de>
To: Tony Lindgren <tony@atomide.com>
Cc: linux-omap@vger.kernel.org
Subject: Re: smsc911x on Gumstix Overo/Tobi doesn't work
Date: Mon, 19 Mar 2012 17:23:57 +0100	[thread overview]
Message-ID: <4F675D9D.2040102@uni-dortmund.de> (raw)
In-Reply-To: <20120316193337.GE7276@atomide.com>

[-- Attachment #1: Type: text/plain, Size: 3745 bytes --]

Am 16.03.2012 20:33, schrieb Tony Lindgren:
> Hi,
> 
> * Thomas Klute <thomas2.klute@uni-dortmund.de> [120316 05:08]:
>> Hi,
>>
>> I have trouble getting the Ethernet port on a Gumstix Overo with Tobi
>> expansion board to work with current kernel versions. With the latest
>> commit from linux-omap git (b8fe1781ec8bed5e086691a827a6ee11facec2aa),
>> the output from loading the smsc911x driver is as follows:
>>
>> du14:~# modprobe smsc911x
>> [  254.843811] smsc911x: Driver version 2008-10-21
>> [  254.854553] smsc911x: Driver version 2008-10-21
>> [  254.859588] _regulator_get: smsc911x.1 supply vdd33a not found, using
>> dummy regulator
>> [  254.868377] _regulator_get: smsc911x.1 supply vddvario not found,
>> using dummy regulator
>>
>> "ip link show" does not show any available Ethernet port.
> 
> The first instance one should work the same way as earlier using
> fixed regulator in gpmc-smsc911x.c. Is it not working for you
> somehow? At least it works for me on zoom3.

The Tobi board has only one Ethernet port.

>> I know there has been some trouble with changes around smsc911x
>> regulator support and Gumstix Overo in particular. Am I just missing the
>> right regulator in my kernel config or is this a bug? I can test patches
>> in the latter case.
> 
> The second smsc911x now needs a regulator. For multiple smsc911x instances,
> we should change things around so no regulator is created if one
> is passed.
> 
> Care to test the following patch by passing a fixed regulator
> from board-overo.c?

After applying the patch the Ethernet port works consistently once I had
done a cold boot (reboot from the unpatched kernel did not work).
Thank you!

However, I noticed another problem while testing the patch (not sure if
it occurs with the previous version, I can check if that helps): A NULL
pointer dereference occurs when unloading the module, see attached log.

Regards,
Thomas

> You can copy the fixed regulator from gpmc-smsc911x.c, or ideally pass
> the real smsc911x controlling regulator for overo.
> 
> Regards,
> 
> Tony
> 
> 
> From: Tony Lindgren <tony@atomide.com>
> Date: Fri, 16 Mar 2012 12:26:25 -0700
> Subject: [PATCH] ARM: OMAP2+: Allow passing smsc911x regulator from boards
> 
> Otherwise we won't be able to properly support multiple
> instances of smsc911x.
> 
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> 
> --- a/arch/arm/mach-omap2/gpmc-smsc911x.c
> +++ b/arch/arm/mach-omap2/gpmc-smsc911x.c
> @@ -97,17 +97,26 @@ void __init gpmc_smsc911x_init(struct omap_smsc911x_platform_data *board_data)
>  {
>  	struct platform_device *pdev;
>  	unsigned long cs_mem_base;
> +	struct platform_device *regulator = NULL;
>  	int ret;
>  
>  	gpmc_cfg = board_data;
>  
> -	if (!gpmc_cfg->id) {
> -		ret = platform_device_register(&gpmc_smsc911x_regulator);
> -		if (ret < 0) {
> -			pr_err("Unable to register smsc911x regulators: %d\n",
> -			       ret);
> -			return;
> -		}
> +	if (gpmc_cfg->regulator)
> +		regulator = gpmc_cfg->regulator;
> +	else if (!gpmc_cfg->id)
> +		regulator = &gpmc_smsc911x_regulator;
> +
> +	if (!regulator) {
> +		pr_err("Missing smsc911x regulator in board_data\n");
> +		return;
> +	}
> +
> +	ret = platform_device_register(regulator);
> +	if (ret < 0) {
> +		pr_err("Unable to register smsc911x regulators: %d\n",
> +		       ret);
> +		return;
>  	}
>  
>  	if (gpmc_cs_request(gpmc_cfg->cs, SZ_16M, &cs_mem_base) < 0) {
> --- a/arch/arm/plat-omap/include/plat/gpmc-smsc911x.h
> +++ b/arch/arm/plat-omap/include/plat/gpmc-smsc911x.h
> @@ -19,6 +19,7 @@ struct omap_smsc911x_platform_data {
>  	int	gpio_irq;
>  	int	gpio_reset;
>  	u32	flags;
> +	struct platform_device *regulator;
>  };
>  
>  #if defined(CONFIG_SMSC911X) || defined(CONFIG_SMSC911X_MODULE)

[-- Attachment #2: smsc911x-unload-error.log --]
[-- Type: text/x-log, Size: 3268 bytes --]

du14:~# modprobe -r smsc911x
[  213.617767] Unable to handle kernel NULL pointer dereference at virtual address 0000073c
[  213.627044] pgd = d56b8000
[  213.630554] [0000073c] *pgd=00000000
[  213.634948] Internal error: Oops: 5 [#1]
[  213.639068] Modules linked in: ipt_MASQUERADE xt_tcpudp iptable_nat nf_nat nf_conntrack_ipv4 nf_conntrack nf_defrag_ipv4 ip_tables x_tables ath9k_htc ath9k_common ath9k_hw carl9170 ath snd_soc_twl4030 smsc ohci_hcd ehci_hcd snd_soc_core regmap_spi regmap_i2c snd_pcm snd_timer smsc911x(-) libertas_sdio snd soundcore snd_page_alloc libertas twl4030_usb
[  213.671844] CPU: 0    Tainted: G        W     (3.3.0-rc7-11899-gb8fe178-dirty #103)
[  213.679901] PC is at regulator_bulk_disable+0x18/0x90
[  213.685211] LR is at smsc911x_drv_remove+0xd4/0xf4 [smsc911x]
[  213.691253] pc : [<c02395fc>]    lr : [<bf0599cc>]    psr: 80000013
[  213.691253] sp : d56b7ed8  ip : 00000002  fp : bea9fdb4
[  213.703277] r10: 00000738  r9 : d56b6000  r8 : 00000002
[  213.708770] r7 : d6c85408  r6 : 00000738  r5 : d6c85400  r4 : 00000000
[  213.715606] r3 : d6534500  r2 : 00000000  r1 : 00000738  r0 : 00000002
[  213.722442] Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
[  213.729919] Control: 10c5387d  Table: 956b8019  DAC: 00000015
[  213.735961] Process modprobe (pid: 2395, stack limit = 0xd56b62f0)
[  213.742431] Stack: (0xd56b7ed8 to 0xd56b8000)
[  213.747009] 7ec0:                                                       d6534500 d6779000
[  213.755584] 7ee0: d6c85400 00000000 d6c85408 c000d484 00000000 bf0599cc bf0598f8 d6c85408
[  213.764160] 7f00: bf05b6dc d6c8543c 00000081 c02618d0 c02618bc c026041c d6c85408 bf05b6dc
[  213.772735] 7f20: d6c8543c c02609f0 bf05b6dc 00000000 c0664b08 c02602f8 bf05b718 00000000
[  213.781311] 7f40: b6f3b1b0 c0064db0 d6c48588 63736d73 78313139 c00a3b00 d6534500 00000001
[  213.789916] 7f60: 00000000 d6534500 00000001 c000d3d4 00000081 60000010 b6f3b208 bea9fdc0
[  213.798492] 7f80: bea9fdb4 0005e8c8 b6f3b180 b6f3b180 b6f3b1b0 00000000 b6f3b180 b6f3b180
[  213.807067] 7fa0: b6f3b1b0 c000d2c0 b6f3b180 b6f3b180 b6f3b1b0 00000000 b6f3a000 00000000
[  213.815643] 7fc0: b6f3b180 b6f3b180 b6f3b1b0 00000081 00000000 b6f3b208 bea9fdc0 bea9fdb4
[  213.824218] 7fe0: 00000000 bea9e990 b6f23988 b6e51b5c 60000010 b6f3b1b0 00000000 00000000
[  213.832824] [<c02395fc>] (regulator_bulk_disable+0x18/0x90) from [<bf0599cc>] (smsc911x_drv_remove+0xd4/0xf4 [smsc911x])
[  213.844268] [<bf0599cc>] (smsc911x_drv_remove+0xd4/0xf4 [smsc911x]) from [<c02618d0>] (platform_drv_remove+0x14/0x18)
[  213.855407] [<c02618d0>] (platform_drv_remove+0x14/0x18) from [<c026041c>] (__device_release_driver+0x7c/0xbc)
[  213.865905] [<c026041c>] (__device_release_driver+0x7c/0xbc) from [<c02609f0>] (driver_detach+0x8c/0xb4)
[  213.875885] [<c02609f0>] (driver_detach+0x8c/0xb4) from [<c02602f8>] (bus_remove_driver+0x8c/0xb4)
[  213.885284] [<c02602f8>] (bus_remove_driver+0x8c/0xb4) from [<c0064db0>] (sys_delete_module+0x1ec/0x280)
[  213.895233] [<c0064db0>] (sys_delete_module+0x1ec/0x280) from [<c000d2c0>] (ret_fast_syscall+0x0/0x3c)
[  213.904998] Code: e1a06001 e1a0a001 e3a04000 ea000006 (e59a0004) 
[  213.913635] ---[ end trace 3dd21d0e580906b5 ]---
Speicherzugriffsfehler
du14:~# 

  reply	other threads:[~2012-03-19 16:24 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-16 11:32 smsc911x on Gumstix Overo/Tobi doesn't work Thomas Klute
2012-03-16 19:33 ` Tony Lindgren
2012-03-19 16:23   ` Thomas Klute [this message]
2012-03-19 22:51     ` Tony Lindgren
2012-03-20 14:27       ` Thomas Klute
2012-03-20 19:47         ` Javier Martinez Canillas
2012-03-21 16:29           ` Thomas Klute
2012-03-30 15:28           ` Thomas Klute
2012-04-01 19:20             ` Javier Martinez Canillas
2012-05-02 11:42               ` Thomas Klute
2012-05-03 11:09                 ` Javier Martinez Canillas
2012-05-09 11:47                   ` Thomas Klute
2012-03-21 17:55 ` [PATCH] [RFC] Correct registration of multiple gpmc smsc911x devices Russ Dill
2012-03-21 18:13   ` Mark Brown
2012-03-21 18:18     ` Porter, Matt
2012-03-21 18:24     ` Porter, Matt
2012-03-21 18:39       ` Tony Lindgren
2012-03-21 19:00         ` Mark Brown
2012-03-21 19:30           ` Tony Lindgren
2012-03-21 19:38             ` Mark Brown
2012-03-21 19:41               ` Tony Lindgren
2012-03-21 20:45                 ` Russ Dill
2012-03-22  5:19                 ` [PATCH 00/13] Fixup gmpc smsc911x regulator handling Russ Dill
2012-03-22  5:19                   ` [PATCH 01/13] Remove odd gpmc_cfg/board_data redirection Russ Dill
2012-03-22  5:19                   ` [PATCH 02/13] Fix possible stale smsc911x flags Russ Dill
2012-03-22  5:19                   ` [PATCH 03/13] Remove unused rate calculation Russ Dill
2012-03-22  5:19                   ` [PATCH 04/13] Remove non-existent parameter from fixed-helper.c kernel doc Russ Dill
2012-03-22 11:36                     ` Mark Brown
2012-03-22 18:30                       ` Russ Dill
2012-03-22  5:19                   ` [PATCH 05/13] Remove regulator support from gmpc-smsc911x Russ Dill
2012-03-22  5:19                   ` [PATCH 06/13] Add dummy smsc911x regulators to cm-t35 Russ Dill
2012-03-22  5:19                   ` [PATCH 07/13] Add dummy smsc911x regulators to igep0020 Russ Dill
2012-03-22  5:19                   ` [PATCH 08/13] Add dummy smsc911x regulators to ldp Russ Dill
2012-03-22  7:06                     ` Koen Kooi
2012-03-22  5:19                   ` [PATCH 09/13] Add dummy smsc911x regulators to omap3evm Russ Dill
2012-03-22  7:07                     ` Koen Kooi
2012-03-22  7:16                       ` Russ Dill
2012-03-22  5:19                   ` [PATCH 10/13] Add dummy smsc911x regulators to omap3logic Russ Dill
2012-03-22  5:19                   ` [PATCH 11/13] Add dummy smsc911x regulators to omap3stalker Russ Dill
2012-03-22  5:19                   ` [PATCH 12/13] Add dummy smsc911x regulators to overo Russ Dill
2012-03-22  5:19                   ` [PATCH 13/13] Add dummy smsc911x regulators to zoom-debugboard Russ Dill
2012-03-22 11:37                     ` Mark Brown
2012-03-22 18:29                       ` Russ Dill
2012-03-23  8:49                         ` Igor Grinberg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4F675D9D.2040102@uni-dortmund.de \
    --to=thomas2.klute@uni-dortmund.de \
    --cc=linux-omap@vger.kernel.org \
    --cc=tony@atomide.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.