Re: Where is CONFIG_BOOT_LOAD ?

2011-04-12 Thread Joachim Förster

On 04/08/2011 02:58 PM, Guillaume Dargaud wrote:

Isn't that blackfin specific?


So how do you change the loading address of the PowerPC kernel from its default 
0x40 address ?


Note that the default 0x400... is the link address of the zImage wrapper 
rather than the one of THE kernel.


Currently the link address seems to be hard-coded into
arch/powerpc/boot/wrapper
(a shell script). Since long ago I'm wondering why the maintainers did 
that. But I guess there is a reason, because it wasn't that way in the 
old arch/ppc days ;-) ...


Is configuring the zImage-piggy-back-loader through menuconfig  co evil?

  Joachim
___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


Re: Getting the IRQ number (Was: Basic driver devel questions ?)

2010-12-08 Thread Joachim Förster
Hi Guillaume,

Michael Ellerman wrote:
 On Wed, 2010-12-08 at 11:18 +0100, Guillaume Dargaud wrote:
 ///
 // Called on insmod
 static int __init xad_init(void) {
   int rc=0;
   printk(KERN_INFO SD Module %s: loading...\n FL, NAME);
   

Are you sure that you want to have the chrdev registration here (the
following code)?

Such stuff typically goes into the probe() function. The modules's
init() just registers the driver. Furthermore your global variables
prohibit having more than one device instance using the driver.

   // Deal with the device
   first = MKDEV (my_major, my_minor);
   register_chrdev_region(first, count, DEVNAME);
   my_cdev = cdev_alloc ();
   if (NULL==my_cdev) goto Err;
   
   cdev_init(my_cdev, fops);
   cdev_add (my_cdev, first, count);

   printk(KERN_INFO SD Module %s: Major=%d, Minor=%d, Count=%d\n FL, NAME, 
 my_major, my_minor, count);

   // Driver
   rc = platform_driver_register(xad_driver);
 
 Should be of_register_platform_driver()
 
 //  rc = platform_driver_probe(xad_driver, xad_driver_probe);
   if (rc) goto err_plat;


I think the following function call to platform_device_register_simple()
and if() does not belong here.

As was said before, devices are registered by the (platform) bus. Your
driver module, needs to just register, well, the driver. You are doing
this above - and that's it: (of_)platform_driver_register().

   // Device
   pdev=platform_device_register_simple(xps-acqui-data, -1, NULL, 0);
   if (IS_ERR(pdev)) {
   rc = PTR_ERR(pdev);
   platform_driver_unregister(xad_driver);
   goto err_plat;
   }


   return 0;

 err_plat:
   unregister_chrdev_region(first, count);
 Err:
   printk(KERN_ERR SD Module %s: Failed loading rc=%d\n FL, NAME, rc);
   return rc;
 }

 Joachim
___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev