diff options
| author | Doug Zobel <dzobel1@motorola.com> | 2013-11-15 14:29:07 -0600 |
|---|---|---|
| committer | James Wylder <jwylder@motorola.com> | 2014-03-05 17:46:52 -0600 |
| commit | d2a782003a6047da120a33e6f8ee6fd33bb825d6 (patch) | |
| tree | 8d20bd4ecda62a06e98993c4108456bc1acb0d0b /arch/arm/kernel | |
| parent | 32fd2d36d2464056d4522a9c02797b7c2b2e884f (diff) | |
| download | olio-linux-3.10-d2a782003a6047da120a33e6f8ee6fd33bb825d6.tar.xz olio-linux-3.10-d2a782003a6047da120a33e6f8ee6fd33bb825d6.zip | |
CW integration and minnow bringup
* create minnow machine type
* create Android makefile
* add pre-commit syntax check
* enable -Werror
* Add drivers: CPCAP, TPS65xxx, m4sensorhub, atmxt, lm3535,
usb gadget, minnow display, TI 12xx wireless
Change-Id: I7962f5e1256715f2452aed5a62a4f2f2383d5046
Diffstat (limited to 'arch/arm/kernel')
| -rw-r--r-- | arch/arm/kernel/atags.h | 2 | ||||
| -rw-r--r-- | arch/arm/kernel/atags_parse.c | 23 | ||||
| -rw-r--r-- | arch/arm/kernel/setup.c | 11 |
3 files changed, 36 insertions, 0 deletions
diff --git a/arch/arm/kernel/atags.h b/arch/arm/kernel/atags.h index 9edc9692332..dc34649d87d 100644 --- a/arch/arm/kernel/atags.h +++ b/arch/arm/kernel/atags.h @@ -6,6 +6,8 @@ static inline void save_atags(struct tag *tags) { } void convert_to_tag_list(struct tag *tags); +extern u32 flat_dev_tree_address; /* 32bit physical address */ + #ifdef CONFIG_ATAGS struct machine_desc *setup_machine_tags(phys_addr_t __atags_pointer, unsigned int machine_nr); #else diff --git a/arch/arm/kernel/atags_parse.c b/arch/arm/kernel/atags_parse.c index 14512e6931d..44b65f47500 100644 --- a/arch/arm/kernel/atags_parse.c +++ b/arch/arm/kernel/atags_parse.c @@ -139,6 +139,29 @@ static int __init parse_tag_cmdline(const struct tag *tag) __tagtable(ATAG_CMDLINE, parse_tag_cmdline); +u32 flat_dev_tree_address; /* 32bit physical address */ + +#ifdef CONFIG_MACH_MINNOW +/* process Motorola device tree */ +static int __init parse_tag_flat_dev_tree_address(const struct tag *tag) +{ + printk(KERN_INFO "flat_dev_tree tag == 0x%08x\n", + ATAG_FLAT_DEV_TREE_ADDRESS); + printk(KERN_INFO "flat_dev_tree_address (phys) == 0x%08x\n", + tag->u.flat_dev_tree.address); + printk(KERN_INFO "flat_dev_tree_address (virt) == 0x%p\n", + phys_to_virt(tag->u.flat_dev_tree.address)); + printk(KERN_INFO "flat_dev_tree_size == 0x%08x\n", + tag->u.flat_dev_tree.size); + + flat_dev_tree_address = tag->u.flat_dev_tree.address; + return 0; +} + +__tagtable(ATAG_FLAT_DEV_TREE_ADDRESS, parse_tag_flat_dev_tree_address); + +#endif /* CONFIG_MACH_MINNOW */ + /* * Scan the tag table for this tag, and call its parse function. * The tag table is built by the linker from all the __tagtable diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index b4b1d397592..c698698efd4 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@ -788,6 +788,17 @@ void __init setup_arch(char **cmdline_p) arm_memblock_init(&meminfo, mdesc); paging_init(mdesc); + +#ifdef CONFIG_MACH_MINNOW + if (flat_dev_tree_address) { + struct boot_param_header *dt = + phys_to_virt(flat_dev_tree_address); + if (be32_to_cpu(dt->magic) == OF_DT_HEADER) { + pr_info("Use ATAG dev_tree from this point.\n"); + initial_boot_params = dt; + } + } +#endif request_standard_resources(mdesc); if (mdesc->restart) |