lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20121126090006.GA4078@zuhnb712.ap.bm.net>
Date:	Mon, 26 Nov 2012 17:00:06 +0800
From:	Woody Wu <narkewoody@...il.com>
To:	Belisko Marek <marek.belisko@...il.com>
Cc:	linux-kernel@...r.kernel.org
Subject: Re: The ethernet driver doesn't get probed

On Mon, Nov 26, 2012 at 08:47:57AM +0100, Belisko Marek wrote:
> On Mon, Nov 26, 2012 at 7:59 AM, Woody Wu <narkewoody@...il.com> wrote:
> > Hi, List
> >
> > I enabled an ax88796 Ethernet driver in the kernel configuration menu.
> > Kernel version is 3.4.19. The arch is ARM and the system type is
> > Samsung S3C2410.
> >
> > In my debugging, I found the probe function of the driver did not get
> > invoked.
> Did you define platform data and platform device in board file?
> See: arch/arm/mach-pxa/colibri-pxa300.c (line ~87)


No. After read the colibri-pxa300.c, now I understand I must do it!
Great! Thanks!


But some details in the file I need your help.

In pxa300,

static struct resource colibri_asix_resource[] = {
	[0] = {
		.start = PXA3xx_CS2_PHYS,
		.end   = PXA3xx_CS2_PHYS + (0x20 * 2) - 1,
		.flags = IORESOURCE_MEM,
	},
	[1] = {
		.start = PXA_GPIO_TO_IRQ(COLIBRI_ETH_IRQ_GPIO),
		.end   = PXA_GPIO_TO_IRQ(COLIBRI_ETH_IRQ_GPIO),
		.flags = IORESOURCE_IRQ | IRQF_TRIGGER_FALLING,
	}
};

On my board, I only know the below information about the ax88786
controllers::
    eth0: AX88796B found at 0x11000000, using IRQ 52, MAC 00:30:61:00:55:38
    eth1: AX88796B found at 0x19000000, using IRQ 53, MAC 00:30:61:00:55:39

Do you think how should I specify resources for it? Especially in the
IRQ part, I don't understand whether I should use the GPIO_TO_IRQ
macros as that in the pxa300.

Also, for the chip selection logic appearing in the pxa300, 

static mfp_cfg_t colibri_pxa300_eth_pin_config[] __initdata = {
	GPIO1_nCS2,			/* AX88796 chip select */
	GPIO26_GPIO | MFP_PULL_HIGH	/* AX88796 IRQ */
};

I also have no ideal whether I should use it.  I don't have schematics
for the board, I only have some kernel logs from an old version of
running linux, for which I don't have source code.

Really hope you can give me some help!  Thanks in advance.


> >
> > This driver is declared as platform_driver
> >
> > static struct platform_driver axdrv = {
> >         .driver = {
> >                 .name           = "ax88796",
> >                 .owner          = THIS_MODULE,
> >         },
> >         .probe          = ax_probe,
> >         .remove         = ax_remove,
> >         .suspend        = ax_suspend,
> >         .resume         = ax_resume,
> > };
> >
> > module_platform_driver(axdrv);
> >
> > So, its driver init function actually goes through
> > platform_driver_register() and then driver_register(), which eventually
> > call driver_attach() trying to attach the driver to the "platform" bus.
> > But, on the platform bus, there is no any device that can match the
> > ax88796 driver, hence the driver failed in attaching.
> >
> > I discovered the full list of devices found on the platform bus:
> >
> >     s3c2410-ohci,
> >     s3c2410-lcd,
> >     s3c2410-wdt,
> >     s3c2410-i2c,
> >     s3c24xx-iis,
> >     s3c2410-nand,
> >     s3c24xx_led,
> >     s3c2410-uart,
> >
> > You see, in the list, there is no a device looks like ax88796. All these
> > already existed devices on the platform bus are build-in peripherals on
> > the SoC of s3c2410, they are compiled into the code by enabling some
> > kernel configuration options.
> >
> > My question is, in terms of Linux driver technology, how to enable a
> > non-PCI and not on-chip device driver? I think the ax_probe function
> > must be called somehow, is this thinking right? If yes, I think before
> > the driver get initialized, the corresponding device has to appear on
> > the bus, but now it seems not.
> >
> > Thanks in advance.
> >
> > --
> > woody
> > I can't go back to yesterday - because I was a different person then.
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> > the body of a message to majordomo@...r.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> > Please read the FAQ at  http://www.tux.org/lkml/
> 
> Cheers,
> 
> mbe
> 
> -- 
> as simple and primitive as possible
> -------------------------------------------------
> Marek Belisko - OPEN-NANDRA
> Freelance Developer
> 
> Ruska Nova Ves 219 | Presov, 08005 Slovak Republic
> Tel: +421 915 052 184
> skype: marekwhite
> twitter: #opennandra
> web: http://open-nandra.com

-- 
woody
I can't go back to yesterday - because I was a different person then.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ