diff options
| author | Arnd Bergmann <arnd@arndb.de> | 2013-04-08 18:26:15 +0200 | 
|---|---|---|
| committer | Arnd Bergmann <arnd@arndb.de> | 2013-04-08 18:26:15 +0200 | 
| commit | e9069cf8b74b50d804fd540a9fd1383504f4af93 (patch) | |
| tree | 0b3a30308ffc00a73f681bfdf19214b5ba9ae5a6 /arch/powerpc/kernel/prom_init.c | |
| parent | 4680ebc2c90f663ba70c6bb3d8596b0f2c4dfa9e (diff) | |
| parent | ce63d6d4bb9f601de32d4b99f925a65182521873 (diff) | |
| download | olio-linux-3.10-e9069cf8b74b50d804fd540a9fd1383504f4af93.tar.xz olio-linux-3.10-e9069cf8b74b50d804fd540a9fd1383504f4af93.zip  | |
Merge tag 'vt8500/pinctrl' of git://server.prisktech.co.nz/git/linuxwmt into next/drivers
From Tony Prisk <linux@prisktech.co.nz>:
arm: vt8500: Add pinctrl driver for arch-vt8500
This series adds support for the pinctrl/gpio module on all arch-vt8500
supported SoCs.
As part of the review process, some tidy up is also done to
drivers/of/base.c to remove some code that is being constantly duplicated.
Also, a patch for the bcm2835 pinctrl driver is included to take advantage
of the new of/base.c code.
* tag 'vt8500/pinctrl' of git://server.prisktech.co.nz/git/linuxwmt: (606 commits)
  pinctrl: bcm2835: make use of of_property_read_u32_index()
  gpio: vt8500: Remove arch-vt8500 gpio driver
  arm: vt8500: Remove gpio devicetree nodes
  arm: dts: vt8500: Update Wondermedia SoC dtsi files for pinctrl driver
  pinctrl: gpio: vt8500: Add pincontrol driver for arch-vt8500
  arm: vt8500: Increase available GPIOs on arch-vt8500
  of: Remove duplicated code for validating property and value
  of: Add support for reading a u32 from a multi-value property.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'arch/powerpc/kernel/prom_init.c')
| -rw-r--r-- | arch/powerpc/kernel/prom_init.c | 14 | 
1 files changed, 7 insertions, 7 deletions
diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c index 7f7fb7fd991..13f8d168b3f 100644 --- a/arch/powerpc/kernel/prom_init.c +++ b/arch/powerpc/kernel/prom_init.c @@ -2832,11 +2832,13 @@ static void unreloc_toc(void)  {  }  #else -static void __reloc_toc(void *tocstart, unsigned long offset, -			unsigned long nr_entries) +static void __reloc_toc(unsigned long offset, unsigned long nr_entries)  {  	unsigned long i; -	unsigned long *toc_entry = (unsigned long *)tocstart; +	unsigned long *toc_entry; + +	/* Get the start of the TOC by using r2 directly. */ +	asm volatile("addi %0,2,-0x8000" : "=b" (toc_entry));  	for (i = 0; i < nr_entries; i++) {  		*toc_entry = *toc_entry + offset; @@ -2850,8 +2852,7 @@ static void reloc_toc(void)  	unsigned long nr_entries =  		(__prom_init_toc_end - __prom_init_toc_start) / sizeof(long); -	/* Need to add offset to get at __prom_init_toc_start */ -	__reloc_toc(__prom_init_toc_start + offset, offset, nr_entries); +	__reloc_toc(offset, nr_entries);  	mb();  } @@ -2864,8 +2865,7 @@ static void unreloc_toc(void)  	mb(); -	/* __prom_init_toc_start has been relocated, no need to add offset */ -	__reloc_toc(__prom_init_toc_start, -offset, nr_entries); +	__reloc_toc(-offset, nr_entries);  }  #endif  #endif  |