-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 123807 b: refs/heads/master c: 74b265d h: refs/heads/master i: 123805: ecb9760 123803: 6a8f261 123799: d4cbbfe 123791: f116619 123775: 5d9459e v: v3
- Loading branch information
Ben Dooks
committed
Dec 15, 2008
1 parent
ed7b343
commit f338592
Showing
14 changed files
with
202 additions
and
156 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 2cd493fc10a5ad628dce8471ae72cf0882506735 | ||
refs/heads/master: 74b265d4e0555b9fc9cc75eb8876140ecf8c6b8a |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,14 @@ | ||
# dummy makefile, currently just including asm/arm/plat-s3c/include/plat | ||
# arch/arm/plat-s3c/Makefile | ||
# | ||
# Copyright 2008 Simtec Electronics | ||
# | ||
# Licensed under GPLv2 | ||
|
||
obj-n := dummy.o | ||
obj-y := | ||
obj-m := | ||
obj-n := | ||
obj- := | ||
|
||
# Core support for all Samsung SoCs | ||
|
||
obj-y += init.o |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,161 @@ | ||
/* linux/arch/arm/plat-s3c/init.c | ||
* | ||
* Copyright (c) 2008 Simtec Electronics | ||
* Ben Dooks <ben@simtec.co.uk> | ||
* http://armlinux.simtec.co.uk/ | ||
* | ||
* S3C series CPU initialisation | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
|
||
#include <linux/init.h> | ||
#include <linux/module.h> | ||
#include <linux/interrupt.h> | ||
#include <linux/ioport.h> | ||
#include <linux/serial_core.h> | ||
#include <linux/platform_device.h> | ||
#include <linux/delay.h> | ||
|
||
#include <mach/hardware.h> | ||
|
||
#include <asm/mach/arch.h> | ||
#include <asm/mach/map.h> | ||
|
||
#include <plat/cpu.h> | ||
#include <plat/devs.h> | ||
#include <plat/clock.h> | ||
|
||
#include <plat/regs-serial.h> | ||
|
||
static struct cpu_table *cpu; | ||
|
||
static struct cpu_table * __init s3c_lookup_cpu(unsigned long idcode, | ||
struct cpu_table *tab, | ||
unsigned int count) | ||
{ | ||
for (; count != 0; count--, tab++) { | ||
if ((idcode & tab->idmask) == tab->idcode) | ||
return tab; | ||
} | ||
|
||
return NULL; | ||
} | ||
|
||
void __init s3c_init_cpu(unsigned long idcode, | ||
struct cpu_table *cputab, unsigned int cputab_size) | ||
{ | ||
cpu = s3c_lookup_cpu(idcode, cputab, cputab_size); | ||
|
||
if (cpu == NULL) { | ||
printk(KERN_ERR "Unknown CPU type 0x%08lx\n", idcode); | ||
panic("Unknown S3C24XX CPU"); | ||
} | ||
|
||
printk("CPU %s (id 0x%08lx)\n", cpu->name, idcode); | ||
|
||
if (cpu->map_io == NULL || cpu->init == NULL) { | ||
printk(KERN_ERR "CPU %s support not enabled\n", cpu->name); | ||
panic("Unsupported Samsung CPU"); | ||
} | ||
|
||
cpu->map_io(); | ||
} | ||
|
||
/* s3c24xx_init_clocks | ||
* | ||
* Initialise the clock subsystem and associated information from the | ||
* given master crystal value. | ||
* | ||
* xtal = 0 -> use default PLL crystal value (normally 12MHz) | ||
* != 0 -> PLL crystal value in Hz | ||
*/ | ||
|
||
void __init s3c24xx_init_clocks(int xtal) | ||
{ | ||
if (xtal == 0) | ||
xtal = 12*1000*1000; | ||
|
||
if (cpu == NULL) | ||
panic("s3c24xx_init_clocks: no cpu setup?\n"); | ||
|
||
if (cpu->init_clocks == NULL) | ||
panic("s3c24xx_init_clocks: cpu has no clock init\n"); | ||
else | ||
(cpu->init_clocks)(xtal); | ||
} | ||
|
||
/* uart management */ | ||
|
||
static int nr_uarts __initdata = 0; | ||
|
||
static struct s3c2410_uartcfg uart_cfgs[3]; | ||
|
||
/* s3c24xx_init_uartdevs | ||
* | ||
* copy the specified platform data and configuration into our central | ||
* set of devices, before the data is thrown away after the init process. | ||
* | ||
* This also fills in the array passed to the serial driver for the | ||
* early initialisation of the console. | ||
*/ | ||
|
||
void __init s3c24xx_init_uartdevs(char *name, | ||
struct s3c24xx_uart_resources *res, | ||
struct s3c2410_uartcfg *cfg, int no) | ||
{ | ||
struct platform_device *platdev; | ||
struct s3c2410_uartcfg *cfgptr = uart_cfgs; | ||
struct s3c24xx_uart_resources *resp; | ||
int uart; | ||
|
||
memcpy(cfgptr, cfg, sizeof(struct s3c2410_uartcfg) * no); | ||
|
||
for (uart = 0; uart < no; uart++, cfg++, cfgptr++) { | ||
platdev = s3c24xx_uart_src[cfgptr->hwport]; | ||
|
||
resp = res + cfgptr->hwport; | ||
|
||
s3c24xx_uart_devs[uart] = platdev; | ||
|
||
platdev->name = name; | ||
platdev->resource = resp->resources; | ||
platdev->num_resources = resp->nr_resources; | ||
|
||
platdev->dev.platform_data = cfgptr; | ||
} | ||
|
||
nr_uarts = no; | ||
} | ||
|
||
void __init s3c24xx_init_uarts(struct s3c2410_uartcfg *cfg, int no) | ||
{ | ||
if (cpu == NULL) | ||
return; | ||
|
||
if (cpu->init_uarts == NULL) { | ||
printk(KERN_ERR "s3c24xx_init_uarts: cpu has no uart init\n"); | ||
} else | ||
(cpu->init_uarts)(cfg, no); | ||
} | ||
|
||
static int __init s3c_arch_init(void) | ||
{ | ||
int ret; | ||
|
||
// do the correct init for cpu | ||
|
||
if (cpu == NULL) | ||
panic("s3c_arch_init: NULL cpu\n"); | ||
|
||
ret = (cpu->init)(); | ||
if (ret != 0) | ||
return ret; | ||
|
||
ret = platform_add_devices(s3c24xx_uart_devs, nr_uarts); | ||
return ret; | ||
} | ||
|
||
arch_initcall(s3c_arch_init); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.