/*
 * capabilities - Capabilities of PSoC chips
 *
 * Written 2006 by Werner Almesberger
 * Copyright 2006 Werner Almesberger
 */


/*
 * If a chip has the registers for a given capability, but that capability is
 * not usable (e.g., SMP in some 21xxx packages, or the ECO in 21xxx in
 * general), we exclude these registers.
 */


/* ----- Chip declarations ------------------------------------------------- */


/* 8 pin parts */

chip CY8C27143 CY8C27143_8
chip CY8C24123 CY8C24123_8
chip CY8C24123A CY8C24123A_8
chip CY8C22113 CY8C22113_8
chip CY8C21123 CY8C21123_8
CY8C24123_ALL = CY8C24123 || CY8C24123A

PIN_8 = CY8C27143 || CY8C24123_ALL || CY8C22113 || CY8C21123

/* 16 pin parts */

chip CY8C21234 CY8C21234_16
chip CY8C21223 CY8C21223_16

PIN_16 = CY8C21234 || CY8C21223

/* 20 pin parts */

chip CY8C27243 CY8C27243_20
chip CY8C24223 CY8C24223_20
chip CY8C24223A CY8C24223A_20
chip CY8C22212 CY8C22212_20
chip CY8C21334 CY8C21334_20
chip CY8C21323_20
CY8C24223_ALL = CY8C24223 || CY8C24223A

PIN_20 = CY8C27243 || CY8C24223_ALL || CY8C22212 || CY8C21334 || CY8C21323_20

/* 24 pin parts */

chip CY8C21323_24 CY8C21323

CY8C21323 = CY8C21323_20 || CY8C21323_24

PIN_24 = CY8C21323_24

/* 28 pin parts */

chip CY8C29466 CY8C29466_28
chip CY8C27443 CY8C27443_28
chip CY8C24423_28
chip CY8C24423A_28
chip CY8C21534 CY8C21534_28
chip CY7C60323_28
chip CY7C64215_28
CY8C24423_ALL_28 = CY8C24423_28 || CY8C24423A_28

PIN_28 = CY8C29466 || CY8C27443 || CY8C24423_ALL_28 || CY8C21534 ||
         CY7C60323_28 || CY7C64215_28

/* 32 pin parts */

chip CY8C24423_32 CY8C24423
chip CY8C24423A_32 CY8C24423A
chip CY8C22213 CY8C22213_32
chip CY8C21434 CY8C21434_32
chip CY7C60323_32 CY7C60323
chip CY8C21634 CY8C21634_32
chip CY7C60333 CY7C60333_32
CY8C24423_ALL_32 = CY8C24423_32 || CY8C24423A_32

CY8C24423 = CY8C24423_28 || CY8C24423_32
CY8C24423A = CY8C24423A_28 || CY8C24423A_32
CY8C24423_ALL = CY8C24423_ALL_28 || CY8C24423_ALL_32
CY7C60323 = CY7C60323_28 || CY7C60323_32

PIN_32 = CY8C24423_ALL_32 || CY8C22213 || CY8C21434 || CY7C60323_32 ||
         CY8C21634 || CY7C60333

/* 44 pin parts */

chip CY8C29566 CY8C29566_44
chip CY8C27543 CY8C27543_44

PIN_44 = CY8C29566 || CY8C27543

/* 48 pin parts */

chip CY8C29666 CY8C29666_48 /* SSOP and QFN are identical */
chip CY8C27643 CY8C27643_48 /* SSOP and QFN are identical */
chip CYWUSB6953 CYWUSB6953_48

PIN_48 = CY8C29666 || CY8C27643 || CYWUSB6953

/* 56 pin parts */

chip CY8C24794 CY8C24794_56
chip CY7C64215_56 CY7C64215
chip CY8C24894 CY8C24894_56

CY7C64215 = CY7C64215_28 || CY7C64215_56

PIN_56 = CY8C24794 || CY7C64215_56 || CY8C24894

/* 68 pin parts */

chip CY8C24994_68

PIN_68 = CY8C24994_68

/* 100 pin parts */

chip CY8C29866 CY8C29866_100
chip CY8C24994_100

CY8C24994 = CY8C24994_68 || CY8C24994_100

PIN_100 = CY8C29866 || CY8C24994_100


/* ----- Chip families ----------------------------------------------------- */


CY8C29x66 = CY8C29466 || CY8C29566 || CY8C29666 || CY8C29866
CY8C27x43 = CY8C27143 || CY8C27243 || CY8C27443 || CY8C27543 || CY8C27643
CY8C24x94 = CY8C24794 || CY8C24894 || CY8C24994
CY8C24x23 = CY8C24123 || CY8C24223 || CY8C24423
CY8C24x23A = CY8C24123A || CY8C24223A || CY8C24423A
CY8C24x23_ALL = CY8C24123_ALL || CY8C24223_ALL || CY8C24423_ALL
CY8C22x13 = CY8C22113 || CY8C22212 || CY8C22213
CY8C21x34 = CY8C21234 || CY8C21334 || CY8C21534 || CY8C21434 || CY8C21634
CY8C21x23 = CY8C21123 || CY8C21223 || CY8C21323
CY7C603xx = CY7C60333 || CY7C60323

/* CY7C64215 and CYWUSB6953 are "family-less" */


/* ----- Chip capabilities ------------------------------------------------- */

P2 = P3 || PIN_28 || CY8C24423_ALL_32 || CYWUSB6953
P3 = P4 || CY8C21434 || CY7C60323_32 || CY8C21634 || CY7C60333 || PIN_44
P4 = P5 || PIN_44
P5 = PIN_68 || CY8C29666 || CY8C27643 || PIN_56
P6 = CY8C29866
P7 = PIN_56 || PIN_68 || PIN_100

PAGED = CY8C29x66 || CY8C24x94 || CY8C21x34 || CY7C64215 || CY7C603xx ||
	CYWUSB6953

SMP = CY8C21234 || CY8C21223 || CY8C27243 || CY8C24223_ALL || CY8C21323_24 ||
      CY8C29466 || CY8C27443 || CY8C24423_ALL || CY8C21634 || CY7C60333 ||
      CY8C29566 || CY8C27543 || CY8C29666 || CY8C27643 || CY8C29866
ECO = !CY8C21x23 && !CY8C21x34 && !CY7C603xx
SLIMO = !CY8C27x43 && !CY8C24x23 && !CY8C22x13 && !CY7C603xx && !CYWUSB6953

USB = CY7C64215 || CY8C24794 || CY8C24894 || CY8C24994
WUSB = CYWUSB6953

MAC1 = CY8C29x66 || CY8C24x94 || CY7C64215
MAC0 = MAC1 || CY8C27x43 || CY8C24x23_ALL

DEC_T1 = CY8C27x43 || CY8C24x23_ALL || CY8C22x13
DEC_T2 = CY8C29x66 || CY8C24x94 || CY7C64215

AMUX1 = CY8C21x34 || CY7C603xx || CYWUSB6953
AMUX2 = CY8C24x94 || CY7C64215

DIGITAL_1 = !DIGITAL_2 && !DIGITAL_4
DIGITAL_2 = CY8C27x43
DIGITAL_4 = CY8C29x66

ANALOG_2LIM = CY8C21x34 || CY8C21x23 || CY7C603xx || CYWUSB6953
ANALOG_1 = CY8C22x13
ANALOG_2 = CY8C24x94 || CY8C24x23_ALL || CY7C64215
ANALOG_4 = CY8C29x66 || CY8C27x43

ANALOG_UNLIMITED = !ANALOG_2LIM
