Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 57393
b: refs/heads/master
c: 8a2e210
h: refs/heads/master
i:
  57391: a47894d
v: v3
  • Loading branch information
Linus Torvalds committed Jun 7, 2007
1 parent 5110908 commit 52e68b8
Show file tree
Hide file tree
Showing 80 changed files with 1,282 additions and 605 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 9a412847fbe396563acf2a78d5830c9c6c5a5d43
refs/heads/master: 8a2e21038df74c4401f422346b9371a959c21438
59 changes: 57 additions & 2 deletions trunk/Documentation/powerpc/booting-without-of.txt
Original file line number Diff line number Diff line change
@@ -1,14 +1,69 @@
Booting the Linux/ppc kernel without Open Firmware
--------------------------------------------------


(c) 2005 Benjamin Herrenschmidt <benh at kernel.crashing.org>,
IBM Corp.
(c) 2005 Becky Bruce <becky.bruce at freescale.com>,
Freescale Semiconductor, FSL SOC and 32-bit additions
(c) 2006 MontaVista Software, Inc.
Flash chip node definition

Table of Contents
=================

I - Introduction
1) Entry point for arch/powerpc
2) Board support

II - The DT block format
1) Header
2) Device tree generalities
3) Device tree "structure" block
4) Device tree "strings" block

III - Required content of the device tree
1) Note about cells and address representation
2) Note about "compatible" properties
3) Note about "name" properties
4) Note about node and property names and character set
5) Required nodes and properties
a) The root node
b) The /cpus node
c) The /cpus/* nodes
d) the /memory node(s)
e) The /chosen node
f) the /soc<SOCname> node

IV - "dtc", the device tree compiler

V - Recommendations for a bootloader

VI - System-on-a-chip devices and nodes
1) Defining child nodes of an SOC
2) Representing devices without a current OF specification
a) MDIO IO device
c) PHY nodes
b) Gianfar-compatible ethernet nodes
d) Interrupt controllers
e) I2C
f) Freescale SOC USB controllers
g) Freescale SOC SEC Security Engines
h) Board Control and Status (BCSR)
i) Freescale QUICC Engine module (QE)
g) Flash chip nodes

VII - Specifying interrupt information for devices
1) interrupts property
2) interrupt-parent property
3) OpenPIC Interrupt Controllers
4) ISA Interrupt Controllers

Appendix A - Sample SOC node for MPC8540


Revision Information
====================

May 18, 2005: Rev 0.1 - Initial draft, no chapter III yet.

May 19, 2005: Rev 0.2 - Add chapter III and bits & pieces here or
Expand Down Expand Up @@ -1687,7 +1742,7 @@ platforms are moved over to use the flattened-device-tree model.
};
};

g) Flash chip nodes
j) Flash chip nodes

Flash chips (Memory Technology Devices) are often used for solid state
file systems on embedded devices.
Expand Down
2 changes: 1 addition & 1 deletion trunk/Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 22
EXTRAVERSION = -rc3
EXTRAVERSION = -rc4
NAME = Jeff Thinks I Should Change This, But To What?

# *DOCUMENTATION*
Expand Down
5 changes: 4 additions & 1 deletion trunk/arch/i386/kernel/cpu/mtrr/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -734,10 +734,13 @@ void mtrr_ap_init(void)
*/
void mtrr_save_state(void)
{
if (smp_processor_id() == 0)
int cpu = get_cpu();

if (cpu == 0)
mtrr_save_fixed_ranges(NULL);
else
smp_call_function_single(0, mtrr_save_fixed_ranges, NULL, 1, 1);
put_cpu();
}

static int __init mtrr_init_finialize(void)
Expand Down
1 change: 1 addition & 0 deletions trunk/arch/powerpc/boot/crt0.S
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

.text
/* a procedure descriptor used when booting this as a COFF file */
.globl _zimage_start_opd
_zimage_start_opd:
.long _zimage_start, 0, 0, 0

Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/powerpc/kernel/of_platform.c
Original file line number Diff line number Diff line change
Expand Up @@ -433,7 +433,7 @@ static int __devinit of_pci_phb_probe(struct of_device *dev,
* Note also that we don't do ISA, this will also be fixed with a
* more massive rework.
*/
pci_setup_phb_io(phb, 0);
pci_setup_phb_io(phb, pci_io_base == 0);

/* Init pci_dn data structures */
pci_devs_phb_init_dynamic(phb);
Expand Down
33 changes: 27 additions & 6 deletions trunk/arch/powerpc/platforms/cell/cbe_cpufreq.c
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ static u64 MIC_Slow_Next_Timer_table[] = {
0x00003FC000000000ull,
};

static unsigned int pmi_frequency_limit = 0;
/*
* hardware specific functions
*/
Expand Down Expand Up @@ -164,7 +165,6 @@ static int set_pmode(int cpu, unsigned int slow_mode) {

static void cbe_cpufreq_handle_pmi(struct of_device *dev, pmi_message_t pmi_msg)
{
struct cpufreq_policy policy;
u8 cpu;
u8 cbe_pmode_new;

Expand All @@ -173,15 +173,27 @@ static void cbe_cpufreq_handle_pmi(struct of_device *dev, pmi_message_t pmi_msg)
cpu = cbe_node_to_cpu(pmi_msg.data1);
cbe_pmode_new = pmi_msg.data2;

cpufreq_get_policy(&policy, cpu);
pmi_frequency_limit = cbe_freqs[cbe_pmode_new].frequency;

policy.max = min(policy.max, cbe_freqs[cbe_pmode_new].frequency);
policy.min = min(policy.min, policy.max);
pr_debug("cbe_handle_pmi: max freq=%d\n", pmi_frequency_limit);
}

static int pmi_notifier(struct notifier_block *nb,
unsigned long event, void *data)
{
struct cpufreq_policy *policy = data;

pr_debug("cbe_handle_pmi: new policy.min=%d policy.max=%d\n", policy.min, policy.max);
cpufreq_set_policy(&policy);
if (event != CPUFREQ_INCOMPATIBLE)
return 0;

cpufreq_verify_within_limits(policy, 0, pmi_frequency_limit);
return 0;
}

static struct notifier_block pmi_notifier_block = {
.notifier_call = pmi_notifier,
};

static struct pmi_handler cbe_pmi_handler = {
.type = PMI_TYPE_FREQ_CHANGE,
.handle_pmi_message = cbe_cpufreq_handle_pmi,
Expand Down Expand Up @@ -238,12 +250,21 @@ static int cbe_cpufreq_cpu_init(struct cpufreq_policy *policy)

cpufreq_frequency_table_get_attr(cbe_freqs, policy->cpu);

if (pmi_dev) {
/* frequency might get limited later, initialize limit with max_freq */
pmi_frequency_limit = max_freq;
cpufreq_register_notifier(&pmi_notifier_block, CPUFREQ_POLICY_NOTIFIER);
}

/* this ensures that policy->cpuinfo_min and policy->cpuinfo_max are set correctly */
return cpufreq_frequency_table_cpuinfo(policy, cbe_freqs);
}

static int cbe_cpufreq_cpu_exit(struct cpufreq_policy *policy)
{
if (pmi_dev)
cpufreq_unregister_notifier(&pmi_notifier_block, CPUFREQ_POLICY_NOTIFIER);

cpufreq_frequency_table_put_attr(policy->cpu);
return 0;
}
Expand Down
4 changes: 3 additions & 1 deletion trunk/arch/powerpc/platforms/cell/spufs/context.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ struct spu_context *alloc_spu_context(struct spu_gang *gang)
if (spu_init_csa(&ctx->csa))
goto out_free;
spin_lock_init(&ctx->mmio_lock);
spin_lock_init(&ctx->mapping_lock);
mutex_init(&ctx->mapping_lock);
kref_init(&ctx->kref);
mutex_init(&ctx->state_mutex);
mutex_init(&ctx->run_mutex);
Expand Down Expand Up @@ -103,6 +103,7 @@ void spu_forget(struct spu_context *ctx)

void spu_unmap_mappings(struct spu_context *ctx)
{
mutex_lock(&ctx->mapping_lock);
if (ctx->local_store)
unmap_mapping_range(ctx->local_store, 0, LS_SIZE, 1);
if (ctx->mfc)
Expand All @@ -117,6 +118,7 @@ void spu_unmap_mappings(struct spu_context *ctx)
unmap_mapping_range(ctx->mss, 0, 0x1000, 1);
if (ctx->psmap)
unmap_mapping_range(ctx->psmap, 0, 0x20000, 1);
mutex_unlock(&ctx->mapping_lock);
}

/**
Expand Down
Loading

0 comments on commit 52e68b8

Please sign in to comment.