00001 /* 00002 * Copyright 2009-2011 Oleg Mazurov, Circuits At Home, http://www.circuitsathome.com 00003 * MAX3421E USB host controller support 00004 * 00005 * Redistribution and use in source and binary forms, with or without 00006 * modification, are permitted provided that the following conditions 00007 * are met: 00008 * 1. Redistributions of source code must retain the above copyright 00009 * notice, this list of conditions and the following disclaimer. 00010 * 2. Redistributions in binary form must reproduce the above copyright 00011 * notice, this list of conditions and the following disclaimer in the 00012 * documentation and/or other materials provided with the distribution. 00013 * 3. Neither the name of the authors nor the names of its contributors 00014 * may be used to endorse or promote products derived from this software 00015 * without specific prior written permission. 00016 * 00017 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 00018 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00019 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00020 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 00021 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 00022 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 00023 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 00024 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 00025 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 00026 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 00027 * SUCH DAMAGE. 00028 */ 00029 00030 /* MAX3421E functions */ 00031 #ifndef _MAX3421E_H_ 00032 #define _MAX3421E_H_ 00033 00034 00035 //#include <Spi.h> 00036 //#include <WProgram.h> 00037 #include "WProgram.h" 00038 #include "Max3421e_constants.h" 00039 00040 class MAX3421E /* : public SPI */ { 00041 // byte vbusState; 00042 public: 00043 MAX3421E( void ); 00044 byte getVbusState( void ); 00045 // void toggle( byte pin ); 00046 static void regWr( byte, byte ); 00047 char * bytesWr( byte, byte, char * ); 00048 static void gpioWr( byte ); 00049 byte regRd( byte ); 00050 char * bytesRd( byte, byte, char * ); 00051 byte gpioRd( void ); 00052 boolean reset(); 00053 boolean vbusPwr ( boolean ); 00054 void busprobe( void ); 00055 void powerOn(); 00056 byte IntHandler(); 00057 byte GpxHandler(); 00058 byte Task(); 00059 private: 00060 static void pinInit(void); 00061 static void setRST(uint8_t val); 00062 static uint8_t readINT(void); 00063 static uint8_t readGPX(void); 00064 00065 static void spi_init() { 00066 uint8_t tmp; 00067 // initialize SPI pins 00068 pinMode(SCK_PIN, OUTPUT); 00069 pinMode(MOSI_PIN, OUTPUT); 00070 pinMode(MISO_PIN, INPUT); 00071 pinMode(SS_PIN, OUTPUT); 00072 /* mode 00 (CPOL=0, CPHA=0) master, fclk/2. Mode 11 (CPOL=11, CPHA=11) is also supported by MAX3421E */ 00073 SPCR = 0x50; 00074 SPSR = 0x01; 00075 00076 tmp = SPSR; 00077 tmp = SPDR; 00078 } 00079 // void init(); 00080 friend class Max_LCD; 00081 }; 00082 00083 00084 00085 00086 #endif //_MAX3421E_H_