⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kitl_cfg.h

📁 SAMSUNG S3C6410 CPU BSP for winmobile6
💻 H
字号:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
#ifndef __KITL_CFG_H
#define __KITL_CFG_H

//------------------------------------------------------------------------------
#include <bsp.h>
#include <oal_kitl.h>
#include <oal_ethdrv.h>

//------------------------------------------------------------------------------
// USB Serial KITL or UART KITL 
//------------------------------------------------------------------------------

//This is not available, now.
//Set BSP_KITL in "smdk6410.bat" file
//KITL option is defined in "\src\kernel\oal\sources" file
#if 0
#define KITL_SEL	2
#if KITL_SEL==1
#define KITL_SERIAL
#define KITL_SERIAL_UART	0
#elif KITL_SEL==2
#define KITL_USBSERIAL
#else
#define KITL_ETHERNET
#endif
#endif

//------------------------------------------------------------------------------
// KITL Serial UART 
//------------------------------------------------------------------------------

//This is not available, now.
//Set BSP_KITL in "smdk6410.bat" file
//KITL option is defined in "\src\kernel\oal\sources" file

#ifdef KITL_SERIAL_UART0
#define KITL_SERIAL
#define UART_Kitl		(S3C6410_BASE_REG_PA_UART0)
#endif
#ifdef KITL_SERIAL_UART1
#define KITL_SERIAL
#define UART_Kitl		(S3C6410_BASE_REG_PA_UART1)
#endif
#ifdef KITL_SERIAL_UART2
#define KITL_SERIAL
#define UART_Kitl		(S3C6410_BASE_REG_PA_UART2)
#endif
#ifdef KITL_SERIAL_UART3
#define KITL_SERIAL
#define UART_Kitl		(S3C6410_BASE_REG_PA_UART3)
#endif

#if 0
#define UART_BAUD			(115200)
#define BSP_UART_ULCON         0x03                // 8 bits, 1 stop, no parity
#define BSP_UART_UCON          0x0005              // pool mode, PCLK for UART
#define BSP_UART_UFCON         0x07                // disable FIFO
#define BSP_UART_UMCON         0x00                // disable auto flow control
#define BSP_UART_UBRDIV        (S3C6410_PCLK/(UART_BAUD*16) - 1)
#endif


//------------------------------------------------------------------------------
// KITL USB Serial
//------------------------------------------------------------------------------

#define USBSER_KITL_POLL

// Lengths of the FIFOs for each endpoint
//$ REVIEW (RandyRam) EP1 is actually 20 bytes

#define EP0Len		8
#define EP1Len		512
#define EP2Len		512
#define EP3Len		512
#define EP4Len		512

// Define the configuration descriptor length
#define CFGLEN		32
#define iCONF		18
#define TLEN			(CFGLEN + 18)

// Request Codes
#define GET_STATUS		0x00
#define CLEAR_FEATURE	0x01
#define SET_FEATURE		0x03
#define SET_ADDRESS		0x05
#define GET_DESCRIPTOR	0x06
#define SET_DESCRIPTOR	0x07
#define GET_CONFIG		0x08
#define SET_CONFIG		0x09
#define GET_INTERFACE	0x0a
#define SET_INTERFACE	0x0b

// Device specific request
#define SET_CONTROL_LINE_STATE	0x22

// Descriptor Types
#define DEVICE			0x01
#define CONFIGURATION	0x02
#define STRING			0x03
#define INTERFACE		0x04
#define ENDPOINT		0x05

//
// States we can be in
//
#define KITLUSBSER_STATE_NONE			0
#define KITLUSBSER_STATE_INIT			1
#define KITLUSBSER_STATE_CONFIGURED	2
#define KITLUSBSER_STATE_CONNECTED	3

//
// SetupPKG used for SETUP requests on EP0
//
typedef struct
{
	unsigned char bmRequest, bRequest;
	unsigned short wValue, wIndex, wLength;
} SetupPKG, *PSetupPKG;

//
// book keeping struct
//
typedef struct tagS3CUSBInfo
{
	SetupPKG	dReq;		// @field USB endpoint 0 command
	BYTE		dConfIdx;	// @field USB Configuration Index
	BYTE		dInterface;	// @field USB Interface Index
	BYTE		dSetting;	// @field USB Setting Index
	BYTE		dAddress;	// @field USB device Address
} S3CUSB_INFO, *PS3CUSB_INFO;

//
// record-keeping structure
//
typedef struct tagUSBSERKITLInfo
{
	DWORD			dwState;
	KITLTRANSPORT	KitlTransport;
	DWORD			dwModemStatus;
} USBSERKITL_INFO, *PUSBSERKITL_INFO;

//
//Portable mechanism for writing bitfields in IO register structures
//
#define IOW_REG_SET(_type,_ptr,_value)				\
	{												\
		*(volatile unsigned char*)(_ptr) = _value;		\
	}
#define IOW_REG_OR(_type,_ptr,_value)				\
	{												\
		*(volatile unsigned char*)(_ptr) |= _value;		\
	}
#define IOW_REG_AND(_type,_ptr,_value)				\
	{												\
		*(volatile unsigned char*)(_ptr) &= _value;		\
	}
#define IOW_REG_FIELD(_type,_ptr,_field,_value)		\
	{												\
		register union								\
		{											\
			_type s;									\
			unsigned char d;							\
		} foo;										\
		foo.d = *(volatile unsigned char*)(_ptr);			\
		foo.s._field = _value;							\
		*(volatile unsigned char*)(_ptr) = foo.d;			\
	}
#define IOW_REG_BITSET(_type,_ptr,_field,_value)		\
	{												\
		register union								\
		{											\
			_type s;									\
			unsigned char d;							\
		} foo;										\
		foo.d = 0;									\
		foo.s._field = _value;							\
		*(volatile unsigned char*)(_ptr) = foo.d;			\
	}
#define IOW_REG_GET(_type,_ptr,_field,_value)		\
	{												\
		register union								\
		{											\
			_type s;									\
			unsigned char d;							\
		} foo;										\
		foo.d = *(volatile unsigned char*)(_ptr);			\
		_value = foo.s._field;							\
	}

#define UDC_REG_WRITE(_struct,_ptr,_field,_val) IOW_REG_FIELD(_struct,_ptr,_field,_val)

#define UDC_REG_BITSET(_struct,_ptr,_field,_val)			\
	{													\
		_struct xx;										\
  		*(unsigned char *)&xx = 0;							\
  		xx._field = _val;									\
  		IOW_REG_SET(_struct,_ptr,*(unsigned char*)&xx);	\
	}

#define UDC_REG_WRITEX(_setptr,_setval)		(_setptr) = _setval;

//------------------------------------------------------------------------------
// Kitl ethernet cs8900a 
//------------------------------------------------------------------------------

//#define CS8900A_KITL_POLLMODE
//#define CS8900A_KITL_DHCP

#define CS8900A_MAC			L"11:22:33:44:55:66"
#define CS8900A_IP_ADDRESS		L"12.23.0.2"
#define CS8900A_IP_MASK			L"255.255.255.0"
#define CS8900A_IP_ROUTER		L"12.23.0.255"

//------------------------------------------------------------------------------

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -