Commit 3ed43c74 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6: (21 commits)
  Blackfin Serial Driver: abstract away DLAB differences into header
  Blackfin Serial Driver: macro away the IER differences between processors
  [Blackfin] arch: remove useless IRQ_SW_INT defines
  [Blackfin] arch: protect linux/usb/musb.h include until the driver gets mainlined
  [Blackfin] arch: protect linux/usb/isp1362.h include until the driver gets mainlined
  [Blackfin] arch: add EBIU supporting for BF54x EZKIT SMSC LAN911x/LAN921x families embedded ethernet driver
  [Blackfin] arch: Set spi flash partition on bf527 as like bf548.
  [Blackfin] arch: fix bug - Remove module will not free L1 memory used
  [Blackfin] arch: fix wrong header name in comment
  [Blackfin] arch: Fix BUG - spi flash on bf527 ezkit would fail at mount
  [Blackfin] arch: add twi_lcd and twi_keypad i2c board info to bf527-ezkit
  [Blackfin] arch: Add physmap partition for BF527-EZkit
  [Blackfin] arch: fix gdb testing regression
  [Blackfin] arch: disable single stepping when delivering a signal
  [Blackfin] arch: Delete unused (copied from m68k) entries in asm-offsets.c.
  [Blackfin] arch: In the double fault handler, set up the PT_RETI slot
  [Blackfin] arch: Support for CPU_FREQ and NOHZ
  [Blackfin] arch: Functional power management support: Add CPU and platform voltage scaling support
  [Blackfin] arch: fix bug -  breaking the atomic sections code.
  [Blackfin] arch: Equalize include files: Add VR_CTL masks
  ...
parents 26c5e98e 45828b81
Loading
Loading
Loading
Loading
+10 −8
Original line number Original line Diff line number Diff line
@@ -832,6 +832,7 @@ config BANK_0
config BANK_1
config BANK_1
	hex "Bank 1"
	hex "Bank 1"
	default 0x7BB0
	default 0x7BB0
	default 0x5558 if BF54x


config BANK_2
config BANK_2
	hex "Bank 2"
	hex "Bank 2"
@@ -963,21 +964,22 @@ endchoice


endmenu
endmenu


if (BF537 || BF533 || BF54x)

menu "CPU Frequency scaling"
menu "CPU Frequency scaling"


source "drivers/cpufreq/Kconfig"
source "drivers/cpufreq/Kconfig"


config CPU_FREQ
config CPU_VOLTAGE
	bool
	bool "CPU Voltage scaling"
	depends on EXPERIMENTAL	
	depends on CPU_FREQ
	default n
	default n
	help
	help
	  If you want to enable this option, you should select the
	  Say Y here if you want CPU voltage scaling according to the CPU frequency.
	  DPMC driver from Character Devices.
	  This option violates the PLL BYPASS recommendation in the Blackfin Processor
endmenu
	  manuals. There is a theoretical risk that during VDDINT transitions 
	  the PLL may unlock.


endif
endmenu


source "net/Kconfig"
source "net/Kconfig"


+0 −3
Original line number Original line Diff line number Diff line
@@ -56,9 +56,6 @@ int main(void)
	/* offsets into the thread struct */
	/* offsets into the thread struct */
	DEFINE(THREAD_KSP, offsetof(struct thread_struct, ksp));
	DEFINE(THREAD_KSP, offsetof(struct thread_struct, ksp));
	DEFINE(THREAD_USP, offsetof(struct thread_struct, usp));
	DEFINE(THREAD_USP, offsetof(struct thread_struct, usp));
	DEFINE(THREAD_SR, offsetof(struct thread_struct, seqstat));
	DEFINE(PT_SR, offsetof(struct thread_struct, seqstat));
	DEFINE(THREAD_ESP0, offsetof(struct thread_struct, esp0));
	DEFINE(THREAD_PC, offsetof(struct thread_struct, pc));
	DEFINE(THREAD_PC, offsetof(struct thread_struct, pc));
	DEFINE(KERNEL_STACK_SIZE, THREAD_SIZE);
	DEFINE(KERNEL_STACK_SIZE, THREAD_SIZE);


+1 −1
Original line number Original line Diff line number Diff line
/*
/*
 * This file contains sequences of code that will be copied to a
 * This file contains sequences of code that will be copied to a
 * fixed location, defined in <asm/atomic_seq.h>.  The interrupt
 * fixed location, defined in <asm/fixed_code.h>.  The interrupt
 * handlers ensure that these sequences appear to be atomic when
 * handlers ensure that these sequences appear to be atomic when
 * executed from userspace.
 * executed from userspace.
 * These are aligned to 16 bytes, so that we have some space to replace
 * These are aligned to 16 bytes, so that we have some space to replace
+22 −15
Original line number Original line Diff line number Diff line
@@ -160,6 +160,13 @@ int
module_frob_arch_sections(Elf_Ehdr * hdr, Elf_Shdr * sechdrs,
module_frob_arch_sections(Elf_Ehdr * hdr, Elf_Shdr * sechdrs,
			  char *secstrings, struct module *mod)
			  char *secstrings, struct module *mod)
{
{
	/*
	 * XXX: sechdrs are vmalloced in kernel/module.c
	 * and would be vfreed just after module is loaded,
	 * so we hack to keep the only information we needed
	 * in mod->arch to correctly free L1 I/D sram later.
	 * NOTE: this breaks the semantic of mod->arch structure.
	 */
	Elf_Shdr *s, *sechdrs_end = sechdrs + hdr->e_shnum;
	Elf_Shdr *s, *sechdrs_end = sechdrs + hdr->e_shnum;
	void *dest = NULL;
	void *dest = NULL;


@@ -167,8 +174,8 @@ module_frob_arch_sections(Elf_Ehdr * hdr, Elf_Shdr * sechdrs,
		if ((strcmp(".l1.text", secstrings + s->sh_name) == 0) ||
		if ((strcmp(".l1.text", secstrings + s->sh_name) == 0) ||
		    ((strcmp(".text", secstrings + s->sh_name) == 0) &&
		    ((strcmp(".text", secstrings + s->sh_name) == 0) &&
		     (hdr->e_flags & FLG_CODE_IN_L1) && (s->sh_size > 0))) {
		     (hdr->e_flags & FLG_CODE_IN_L1) && (s->sh_size > 0))) {
			mod->arch.text_l1 = s;
			dest = l1_inst_sram_alloc(s->sh_size);
			dest = l1_inst_sram_alloc(s->sh_size);
			mod->arch.text_l1 = dest;
			if (dest == NULL) {
			if (dest == NULL) {
				printk(KERN_ERR
				printk(KERN_ERR
				       "module %s: L1 instruction memory allocation failed\n",
				       "module %s: L1 instruction memory allocation failed\n",
@@ -182,8 +189,8 @@ module_frob_arch_sections(Elf_Ehdr * hdr, Elf_Shdr * sechdrs,
		if ((strcmp(".l1.data", secstrings + s->sh_name) == 0) ||
		if ((strcmp(".l1.data", secstrings + s->sh_name) == 0) ||
		    ((strcmp(".data", secstrings + s->sh_name) == 0) &&
		    ((strcmp(".data", secstrings + s->sh_name) == 0) &&
		     (hdr->e_flags & FLG_DATA_IN_L1) && (s->sh_size > 0))) {
		     (hdr->e_flags & FLG_DATA_IN_L1) && (s->sh_size > 0))) {
			mod->arch.data_a_l1 = s;
			dest = l1_data_sram_alloc(s->sh_size);
			dest = l1_data_sram_alloc(s->sh_size);
			mod->arch.data_a_l1 = dest;
			if (dest == NULL) {
			if (dest == NULL) {
				printk(KERN_ERR
				printk(KERN_ERR
					"module %s: L1 data memory allocation failed\n",
					"module %s: L1 data memory allocation failed\n",
@@ -197,8 +204,8 @@ module_frob_arch_sections(Elf_Ehdr * hdr, Elf_Shdr * sechdrs,
		if (strcmp(".l1.bss", secstrings + s->sh_name) == 0 ||
		if (strcmp(".l1.bss", secstrings + s->sh_name) == 0 ||
		    ((strcmp(".bss", secstrings + s->sh_name) == 0) &&
		    ((strcmp(".bss", secstrings + s->sh_name) == 0) &&
		     (hdr->e_flags & FLG_DATA_IN_L1) && (s->sh_size > 0))) {
		     (hdr->e_flags & FLG_DATA_IN_L1) && (s->sh_size > 0))) {
			mod->arch.bss_a_l1 = s;
			dest = l1_data_sram_alloc(s->sh_size);
			dest = l1_data_sram_alloc(s->sh_size);
			mod->arch.bss_a_l1 = dest;
			if (dest == NULL) {
			if (dest == NULL) {
				printk(KERN_ERR
				printk(KERN_ERR
					"module %s: L1 data memory allocation failed\n",
					"module %s: L1 data memory allocation failed\n",
@@ -210,8 +217,8 @@ module_frob_arch_sections(Elf_Ehdr * hdr, Elf_Shdr * sechdrs,
			s->sh_addr = (unsigned long)dest;
			s->sh_addr = (unsigned long)dest;
		}
		}
		if (strcmp(".l1.data.B", secstrings + s->sh_name) == 0) {
		if (strcmp(".l1.data.B", secstrings + s->sh_name) == 0) {
			mod->arch.data_b_l1 = s;
			dest = l1_data_B_sram_alloc(s->sh_size);
			dest = l1_data_B_sram_alloc(s->sh_size);
			mod->arch.data_b_l1 = dest;
			if (dest == NULL) {
			if (dest == NULL) {
				printk(KERN_ERR
				printk(KERN_ERR
					"module %s: L1 data memory allocation failed\n",
					"module %s: L1 data memory allocation failed\n",
@@ -223,8 +230,8 @@ module_frob_arch_sections(Elf_Ehdr * hdr, Elf_Shdr * sechdrs,
			s->sh_addr = (unsigned long)dest;
			s->sh_addr = (unsigned long)dest;
		}
		}
		if (strcmp(".l1.bss.B", secstrings + s->sh_name) == 0) {
		if (strcmp(".l1.bss.B", secstrings + s->sh_name) == 0) {
			mod->arch.bss_b_l1 = s;
			dest = l1_data_B_sram_alloc(s->sh_size);
			dest = l1_data_B_sram_alloc(s->sh_size);
			mod->arch.bss_b_l1 = dest;
			if (dest == NULL) {
			if (dest == NULL) {
				printk(KERN_ERR
				printk(KERN_ERR
					"module %s: L1 data memory allocation failed\n",
					"module %s: L1 data memory allocation failed\n",
@@ -416,14 +423,14 @@ module_finalize(const Elf_Ehdr * hdr,


void module_arch_cleanup(struct module *mod)
void module_arch_cleanup(struct module *mod)
{
{
	if ((mod->arch.text_l1) && (mod->arch.text_l1->sh_addr))
	if (mod->arch.text_l1)
		l1_inst_sram_free((void *)mod->arch.text_l1->sh_addr);
		l1_inst_sram_free((void *)mod->arch.text_l1);
	if ((mod->arch.data_a_l1) && (mod->arch.data_a_l1->sh_addr))
	if (mod->arch.data_a_l1)
		l1_data_sram_free((void *)mod->arch.data_a_l1->sh_addr);
		l1_data_sram_free((void *)mod->arch.data_a_l1);
	if ((mod->arch.bss_a_l1) && (mod->arch.bss_a_l1->sh_addr))
	if (mod->arch.bss_a_l1)
		l1_data_sram_free((void *)mod->arch.bss_a_l1->sh_addr);
		l1_data_sram_free((void *)mod->arch.bss_a_l1);
	if ((mod->arch.data_b_l1) && (mod->arch.data_b_l1->sh_addr))
	if (mod->arch.data_b_l1)
		l1_data_B_sram_free((void *)mod->arch.data_b_l1->sh_addr);
		l1_data_B_sram_free((void *)mod->arch.data_b_l1);
	if ((mod->arch.bss_b_l1) && (mod->arch.bss_b_l1->sh_addr))
	if (mod->arch.bss_b_l1)
		l1_data_B_sram_free((void *)mod->arch.bss_b_l1->sh_addr);
		l1_data_B_sram_free((void *)mod->arch.bss_b_l1);
}
}
+1 −1
Original line number Original line Diff line number Diff line
@@ -245,7 +245,7 @@ unsigned long get_wchan(struct task_struct *p)


void finish_atomic_sections (struct pt_regs *regs)
void finish_atomic_sections (struct pt_regs *regs)
{
{
	int __user *up0 = (int __user *)&regs->p0;
	int __user *up0 = (int __user *)regs->p0;


	if (regs->pc < ATOMIC_SEQS_START || regs->pc >= ATOMIC_SEQS_END)
	if (regs->pc < ATOMIC_SEQS_START || regs->pc >= ATOMIC_SEQS_END)
		return;
		return;
Loading