380 lines
8.0 KiB
C++
Raw Permalink Normal View History

2015-07-08 08:39:24 -07:00
/*
* Copyright (C) 2014 Jared Boone, ShareBrained Technology, Inc.
*
* This file is part of PortaPack.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street,
* Boston, MA 02110-1301, USA.
*/
#ifndef __PINS_H__
#define __PINS_H__
#include "gpio.hpp"
namespace lpc43xx {
enum Pins {
P0_0,
P0_1,
P1_0,
P1_1,
P1_2,
P1_3,
P1_4,
P1_5,
P1_6,
P1_7,
P1_8,
P1_9,
P1_10,
P1_11,
P1_12,
P1_13,
P1_14,
P1_15,
P1_16,
P1_17,
P1_18,
P1_19,
P1_20,
P2_0,
P2_1,
P2_2,
P2_3,
P2_4,
P2_5,
P2_6,
P2_7,
P2_8,
P2_9,
P2_10,
P2_11,
P2_12,
P2_13,
P3_0,
P3_1,
P3_2,
P4_0,
P4_1,
P4_2,
P4_3,
P4_4,
P4_5,
P4_6,
P4_7,
P4_8,
P4_9,
P4_10,
P5_0,
P5_1,
P5_2,
P5_3,
P5_4,
P5_5,
P5_6,
P5_7,
P6_0,
P6_1,
P6_2,
P6_3,
P6_4,
P6_5,
P6_6,
P6_7,
P6_8,
P6_9,
P6_10,
P6_11,
P6_12,
P7_0,
P7_1,
P7_2,
P7_3,
P7_4,
P7_5,
P7_6,
P7_7,
P9_5,
P9_6,
PF_4,
CLK0,
CLK2,
2015-07-08 08:39:24 -07:00
};
constexpr Pin pins[]{
[P0_0] = {0, 0},
[P0_1] = {0, 1},
[P1_0] = {1, 0},
[P1_1] = {1, 1},
[P1_2] = {1, 2},
[P1_3] = {1, 3},
[P1_4] = {1, 4},
[P1_5] = {1, 5},
[P1_6] = {1, 6},
[P1_7] = {1, 7},
[P1_8] = {1, 8},
[P1_9] = {1, 9},
[P1_10] = {1, 10},
[P1_11] = {1, 11},
[P1_12] = {1, 12},
[P1_13] = {1, 13},
[P1_14] = {1, 14},
[P1_15] = {1, 15},
[P1_16] = {1, 16},
[P1_17] = {1, 17},
[P1_18] = {1, 18},
[P1_19] = {1, 19},
[P1_20] = {1, 20},
[P2_0] = {2, 0},
[P2_1] = {2, 1},
[P2_2] = {2, 2},
[P2_3] = {2, 3},
[P2_4] = {2, 4},
[P2_5] = {2, 5},
[P2_6] = {2, 6},
[P2_7] = {2, 7},
[P2_8] = {2, 8},
[P2_9] = {2, 9},
[P2_10] = {2, 10},
[P2_11] = {2, 11},
[P2_12] = {2, 12},
[P2_13] = {2, 13},
[P3_0] = {3, 0},
[P3_1] = {3, 1},
[P3_2] = {3, 2},
[P4_0] = {4, 0},
[P4_1] = {4, 1},
[P4_2] = {4, 2},
[P4_3] = {4, 3},
[P4_4] = {4, 4},
[P4_5] = {4, 5},
[P4_6] = {4, 6},
[P4_7] = {4, 7},
[P4_8] = {4, 8},
[P4_9] = {4, 9},
[P4_10] = {4, 10},
[P5_0] = {5, 0},
[P5_1] = {5, 1},
[P5_2] = {5, 2},
[P5_3] = {5, 3},
[P5_4] = {5, 4},
[P5_5] = {5, 5},
[P5_6] = {5, 6},
[P5_7] = {5, 7},
[P6_0] = {6, 0},
[P6_1] = {6, 1},
[P6_2] = {6, 2},
[P6_3] = {6, 3},
[P6_4] = {6, 4},
[P6_5] = {6, 5},
[P6_6] = {6, 6},
[P6_7] = {6, 7},
[P6_8] = {6, 8},
[P6_9] = {6, 9},
[P6_10] = {6, 10},
[P6_11] = {6, 11},
[P6_12] = {6, 12},
[P7_0] = {7, 0},
[P7_1] = {7, 1},
[P7_2] = {7, 2},
[P7_3] = {7, 3},
[P7_4] = {7, 4},
[P7_5] = {7, 5},
[P7_6] = {7, 6},
[P7_7] = {7, 7},
[P9_5] = {9, 5},
[P9_6] = {9, 6},
[PF_4] = {15, 4},
[CLK0] = {24, 0},
[CLK2] = {24, 2},
2015-07-08 08:39:24 -07:00
};
enum GPIOs {
GPIO0_0,
GPIO0_1,
GPIO0_2,
GPIO0_3,
GPIO0_4,
GPIO0_5,
/*GPIO0_6,*/ GPIO0_7,
GPIO0_8,
GPIO0_9,
GPIO0_10,
GPIO0_11,
GPIO0_12,
GPIO0_13,
GPIO0_14,
GPIO0_15,
GPIO1_0,
GPIO1_1,
GPIO1_2,
GPIO1_3,
GPIO1_4,
GPIO1_5,
GPIO1_6,
GPIO1_7,
GPIO1_8,
GPIO1_9,
GPIO1_10,
GPIO1_11,
GPIO1_12,
GPIO1_13, /*GPIO1_14, GPIO1_15,*/
GPIO2_0,
GPIO2_1,
GPIO2_2,
GPIO2_3,
GPIO2_4,
GPIO2_5,
GPIO2_6,
GPIO2_7,
GPIO2_8,
GPIO2_9,
GPIO2_10,
GPIO2_11,
GPIO2_12,
GPIO2_13,
GPIO2_14,
GPIO2_15,
GPIO3_0,
GPIO3_1,
GPIO3_2,
GPIO3_3,
GPIO3_4,
GPIO3_5,
GPIO3_6,
GPIO3_7,
GPIO3_8,
GPIO3_9,
GPIO3_10,
GPIO3_11,
GPIO3_12,
GPIO3_13,
GPIO3_14,
GPIO3_15,
GPIO4_11,
GPIO5_0,
GPIO5_1,
GPIO5_2,
GPIO5_3,
GPIO5_4,
GPIO5_5,
GPIO5_6,
GPIO5_7,
GPIO5_8,
GPIO5_9,
/*GPIO5_10, GPIO5_11,*/ GPIO5_12,
GPIO5_13,
GPIO5_14,
GPIO5_15,
GPIO5_16,
GPIO5_18,
2015-07-08 08:39:24 -07:00
};
constexpr GPIO gpio[] = {
[GPIO0_0] = {pins[P0_0], 0, 0, 0},
[GPIO0_1] = {pins[P0_1], 0, 1, 0},
[GPIO0_2] = {pins[P1_15], 0, 2, 0},
[GPIO0_3] = {pins[P1_16], 0, 3, 0},
[GPIO0_4] = {pins[P1_0], 0, 4, 0},
[GPIO0_5] = {pins[P6_6], 0, 5, 0},
//[GPIO0_6] = { pins[P3_6], 0, 6, 0 },
[GPIO0_7] = {pins[P2_7], 0, 7, 0},
[GPIO0_8] = {pins[P1_1], 0, 8, 0},
[GPIO0_9] = {pins[P1_2], 0, 9, 0},
[GPIO0_10] = {pins[P1_3], 0, 10, 0},
[GPIO0_11] = {pins[P1_4], 0, 11, 0},
[GPIO0_12] = {pins[P1_17], 0, 12, 0},
[GPIO0_13] = {pins[P1_18], 0, 13, 0},
[GPIO0_14] = {pins[P2_10], 0, 14, 0},
[GPIO0_15] = {pins[P1_20], 0, 15, 0},
2015-07-08 08:39:24 -07:00
[GPIO1_0] = {pins[P1_7], 1, 0, 0},
[GPIO1_1] = {pins[P1_8], 1, 1, 0},
[GPIO1_2] = {pins[P1_9], 1, 2, 0},
[GPIO1_3] = {pins[P1_10], 1, 3, 0},
[GPIO1_4] = {pins[P1_11], 1, 4, 0},
[GPIO1_5] = {pins[P1_12], 1, 5, 0},
[GPIO1_6] = {pins[P1_13], 1, 6, 0},
[GPIO1_7] = {pins[P1_14], 1, 7, 0},
[GPIO1_8] = {pins[P1_5], 1, 8, 0},
[GPIO1_9] = {pins[P1_6], 1, 9, 0},
[GPIO1_10] = {pins[P2_9], 1, 10, 0},
[GPIO1_11] = {pins[P2_11], 1, 11, 0},
[GPIO1_12] = {pins[P2_12], 1, 12, 0},
[GPIO1_13] = {pins[P2_13], 1, 13, 0},
//[GPIO1_14] = { pins[P3_4], 1, 14, 0 },
//[GPIO1_15] = { pins[P3_5], 1, 15, 0 },
2015-07-08 08:39:24 -07:00
[GPIO2_0] = {pins[P4_0], 2, 0, 0},
[GPIO2_1] = {pins[P4_1], 2, 1, 0},
[GPIO2_2] = {pins[P4_2], 2, 2, 0},
[GPIO2_3] = {pins[P4_3], 2, 3, 0},
[GPIO2_4] = {pins[P4_4], 2, 4, 0},
[GPIO2_5] = {pins[P4_5], 2, 5, 0},
[GPIO2_6] = {pins[P4_6], 2, 6, 0},
[GPIO2_7] = {pins[P5_7], 2, 7, 0},
[GPIO2_8] = {pins[P6_12], 2, 8, 0},
[GPIO2_9] = {pins[P5_0], 2, 9, 0},
[GPIO2_10] = {pins[P5_1], 2, 10, 0},
[GPIO2_11] = {pins[P5_2], 2, 11, 0},
[GPIO2_12] = {pins[P5_3], 2, 12, 0},
[GPIO2_13] = {pins[P5_4], 2, 13, 0},
[GPIO2_14] = {pins[P5_5], 2, 14, 0},
[GPIO2_15] = {pins[P5_6], 2, 15, 0},
2015-07-08 08:39:24 -07:00
[GPIO3_0] = {pins[P6_1], 3, 0, 0},
[GPIO3_1] = {pins[P6_2], 3, 1, 0},
[GPIO3_2] = {pins[P6_3], 3, 2, 0},
[GPIO3_3] = {pins[P6_4], 3, 3, 0},
[GPIO3_4] = {pins[P6_5], 3, 4, 0},
[GPIO3_5] = {pins[P6_9], 3, 5, 0},
[GPIO3_6] = {pins[P6_10], 3, 6, 0},
[GPIO3_7] = {pins[P6_11], 3, 7, 0},
[GPIO3_8] = {pins[P7_0], 3, 8, 0},
[GPIO3_9] = {pins[P7_1], 3, 9, 0},
[GPIO3_10] = {pins[P7_2], 3, 10, 0},
[GPIO3_11] = {pins[P7_3], 3, 11, 0},
[GPIO3_12] = {pins[P7_4], 3, 12, 0},
[GPIO3_13] = {pins[P7_5], 3, 13, 0},
[GPIO3_14] = {pins[P7_6], 3, 14, 0},
[GPIO3_15] = {pins[P7_7], 3, 15, 0},
2015-07-08 08:39:24 -07:00
[GPIO4_11] = {pins[P9_6], 4, 11, 0},
2015-07-08 08:39:24 -07:00
[GPIO5_0] = {pins[P2_0], 5, 0, 4},
[GPIO5_1] = {pins[P2_1], 5, 1, 4},
[GPIO5_2] = {pins[P2_2], 5, 2, 4},
[GPIO5_3] = {pins[P2_3], 5, 3, 4},
[GPIO5_4] = {pins[P2_4], 5, 4, 4},
[GPIO5_5] = {pins[P2_5], 5, 5, 4},
[GPIO5_6] = {pins[P2_6], 5, 6, 4},
[GPIO5_7] = {pins[P2_8], 5, 7, 4},
[GPIO5_8] = {pins[P3_1], 5, 8, 4},
[GPIO5_9] = {pins[P3_2], 5, 9, 4},
//[GPIO5_10] = { pins[P3_7], 5, 10, 4 },
//[GPIO5_11] = { pins[P3_8], 5, 11, 4 },
[GPIO5_12] = {pins[P4_8], 5, 12, 4},
[GPIO5_13] = {pins[P4_9], 5, 13, 4},
[GPIO5_14] = {pins[P4_10], 5, 14, 4},
[GPIO5_15] = {pins[P6_7], 5, 15, 4},
[GPIO5_16] = {pins[P6_8], 5, 16, 4},
[GPIO5_18] = {pins[P9_5], 5, 18, 4},
2015-07-08 08:39:24 -07:00
};
} // namespace lpc43xx
2015-07-08 08:39:24 -07:00
#endif /*__PINS_H__*/