|
From: <mar...@us...> - 2007-03-30 21:01:53
|
Revision: 948
http://svn.sourceforge.net/hackndev/?rev=948&view=rev
Author: marex_z71
Date: 2007-03-30 14:01:50 -0700 (Fri, 30 Mar 2007)
Log Message:
-----------
PalmLD: Restart of works on USB2 driver, reg dumping code
Modified Paths:
--------------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_usb.c
Added Paths:
-----------
linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-usb2.h
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_usb.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_usb.c 2007-03-29 18:54:56 UTC (rev 947)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_usb.c 2007-03-30 21:01:50 UTC (rev 948)
@@ -6,95 +6,128 @@
#include <linux/device.h>
#include <linux/platform_device.h>
#include <linux/delay.h>
-#include <linux/soc-device.h>
#include <asm/mach-types.h>
#include <asm/hardware.h>
-#include <../drivers/pcmcia/soc_common.h>
#include <asm/arch/pxa-regs.h>
#include <asm/irq.h>
#include <asm/arch/palmld-gpio.h>
+#include <asm/arch/palmld-usb2.h>
-/*
-#define GET_GPIO(gpio) \
- (GPLR(gpio) & GPIO_bit(gpio))
-#define SET_GPIO(gpio, setp) \
-do { \
-if (setp) \
- GPSR(gpio) = GPIO_bit(gpio); \
-else \
- GPCR(gpio) = GPIO_bit(gpio); \
-} while (0)
+u16 palmld_usb2_cmd_read(int addr)
+{
+ u16 data = PALMLD_USB2_CMD_ADDR | PALMLD_USB2_CMD_READ
+ | (addr & PALMLD_USB2_ADDR_MASK);
-static int socket_ready;
+ PALMLD_USB2_ADDR_FIFO6 = data;
+
+ // ... wait for interrupt ...
+ udelay(100);
+
+ return PALMLD_USB2_ADDR_FIFO6;
+}
-static struct platform_device palmld_pcmcia_device = {
- .name = "pxa2xx-pcmcia",
- .id = 0,
- .dev = {
- .platform_data = &palmld_pcmcia_ops,
- .release = palmld_pcmcia_release
- }
-};
+u16 palmld_usb2_dumpregs(void)
+{
+ printk ("- CY7C68001 REGISTER DUMP -\n");
-*/
+ printk (">> ADDRESS DUMP\n");
+ printk ("FIFO2 %04x\n", PALMLD_USB2_ADDR_FIFO2);
+ printk ("FIFO4 %04x\n", PALMLD_USB2_ADDR_FIFO4);
+ printk ("FIFO6 %04x\n", PALMLD_USB2_ADDR_FIFO6);
+ printk ("FIFO8 %04x\n", PALMLD_USB2_ADDR_FIFO8);
+ printk ("CMD %04x\n", PALMLD_USB2_ADDR_CMD);
+ printk ("RESERVED1 %04x\n", PALMLD_USB2_ADDR_RESERVED1);
+ printk ("RESERVED2 %04x\n", PALMLD_USB2_ADDR_RESERVED2);
+ printk ("RESERVED3 %04x\n", PALMLD_USB2_ADDR_RESERVED3);
-#define SX2_BASE PALMLD_USB_VIRT
+ printk ("\n\n>> REGISTER DUMP\n");
+ printk ("*** GENERAL CONFIG\n");
+ printk ("IFCONFIG %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_IFCONFIG));
+ printk ("FLAGSAB %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_FLAGSAB));
+ printk ("FLAGSCD %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_FLAGSCD));
+ printk ("POLAR %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_POLAR));
+ printk ("REVID %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_REVID));
-#define SX2_IF(x) (*((volatile u16 *)x))
+ printk ("\n*** ENDPOINT CONFIG\n");
+ printk ("EP2CFG %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP2CFG));
+ printk ("EP4CFG %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP4CFG));
+ printk ("EP6CFG %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP6CFG));
+ printk ("EP8CFG %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP8CFG));
+ printk ("EP2PKTLENH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP2PKTLENH));
+ printk ("EP2PKTLENL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP2PKTLENL));
+ printk ("EP4PKTLENH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP4PKTLENH));
+ printk ("EP4PKTLENL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP4PKTLENL));
+ printk ("EP6PKTLENH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP6PKTLENH));
+ printk ("EP6PKTLENL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP6PKTLENL));
+ printk ("EP8PKTLENH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP8PKTLENH));
+ printk ("EP8PKTLENL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP8PKTLENL));
+ printk ("EP2PFH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP2PFH));
+ printk ("EP2PFL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP2PFL));
+ printk ("EP4PFH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP4PFH));
+ printk ("EP4PFL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP4PFL));
+ printk ("EP6PFH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP6PFH));
+ printk ("EP6PFL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP6PFL));
+ printk ("EP8PFH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP8PFH));
+ printk ("EP8PFL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP8PFL));
+ printk ("EP2ISOINPKTS %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP2ISOINPKTS));
+ printk ("EP4ISOINPKTS %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP4ISOINPKTS));
+ printk ("EP6ISOINPKTS %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP6ISOINPKTS));
+ printk ("EP8ISOINPKTS %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP8ISOINPKTS));
+
+ printk ("\n*** INPKTEND/FLUSH\n");
+ printk ("INPKTEND/FLUSH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_INPKTEND));
-#define SX2_FIFO2 SX2_IF(SX2_BASE + 0x0)
-#define SX2_FIFO4 SX2_IF(SX2_BASE + 0x2)
-#define SX2_FIFO6 SX2_IF(SX2_BASE + 0x4)
-#define SX2_FIFO8 SX2_IF(SX2_BASE + 0x6)
-#define SX2_CMD SX2_IF(SX2_BASE + 0x8)
+ printk ("\n*** USB CONFIG\n");
+ printk ("USBFRAMEH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_USBFRAMEH));
+ printk ("USBFRAMEL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_USBFRAMEL));
+ printk ("MICROFRAME %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_MICROFRAME));
+ printk ("FNADDR %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_FNADDR));
+
+ printk ("\n*** INTERRUPTS\n");
+ printk ("INTENABLE %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_INTENABLE));
+
+ printk ("\n*** DESCRIPTOR\n");
+ printk ("DESC %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_DESC));
+
+ printk ("\n*** ENDPOINT 0\n");
+ printk ("EP0BUF %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP0BUF));
+ printk ("SETUP %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_SETUP));
+ printk ("EP0BC %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP0BC));
+
+ printk ("\n*** UNINDEXED REG CTRL\n");
+ printk ("UIRC0 %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_UIRC0));
+ printk ("UIRC1 %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_UIRC1));
+ printk ("UIRC2 %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_UIRC2));
-#define SX2_CMD_READ (0x40)
-#define SX2_CMD_ADDR (0x80)
+ printk ("\n*** UNINDEXED REGS IN XDATA\n");
+ printk ("FIFOPINPOLAR %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_FIFOPINPOLAR));
+ printk ("TOGCTL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_TOGCTL));
-#define SX2_ADDR_MASK (0x3f)
+ printk ("\n- END OF DUMP -\n");
-
-#define SX2_REG_REVID (0x05)
-
-u16 sx2_cmd_read(int addr)
-{
- u16 data = SX2_CMD_ADDR | SX2_CMD_READ | (addr & SX2_ADDR_MASK);
- SX2_FIFO6 = data;
-
- // ... wait for interrupt ...
- udelay(100);
-
- return SX2_FIFO6;
+ return 0;
}
-static int __init sx2_init(void)
+static int __init palmld_usb2_init(void)
{
printk ("sx2_init()\n");
if(!machine_is_xscale_palmld()) return -ENODEV;
- printk ("fifo2 %x\n", SX2_FIFO2);
- printk ("fifo4 %x\n", SX2_FIFO4);
- printk ("fifo6 %x\n", SX2_FIFO6);
- printk ("fifo8 %x\n", SX2_FIFO8);
- printk ("cmd %x\n", SX2_CMD);
- printk ("res1 %x\n", SX2_IF(SX2_BASE + 10));
- printk ("res2 %x\n", SX2_IF(SX2_BASE + 12));
+ palmld_usb2_dumpregs();
+
+ return -ENODEV;
- printk ("Chip revision: %x\n", sx2_cmd_read(SX2_REG_REVID));
-
- return -ENODEV; //platform_device_register (&palmld_pcmcia_device);
}
-static void __exit sx2_exit(void)
+static void __exit palmld_usb2_exit(void)
{
- //platform_device_unregister (&palmld_pcmcia_device);
}
-module_init(sx2_init);
-module_exit(sx2_exit);
+module_init(palmld_usb2_init);
+module_exit(palmld_usb2_exit);
-MODULE_AUTHOR ("Alex Osborne <bob...@gm...>");
-MODULE_DESCRIPTION ("EZ-USB SX2 support for Palm LifeDrive");
+MODULE_AUTHOR ("Marek Vasut <mar...@gm...>");
+MODULE_DESCRIPTION ("USB2 driver for Palm LifeDrive");
MODULE_LICENSE ("GPL");
Added: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-usb2.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-usb2.h (rev 0)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-usb2.h 2007-03-30 21:01:50 UTC (rev 948)
@@ -0,0 +1,125 @@
+/*
+ * palmld-usb2.h
+ *
+ * Cypress EZUSB SX2 - CY7C68001 External master register definitions
+ * SX2 is an USB2 controller in PalmOne LifeDrive Handheld Computer
+ *
+ * Author: Marek Vasut <mar...@gm...>
+ *
+ *
+ * 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.
+ *
+ *
+ *
+ */
+#ifndef _INCLUDE_PALMLD_USB2_H_
+
+#define _INCLUDE_PALMLD_USB2_H_
+
+#include <asm/arch/palmld-gpio.h>
+
+/***************************************************
+ * SX2 REGISTERS *
+ ***************************************************/
+
+/* General configuration */
+#define PALMLD_USB2_REG_IFCONFIG 0x01
+#define PALMLD_USB2_REG_FLAGSAB 0x02
+#define PALMLD_USB2_REG_FLAGSCD 0x03
+#define PALMLD_USB2_REG_POLAR 0x04
+#define PALMLD_USB2_REG_REVID 0x05
+
+/* Endpoint configuration */
+#define PALMLD_USB2_REG_EP2CFG 0x06
+#define PALMLD_USB2_REG_EP4CFG 0x07
+#define PALMLD_USB2_REG_EP6CFG 0x08
+#define PALMLD_USB2_REG_EP8CFG 0x09
+#define PALMLD_USB2_REG_EP2PKTLENH 0x0A
+#define PALMLD_USB2_REG_EP2PKTLENL 0x0B
+#define PALMLD_USB2_REG_EP4PKTLENH 0x0C
+#define PALMLD_USB2_REG_EP4PKTLENL 0x0D
+#define PALMLD_USB2_REG_EP6PKTLENH 0x0E
+#define PALMLD_USB2_REG_EP6PKTLENL 0x0F
+#define PALMLD_USB2_REG_EP8PKTLENH 0x10
+#define PALMLD_USB2_REG_EP8PKTLENL 0x11
+#define PALMLD_USB2_REG_EP2PFH 0x12
+#define PALMLD_USB2_REG_EP2PFL 0x13
+#define PALMLD_USB2_REG_EP4PFH 0x14
+#define PALMLD_USB2_REG_EP4PFL 0x15
+#define PALMLD_USB2_REG_EP6PFH 0x16
+#define PALMLD_USB2_REG_EP6PFL 0x17
+#define PALMLD_USB2_REG_EP8PFH 0x18
+#define PALMLD_USB2_REG_EP8PFL 0x19
+#define PALMLD_USB2_REG_EP2ISOINPKTS 0x1A
+#define PALMLD_USB2_REG_EP4ISOINPKTS 0x1B
+#define PALMLD_USB2_REG_EP6ISOINPKTS 0x1C
+#define PALMLD_USB2_REG_EP8ISOINPKTS 0x1D
+
+/* Flags */
+#define PALMLD_USB2_REG_EP24FLAGS 0x1E
+#define PALMLD_USB2_REG_EP68FLAGS 0x1F
+
+/* INPKTEND/FLUSH */
+#define PALMLD_USB2_REG_INPKTEND 0x20
+#define PALMLD_USB2_REG_FLUSH 0x20
+
+/* USB Configuration */
+#define PALMLD_USB2_REG_USBFRAMEH 0x2A
+#define PALMLD_USB2_REG_USBFRAMEL 0x2B
+#define PALMLD_USB2_REG_MICROFRAME 0x2C
+#define PALMLD_USB2_REG_FNADDR 0x2D
+
+/* Interrupts */
+#define PALMLD_USB2_REG_INTENABLE 0x2E
+
+/* Descriptor */
+#define PALMLD_USB2_REG_DESC 0x30
+
+/* Endpoint 0 */
+#define PALMLD_USB2_REG_EP0BUF 0x31
+#define PALMLD_USB2_REG_SETUP 0x32
+#define PALMLD_USB2_REG_EP0BC 0x33
+
+/* Un-indexed Register control */
+#define PALMLD_USB2_REG_UIRC0 0x3A
+#define PALMLD_USB2_REG_UIRC1 0x3B
+#define PALMLD_USB2_REG_UIRC2 0x3C
+
+/* Un-indexed Registers in XDATA space */
+#define PALMLD_USB2_REG_FIFOPINPOLAR 0xE609
+#define PALMLD_USB2_REG_TOGCTL 0xE683
+
+/***************************************************
+ * SX2 ADDRESS *
+ ***************************************************/
+
+#define PALMLD_USB2_ADDR_BASE PALMLD_USB_VIRT
+
+#define PALMLD_USB2_ADDR_IF(x) (*((volatile u16 *)x))
+
+#define PALMLD_USB2_ADDR_FIFO2 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x0)
+#define PALMLD_USB2_ADDR_FIFO4 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x2)
+#define PALMLD_USB2_ADDR_FIFO6 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x4)
+#define PALMLD_USB2_ADDR_FIFO8 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x6)
+#define PALMLD_USB2_ADDR_CMD PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x8)
+#define PALMLD_USB2_ADDR_RESERVED1 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x10)
+#define PALMLD_USB2_ADDR_RESERVED2 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x12)
+#define PALMLD_USB2_ADDR_RESERVED3 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x14)
+
+/***************************************************
+ * SX2 COMMANDS *
+ ***************************************************/
+
+#define PALMLD_USB2_CMD_WRITE (0x00)
+#define PALMLD_USB2_CMD_READ (0x40)
+#define PALMLD_USB2_CMD_ADDR (0x80)
+
+/***************************************************
+ * SX2 MISC *
+ ***************************************************/
+
+#define PALMLD_USB2_ADDR_MASK (0x3f)
+
+#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|