summaryrefslogtreecommitdiffstats
path: root/meta-facebook/meta-yosemite/recipes-yosemite/fbutils/files/setup-gpio.sh
diff options
context:
space:
mode:
Diffstat (limited to 'meta-facebook/meta-yosemite/recipes-yosemite/fbutils/files/setup-gpio.sh')
-rwxr-xr-xmeta-facebook/meta-yosemite/recipes-yosemite/fbutils/files/setup-gpio.sh307
1 files changed, 307 insertions, 0 deletions
diff --git a/meta-facebook/meta-yosemite/recipes-yosemite/fbutils/files/setup-gpio.sh b/meta-facebook/meta-yosemite/recipes-yosemite/fbutils/files/setup-gpio.sh
new file mode 100755
index 0000000..91797c5
--- /dev/null
+++ b/meta-facebook/meta-yosemite/recipes-yosemite/fbutils/files/setup-gpio.sh
@@ -0,0 +1,307 @@
+#!/bin/bash
+#
+# Copyright 2014-present Facebook. All Rights Reserved.
+#
+# This program file 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; version 2 of the License.
+#
+# 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 in a file named COPYING; if not, write to the
+# Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301 USA
+#
+
+### BEGIN INIT INFO
+# Provides: gpio-setup
+# Required-Start:
+# Required-Stop:
+# Default-Start: S
+# Default-Stop:
+# Short-Description: Set up GPIO pins as appropriate
+### END INIT INFO
+
+# This file contains definitions for the GPIO pins that were not otherwise
+# defined in other files. We should probably move some more of the
+# definitions to this file at some point.
+
+# The commented-out sections are generally already defined elsewhere,
+# and defining them twice generates errors.
+
+# The exception to this is the definition of the GPIO H0, H1, and H2
+# pins, which seem to adversely affect the rebooting of the system.
+# When defined, the system doesn't reboot cleanly. We're still
+# investigating this.
+
+. /usr/local/fbpackages/utils/ast-functions
+
+# Set up to read the board revision pins, Y0, Y1, Y2
+devmem_set_bit $(scu_addr 70) 19
+devmem_clear_bit $(scu_addr a4) 8
+devmem_clear_bit $(scu_addr a4) 9
+devmem_clear_bit $(scu_addr a4) 10
+
+gpio_export Y0
+gpio_export Y1
+gpio_export Y2
+
+# SLOT1_PRSNT_N, GPIOH5 (61)
+# GPIOH5(61): SCU90[6], SCU90[7] shall be 0
+devmem_clear_bit $(scu_addr 90) 6
+devmem_clear_bit $(scu_addr 90) 7
+
+gpio_export H5
+
+# SLOT2_PRSNT_N, GPIOH4 (60)
+# GPIOH4(60): SCU90[6], SCU90[7] shall be 0
+gpio_export H4
+
+# SLOT3_PRSNT_N, GPIOH7 (63)
+# GPIOH7(63): SCU90[6], SCU90[7] shall be 0
+gpio_export H7
+
+# SLOT4_PRSNT_N, GPIOH6 (62)
+# GPIOH6(62): SCU90[6], SCU90[7] shall be 0
+gpio_export H6
+
+# BMC_PWR_BTN_IN_N, uServer power button in, on GPIO D0(24)
+gpio_export D0
+
+# PWR_SLOT1_BTN_N, 1S Server power out, on GPIO D3
+# GPIOD3(27): SCU90[1], SCU8C[9], and SCU70[21] shall be 0
+devmem_clear_bit $(scu_addr 90) 1
+devmem_clear_bit $(scu_addr 8c) 9
+devmem_clear_bit $(scu_addr 70) 21
+
+gpio_set D3 1
+
+# PWR_SLOT2_BTN_N, 1S Server power out, on GPIO D1
+# Make sure the Power Control Pin is Set properly
+# GPIOD1(25): SCU90[1], SCU8C[8], and SCU70[21] shall be 0
+
+devmem_clear_bit $(scu_addr 8c) 8
+
+gpio_set D1 1
+
+# PWR_SLOT3_BTN_N, 1S Server power out, on GPIO D7
+# GPIOD7(31): SCU90[1], SCU8C[11], and SCU70[21] shall be 0
+devmem_clear_bit $(scu_addr 8c) 11
+
+gpio_set D7 1
+
+# PWR_SLOT4_BTN_N, 1S Server power out, on GPIO D5
+# GPIOD5(29): SCU90[1], SCU8C[10], and SCU70[21] shall be 0
+devmem_clear_bit $(scu_addr 8c) 10
+
+gpio_set D5 1
+
+# SMB_SLOT0_NIC_ALERT_N, alert for 1S Server NIC I2C, GPIO B0
+devmem_clear_bit $(scu_addr 80) 8
+
+gpio_export B0
+
+# Setup GPIOs to Mux Enable: GPIOS3(147), Channel Select: GPIOE4(36), GPIOE5(37)
+
+# To use GPIOS3 (147), SCU8C[3], SCU94[0], and SCU94[1] must be 0
+devmem_clear_bit $(scu_addr 8C) 3
+devmem_clear_bit $(scu_addr 94) 0
+devmem_clear_bit $(scu_addr 94) 1
+
+# To use GPIOE4 (36), SCU80[20], SCU8C[14], and SCU70[22] must be 0
+devmem_clear_bit $(scu_addr 80) 20
+devmem_clear_bit $(scu_addr 8C) 14
+devmem_clear_bit $(scu_addr 70) 22
+
+# To use GPIOE5 (37), SCU80[21], SCU8C[14], and SCU70[22] must be 0
+devmem_clear_bit $(scu_addr 80) 21
+devmem_clear_bit $(scu_addr 8C) 14
+devmem_clear_bit $(scu_addr 70) 22
+
+gpio_export S3
+gpio_export E4
+gpio_export E5
+
+# BMC_HEARTBEAT_N, heartbeat LED, GPIO Q7
+devmem_clear_bit $(scu_addr 90) 28
+
+gpio_export Q7
+
+# USB_OC_N, resettable fuse tripped, GPIO Q6
+devmem_clear_bit $(scu_addr 90) 28
+
+gpio_export Q6
+
+# System SPI
+# Strap 12 must be 0 and Strape 13 must be 1
+devmem_clear_bit $(scu_addr 70) 12
+devmem_set_bit $(scu_addr 70) 13
+
+# DEBUG_PORT_UART_SEL_BMC_N: GPIOR1(137)
+# To use GPIOR1, SCU88[25] must be 0
+devmem_clear_bit $(scu_addr 88) 25
+
+gpio_export R1
+
+# DEBUG UART Controls
+# 4 signals: DEBUG_UART_SEL_0/1/2 and DEBUG_UART_RX_SEL_N
+# GPIOE0 (32), GPIOE1 (33), GPIOE2 (34) and GPIOE3 (35)
+
+# To enable GPIOE0, SCU80[16], SCU8C[12], and SCU70[22] must be 0
+devmem_clear_bit $(scu_addr 80) 16
+devmem_clear_bit $(scu_addr 8C) 12
+devmem_clear_bit $(scu_addr 70) 22
+
+gpio_set E0 0
+
+# To enable GPIOE1, SCU80[17], SCU8C[12], and SCU70[22] must be 0
+devmem_clear_bit $(scu_addr 80) 17
+
+gpio_set E1 0
+
+# To enable GPIOE2, SCU80[18], SCU8C[13], and SCU70[22] must be 0
+devmem_clear_bit $(scu_addr 80) 18
+devmem_clear_bit $(scu_addr 8C) 13
+
+gpio_set E2 1
+
+# To enable GPIOE3, SCU80[19], SCU8C[13], and SCU70[22] must be 0
+devmem_clear_bit $(scu_addr 80) 19
+
+gpio_set E3 1
+
+# Enable GPIOY3: BoardId(Yosemite or Test system)
+devmem_clear_bit $(scu_addr a4) 11
+
+# Power LED for Slot#2:
+# To use GPIOM0 (96), SCU90[4], SCU90[5], and SCU84[24] must be 0
+devmem_clear_bit $(scu_addr 90) 4
+devmem_clear_bit $(scu_addr 90) 5
+devmem_clear_bit $(scu_addr 84) 24
+
+gpio_set M0 1
+
+# Power LED for Slot#1:
+# To use GPIOM1 (97), SCU90[4], SCU90[5], and SCU84[25] must be 0
+devmem_clear_bit $(scu_addr 84) 25
+
+gpio_set M1 1
+
+# Power LED for Slot#4:
+# To use GPIOM2 (98), SCU90[4], SCU90[5], and SCU84[26] must be 0
+devmem_clear_bit $(scu_addr 84) 26
+
+gpio_set M2 1
+
+# Power LED for Slot#3:
+# To use GPIOM3 (99), SCU90[4], SCU90[5], and SCU84[27] must be 0
+devmem_clear_bit $(scu_addr 84) 27
+
+gpio_set M3 1
+
+# Front Panel Hand Switch GPIO setup
+# HAND_SW_ID1: GPIOR2(138)
+# To use GPIOR2, SCU88[26] must be 0
+devmem_clear_bit $(scu_addr 88) 26
+
+gpio_export R2
+
+# HAND_SW_ID2: GPIOR3(139)
+# To use GPIOR3, SCU88[27] must be 0
+devmem_clear_bit $(scu_addr 88) 27
+
+gpio_export R3
+
+# HAND_SW_ID4: GPIOR4(140)
+# To use GPIOR4, SCU88[28] must be 0
+devmem_clear_bit $(scu_addr 88) 28
+
+gpio_export R4
+
+
+# HAND_SW_ID8: GPIOR5(141)
+# To use GPIOR5, SCU88[29] must be 0
+devmem_clear_bit $(scu_addr 88) 29
+
+gpio_export R5
+
+# LED POST CODES: 8 GPIO signals
+
+# LED_POSTCODE_0: GPIOG0 (48)
+# To use GPIOG0, SCU84[0] must be 0
+devmem_clear_bit $(scu_addr 84) 0
+
+gpio_set G0 0
+
+# LED_POSTCODE_1: GPIOG1 (49)
+# To use GPIOG1, SCU84[1] must be 0
+devmem_clear_bit $(scu_addr 84) 1
+
+gpio_set G1 0
+
+# LED_POSTCODE_2: GPIOG2 (50)
+# To use GPIOG2, SCU84[2] must be 0
+devmem_clear_bit $(scu_addr 84) 2
+
+gpio_set G2 0
+
+# LED_POSTCODE_3: GPIOG3 (51)
+# To use GPIOG3, SCU84[3] must be 0
+devmem_clear_bit $(scu_addr 84) 3
+
+gpio_set G3 0
+
+# LED_POSTCODE_4: GPIOP4 (124)
+gpio_set P4 0
+
+# LED_POSTCODE_5: GPIOP5 (125)
+gpio_set P5 0
+
+# LED_POSTCODE_6: GPIOP6 (126)
+# To use GPIOP6, SCU88[22] must be 0
+devmem_clear_bit $(scu_addr 88) 22
+
+gpio_set P6 0
+
+# LED_POSTCODE_7: GPIOP7 (127)
+# To use GPIOP7, SCU88[23] must be 0
+devmem_clear_bit $(scu_addr 88) 23
+
+gpio_set P7 0
+
+# BMC_READY_N: GPIOG6 (54)
+# To use GPIOG6, SCU84[6] must be 0
+devmem_clear_bit $(scu_addr 84) 6
+
+gpio_set G6 0
+
+# BMC_RST_BTN_IN_N: GPIOS0 (144)
+# To use GPIOS0, SCU8C[0]
+devmem_clear_bit $(scu_addr 8c) 0
+
+gpio_export S0
+
+# RESET for all Slots
+# RST_SLOT1_SYS_RESET_N: GPIOH1 (57)
+# To use GPIOH1, SCU90[6], SCU90[7] must be 0
+devmem_clear_bit $(scu_addr 90) 6
+devmem_clear_bit $(scu_addr 90) 7
+
+gpio_set H1 1
+
+# RST_SLOT2_SYS_RESET_N: GPIOH0 (56)
+# To use GPIOH0, SCU90[6], SCU90[7] must be 0
+gpio_set H0 1
+
+# RST_SLOT3_SYS_RESET_N: GPIOH3 (59)
+# To use GPIOH3, SCU90[6], SCU90[7] must be 0
+gpio_set H3 1
+
+# RST_SLOT4_SYS_RESET_N: GPIOH2 (58)
+# To use GPIOH2, SCU90[6], SCU90[7] must be 0
+gpio_set H2 1
OpenPOWER on IntegriCloud