aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh/boards/mach-hp6xx/setup.c
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2008-07-29 08:01:19 -0400
committerPaul Mundt <lethal@linux-sh.org>2008-07-29 08:01:19 -0400
commitda2014a2b080e7f3024a4eb6917d47069ad9620b (patch)
treecfde12c6d4b5baa222966b14a676f107992cf786 /arch/sh/boards/mach-hp6xx/setup.c
parent71b8064e7df5698520d73b4c1566a3dbc98eb9ef (diff)
sh: Shuffle the board directories in to mach groups.
This flattens out the board directories in to individual mach groups, we will use this for getting rid of unneeded directories, simplifying the build system, and becoming more coherent with the refactored arch/sh/include topology. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/boards/mach-hp6xx/setup.c')
-rw-r--r--arch/sh/boards/mach-hp6xx/setup.c121
1 files changed, 121 insertions, 0 deletions
diff --git a/arch/sh/boards/mach-hp6xx/setup.c b/arch/sh/boards/mach-hp6xx/setup.c
new file mode 100644
index 000000000000..475b46caec1f
--- /dev/null
+++ b/arch/sh/boards/mach-hp6xx/setup.c
@@ -0,0 +1,121 @@
1/*
2 * linux/arch/sh/boards/hp6xx/setup.c
3 *
4 * Copyright (C) 2002 Andriy Skulysh
5 * Copyright (C) 2007 Kristoffer Ericson <Kristoffer_e1@hotmail.com>
6 *
7 * May be copied or modified under the terms of the GNU General Public
8 * License. See linux/COPYING for more information.
9 *
10 * Setup code for HP620/HP660/HP680/HP690 (internal peripherials only)
11 */
12#include <linux/types.h>
13#include <linux/init.h>
14#include <linux/platform_device.h>
15#include <asm/hd64461.h>
16#include <asm/io.h>
17#include <asm/irq.h>
18#include <asm/hp6xx.h>
19#include <cpu/dac.h>
20
21#define SCPCR 0xa4000116
22#define SCPDR 0xa4000136
23
24/* CF Slot */
25static struct resource cf_ide_resources[] = {
26 [0] = {
27 .start = 0x15000000 + 0x1f0,
28 .end = 0x15000000 + 0x1f0 + 0x08 - 0x01,
29 .flags = IORESOURCE_MEM,
30 },
31 [1] = {
32 .start = 0x15000000 + 0x1fe,
33 .end = 0x15000000 + 0x1fe + 0x01,
34 .flags = IORESOURCE_MEM,
35 },
36 [2] = {
37 .start = 77,
38 .flags = IORESOURCE_IRQ,
39 },
40};
41
42static struct platform_device cf_ide_device = {
43 .name = "pata_platform",
44 .id = -1,
45 .num_resources = ARRAY_SIZE(cf_ide_resources),
46 .resource = cf_ide_resources,
47};
48
49static struct platform_device jornadakbd_device = {
50 .name = "jornada680_kbd",
51 .id = -1,
52};
53
54static struct platform_device *hp6xx_devices[] __initdata = {
55 &cf_ide_device,
56 &jornadakbd_device,
57};
58
59static void __init hp6xx_init_irq(void)
60{
61 /* Gets touchscreen and powerbutton IRQ working */
62 plat_irq_setup_pins(IRQ_MODE_IRQ);
63}
64
65static int __init hp6xx_devices_setup(void)
66{
67 return platform_add_devices(hp6xx_devices, ARRAY_SIZE(hp6xx_devices));
68}
69
70static void __init hp6xx_setup(char **cmdline_p)
71{
72 u8 v8;
73 u16 v;
74
75 v = inw(HD64461_STBCR);
76 v |= HD64461_STBCR_SURTST | HD64461_STBCR_SIRST |
77 HD64461_STBCR_STM1ST | HD64461_STBCR_STM0ST |
78 HD64461_STBCR_SAFEST | HD64461_STBCR_SPC0ST |
79 HD64461_STBCR_SMIAST | HD64461_STBCR_SAFECKE_OST|
80 HD64461_STBCR_SAFECKE_IST;
81#ifndef CONFIG_HD64461_ENABLER
82 v |= HD64461_STBCR_SPC1ST;
83#endif
84 outw(v, HD64461_STBCR);
85 v = inw(HD64461_GPADR);
86 v |= HD64461_GPADR_SPEAKER | HD64461_GPADR_PCMCIA0;
87 outw(v, HD64461_GPADR);
88
89 outw(HD64461_PCCGCR_VCC0 | HD64461_PCCSCR_VCC1, HD64461_PCC0GCR);
90
91#ifndef CONFIG_HD64461_ENABLER
92 outw(HD64461_PCCGCR_VCC0 | HD64461_PCCSCR_VCC1, HD64461_PCC1GCR);
93#endif
94
95 sh_dac_output(0, DAC_SPEAKER_VOLUME);
96 sh_dac_disable(DAC_SPEAKER_VOLUME);
97 v8 = ctrl_inb(DACR);
98 v8 &= ~DACR_DAE;
99 ctrl_outb(v8,DACR);
100
101 v8 = ctrl_inb(SCPDR);
102 v8 |= SCPDR_TS_SCAN_X | SCPDR_TS_SCAN_Y;
103 v8 &= ~SCPDR_TS_SCAN_ENABLE;
104 ctrl_outb(v8, SCPDR);
105
106 v = ctrl_inw(SCPCR);
107 v &= ~SCPCR_TS_MASK;
108 v |= SCPCR_TS_ENABLE;
109 ctrl_outw(v, SCPCR);
110}
111device_initcall(hp6xx_devices_setup);
112
113static struct sh_machine_vector mv_hp6xx __initmv = {
114 .mv_name = "hp6xx",
115 .mv_setup = hp6xx_setup,
116 /* IRQ's : CPU(64) + CCHIP(16) + FREE_TO_USE(6) */
117 .mv_nr_irqs = HD64461_IRQBASE + HD64461_IRQ_NUM + 6,
118 .mv_irq_demux = hd64461_irq_demux,
119 /* Enable IRQ0 -> IRQ3 in IRQ_MODE */
120 .mv_init_irq = hp6xx_init_irq,
121};