#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/pm.h>
-#include <linux/device.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
#include <asm/irq.h>
#include <asm/hardware.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
-#include <asm/mach/flash.h>
#include <asm/mach/map.h>
#include <asm/mach/serial_sa1100.h>
#include <asm/arch/simpad.h>
+#include <asm/arch/registry.h>
#include <linux/serial_core.h>
#include <linux/ioport.h>
.pm = simpad_uart_pm,
};
-
-static struct mtd_partition simpad_partitions[] = {
- {
- .name = "SIMpad boot firmware",
- .size = 0x00080000,
- .offset = 0,
- .mask_flags = MTD_WRITEABLE,
- }, {
- .name = "SIMpad kernel",
- .size = 0x0010000,
- .offset = MTDPART_OFS_APPEND,
- }, {
- .name = "SIMpad root jffs2",
- .size = MTDPART_SIZ_FULL,
- .offset = MTDPART_OFS_APPEND,
- }
-};
-
-static struct flash_platform_data simpad_flash_data = {
- .map_name = "cfi_probe",
- .parts = simpad_partitions,
- .nr_parts = ARRAY_SIZE(simpad_partitions),
-};
-
-
-static struct resource simpad_flash_resources [] = {
- {
- .start = SA1100_CS0_PHYS,
- .end = SA1100_CS0_PHYS + SZ_16M -1,
- .flags = IORESOURCE_MEM,
- }, {
- .start = SA1100_CS1_PHYS,
- .end = SA1100_CS1_PHYS + SZ_16M -1,
- .flags = IORESOURCE_MEM,
- }
-};
-
-
-
static void __init simpad_map_io(void)
{
sa1100_map_io();
PCFR = 0;
PSDR = 0;
- sa11x0_set_flash_data(&simpad_flash_data, simpad_flash_resources,
- ARRAY_SIZE(simpad_flash_resources));
+
+}
+
+#ifdef CONFIG_PROC_FS
+
+static char* name[]={
+ "VCC_5V_EN",
+ "VCC_3V_EN",
+ "EN1",
+ "EN0",
+ "DISPLAY_ON",
+ "PCMCIA_BUFF_DIS",
+ "MQ_RESET",
+ "PCMCIA_RESET",
+ "DECT_POWER_ON",
+ "IRDA_SD",
+ "RS232_ON",
+ "SD_MEDIAQ",
+ "LED2_ON",
+ "IRDA_MODE",
+ "ENABLE_5V",
+ "RESET_SIMCARD"
+};
+
+static int proc_cs3_read(char *page, char **start, off_t off,
+ int count, int *eof, void *data)
+{
+ char *p = page;
+ int len, i;
+
+ p += sprintf(p, "Chipselect3 : %x\n", (uint)cs3_shadow);
+ for (i = 0; i <= 15; i++) {
+ if(cs3_shadow & (1<<i)) {
+ p += sprintf(p, "%s\t: TRUE \n",name[i]);
+ } else
+ p += sprintf(p, "%s\t: FALSE \n",name[i]);
+ }
+ len = (p - page) - off;
+ if (len < 0)
+ len = 0;
+
+ *eof = (len <= count) ? 1 : 0;
+ *start = page + off;
+
+ return len;
}
+static int proc_cs3_write(struct file * file, const char * buffer,
+ size_t count, loff_t *ppos)
+{
+ unsigned long newRegValue;
+ char *endp;
+
+ newRegValue = simple_strtoul(buffer,&endp,0);
+ set_cs3( newRegValue );
+ return (count+endp-buffer);
+}
+
+#endif
+
+static int __init cs3_init(void)
+{
+
+#ifdef CONFIG_PROC_FS
+ struct proc_dir_entry *proc_cs3 = create_proc_entry("CS3", 0, 0);
+ if (proc_cs3)
+ {
+ proc_cs3->read_proc = proc_cs3_read;
+ proc_cs3->write_proc = (void*)proc_cs3_write;
+ }
+#endif
+
+
+
+ return 0;
+}
+
+arch_initcall(cs3_init);
+
static void simpad_power_off(void)
{
local_irq_disable(); // was cli
}
-
-/*
- * MediaQ Video Device
- */
-static struct platform_device simpad_mq200fb = {
- .name = "simpad-mq200",
- .id = 0,
-};
-
-static struct platform_device *devices[] __initdata = {
- &simpad_mq200fb
-};
-
-
-
static int __init simpad_init(void)
{
- int ret;
-
- pm_power_off = simpad_power_off;
-
- ret = platform_add_devices(devices, ARRAY_SIZE(devices));
- if(ret)
- printk(KERN_WARNING "simpad: Unable to register mq200 framebuffer device");
-
+ set_power_off_handler( simpad_power_off );
return 0;
}
MACHINE_START(SIMPAD, "Simpad")
- MAINTAINER("Holger Freyther")
+ MAINTAINER("Juergen Messerer")
BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000)
BOOT_PARAMS(0xc0000100)
MAPIO(simpad_map_io)
INITIRQ(sa1100_init_irq)
- .timer = &sa1100_timer,
+ INITTIME(sa1100_init_time)
MACHINE_END