Files
retrobsd/sys/pic32/sdramp_config.h
Serge Vakulenko 5cb608d7e1 Rename other disk drivers which needed rdisk.
Delete device names from all the drivers.
Move device inslude files from include/sys to include/machine directory.
Only include files which have something useful for user layer
(like special ioctls codes) should be placed into sys.
2015-09-26 23:00:13 -07:00

183 lines
4.2 KiB
C

#ifndef RD_SDRAMP_CONFIG_H_
#include "pic32mx.h"
/* TODO: better support for different sized sdram chips, 16 bit support */
/*
* Number of physical address lines on sdram chip
* one of 11, 12, 13
*/
#define SDR_ADDRESS_LINES 12
/*
* Ram data width in bytes - 1 (8 bit) or 2 (16 bit)
*
* NOT USED YET
*/
#define SDR_DATA_BYTES 2
/*
* Upper/Lower Byte selection
*/
#define SDR_DQM_PORT TRISA
#if SDR_DATA_BYTES == 2
#define SDR_DQM_UDQM_BIT 6
#endif
#define SDR_DQM_LDQM_BIT 7
/*
* Bank Selection
* BA0 is connected to SDR_BANK_0_BIT
* BA1 is connected to SDR_BANK_0_BIT + 1
*
* So, if SDR_BANK_0_BIT is 4, then bit 5
* must be connected to BA1.
*/
#define SDR_BANK_PORT TRISG
#define SDR_BANK_0_BIT 0
/*
* Clock Enable
*
* Connect to CKE on sdram
*/
#define SDR_CKE_PORT TRISD
#define SDR_CKE_BIT 11
/*
* Control Lines
*
* Connect to /WE, /CAS, /CS and /RAS pins on sdram
*/
#define SDR_CONTROL_PORT TRISG
#define SDR_CONTROL_WE_BIT 15
#define SDR_CONTROL_CAS_BIT 13
#define SDR_CONTROL_CS_BIT 14
#define SDR_CONTROL_RAS_BIT 12
/*
* Address Lines
*
* At present, the port can be changed, but
* changing the address line bits is unsupported.
*/
#define SDR_ADDRESS_LB_PORT TRISF
#define SDR_ADDRESS_PORT TRISD
/***** WARNING - DO NOT CHANGE WITHOUT ALSO CHANGING CODE TO MATCH *****/
#define SDR_ADDRESS_LB_A0_BIT 0
#define SDR_ADDRESS_LB_A1_BIT 1
#define SDR_ADDRESS_LB_A2_BIT 2
#define SDR_ADDRESS_A3_BIT 1
#define SDR_ADDRESS_A4_BIT 2
#define SDR_ADDRESS_A5_BIT 3
#define SDR_ADDRESS_A6_BIT 4
#define SDR_ADDRESS_A7_BIT 5
#define SDR_ADDRESS_A8_BIT 6
#define SDR_ADDRESS_A9_BIT 7
#if SDR_ADDRESS_LINES >= 11
#define SDR_ADDRESS_A10_BIT 8
#endif
#if SDR_ADDRESS_LINES >= 12
#define SDR_ADDRESS_A11_BIT 9
#endif
#if SDR_ADDRESS_LINES >= 13
#define SDR_ADDRESS_A12_BIT 10
#endif
/***** END WARNING *****/
/*
* Data Lines
*
* The low 8 bits (bits 0-7) must be used
* and connected to the data lines on the sdram.
* The specific order in which the 8 pins are
* connected to the data pins of the sdram is
* not significant, unless you wish for a neat
* and tidy design that is easy connect to a
* logic analyzer for debugging purposes.
*/
#define SDR_DATA_PORT TRISE
/*
* Output Compare
*
* Currently supporting OC1CON or OC4CON
* Timer2 is used in all cases.
* The appropriate pin should be connected to CLK on the sdram.
* OC1CON - RD0
* OC4CON - RD3
*/
#define SDR_OCR OC1CON
/*
* Additional sdram connections
*
* Power and ground as appropriate.
*/
/***************************************************************/
/*
* Anthing following should not normally need to be modified.
* There are here in order to share definitions between C and ASM.
*/
#ifdef SDR_ADDRESS_A10_BIT
#define SDR_ADDRESS_A10_BITMASK (1<<SDR_ADDRESS_A10_BIT)
#else
#define SDR_ADDRESS_A10_BITMASK 0
#endif
#ifdef SDR_ADDRESS_A11_BIT
#define SDR_ADDRESS_A11_BITMASK (1<<SDR_ADDRESS_A11_BIT)
#else
#define SDR_ADDRESS_A11_BITMASK 0
#endif
#ifdef SDR_ADDRESS_A12_BIT
#define SDR_ADDRESS_A12_BITMASK (1<<SDR_ADDRESS_A12_BIT)
#else
#define SDR_ADDRESS_A12_BITMASK 0
#endif
#define ADDRESS_LB_MASK \
((1<<SDR_ADDRESS_LB_A0_BIT)|(1<<SDR_ADDRESS_LB_A1_BIT)|(1<<SDR_ADDRESS_LB_A2_BIT))
#define ADDRESS_MASK \
((1<<SDR_ADDRESS_A3_BIT)|(1<<SDR_ADDRESS_A4_BIT)|(1<<SDR_ADDRESS_A5_BIT)| \
(1<<SDR_ADDRESS_A6_BIT)|(1<<SDR_ADDRESS_A7_BIT)|(1<<SDR_ADDRESS_A8_BIT)| \
(1<<SDR_ADDRESS_A9_BIT)| \
SDR_ADDRESS_A10_BITMASK| \
SDR_ADDRESS_A11_BITMASK| \
SDR_ADDRESS_A12_BITMASK)
#define CONTROL_ALL_MASK \
((1<<SDR_CONTROL_CS_BIT)|(1<<SDR_CONTROL_RAS_BIT)| \
(1<<SDR_CONTROL_CAS_BIT)|(1<<SDR_CONTROL_WE_BIT))
#define BANK_BITMASK 3
#define BANK_ALL_MASK (BANK_BITMASK << SDR_BANK_0_BIT)
#ifdef SDR_DQM_UDQM_BIT
#define SDR_DQM_MASK \
((1<<SDR_DQM_LDQM_BIT)|(1<<SDR_DQM_UDQM_BIT))
#else
#define SDR_DQM_MASK \
(1<<SDR_DQM_LDQM_BIT)
#endif
#endif