From 2dc07391bd61e266ac2410ba7c0413c19eea5db5 Mon Sep 17 00:00:00 2001
From: Danny <nooges@users.noreply.github.com>
Date: Mon, 30 Aug 2021 14:49:46 -0400
Subject: [PATCH] [Keyboard] Add Iris Rev. 5 (#13934)

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
---
 keyboards/keebio/iris/iris.h        | 12 +++--
 keyboards/keebio/iris/rev5/config.h | 83 +++++++++++++++++++++++++++++
 keyboards/keebio/iris/rev5/rev5.c   | 14 +++++
 keyboards/keebio/iris/rev5/rev5.h   | 42 +++++++++++++++
 keyboards/keebio/iris/rev5/rules.mk | 24 +++++++++
 5 files changed, 170 insertions(+), 5 deletions(-)
 create mode 100644 keyboards/keebio/iris/rev5/config.h
 create mode 100644 keyboards/keebio/iris/rev5/rev5.c
 create mode 100644 keyboards/keebio/iris/rev5/rev5.h
 create mode 100644 keyboards/keebio/iris/rev5/rules.mk

diff --git a/keyboards/keebio/iris/iris.h b/keyboards/keebio/iris/iris.h
index a02158e36f..2f3b08d223 100644
--- a/keyboards/keebio/iris/iris.h
+++ b/keyboards/keebio/iris/iris.h
@@ -1,15 +1,17 @@
 #pragma once
 
-#ifdef KEYBOARD_keebio_iris_rev1
+#if defined(KEYBOARD_keebio_iris_rev1)
     #include "rev1.h"
-#elif KEYBOARD_keebio_iris_rev1_led
+#elif defined(KEYBOARD_keebio_iris_rev1_led)
     #include "rev1_led.h"
-#elif KEYBOARD_keebio_iris_rev2
+#elif defined(KEYBOARD_keebio_iris_rev2)
     #include "rev2.h"
-#elif KEYBOARD_keebio_iris_rev3
+#elif defined(KEYBOARD_keebio_iris_rev3)
     #include "rev3.h"
-#elif KEYBOARD_keebio_iris_rev4
+#elif defined(KEYBOARD_keebio_iris_rev4)
     #include "rev4.h"
+#elif defined(KEYBOARD_keebio_iris_rev5)
+    #include "rev5.h"
 #endif
 
 #include "quantum.h"
diff --git a/keyboards/keebio/iris/rev5/config.h b/keyboards/keebio/iris/rev5/config.h
new file mode 100644
index 0000000000..15eed8349f
--- /dev/null
+++ b/keyboards/keebio/iris/rev5/config.h
@@ -0,0 +1,83 @@
+/*
+Copyright 2019 Danny Nguyen <danny@keeb.io>
+
+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 of the License, 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.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0xCB10
+#define PRODUCT_ID      0x5256
+#define DEVICE_VER      0x0500
+#define MANUFACTURER    Keebio
+#define PRODUCT         Iris Rev. 5
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 6
+
+// wiring of each half
+#define MATRIX_ROW_PINS { B1, F0, F5, F6, F7 }
+#define MATRIX_COL_PINS { F1, F4, D3, D2, B7, D4 }
+#define MATRIX_ROW_PINS_RIGHT { B1, B2, D2, F1, F4 }
+#define MATRIX_COL_PINS_RIGHT { D4, D7, D3, B7, F0, B3 }
+#define SPLIT_HAND_PIN D5
+#define QMK_ESC_OUTPUT F1
+#define QMK_ESC_INPUT B1
+#define QMK_LED B0
+#define QMK_SPEAKER C6
+
+#define ENCODERS_PAD_A { B2 }
+#define ENCODERS_PAD_B { B3 }
+#define ENCODERS_PAD_A_RIGHT { F7 }
+#define ENCODERS_PAD_B_RIGHT { F6 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+// #define BACKLIGHT_LEVELS 3
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* serial.c configuration for split keyboard */
+#define SOFT_SERIAL_PIN D0
+
+
+#define BACKLIGHT_PIN B5
+#define BACKLIGHT_LEVELS 5
+#define BACKLIGHT_DEFAULT_LEVEL 3
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D6
+#define RGBLED_NUM 12    // Number of LEDs
+#define RGBLED_SPLIT { 6, 6 }
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_DEFAULT_VAL 128
+#define RGBLIGHT_DEFAULT_MODE (RGBLIGHT_MODE_RAINBOW_SWIRL + 2)
diff --git a/keyboards/keebio/iris/rev5/rev5.c b/keyboards/keebio/iris/rev5/rev5.c
new file mode 100644
index 0000000000..a4191719c0
--- /dev/null
+++ b/keyboards/keebio/iris/rev5/rev5.c
@@ -0,0 +1,14 @@
+/*
+Copyright 2021 Danny Nguyen <danny@keeb.io>
+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 of the License, 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.  If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "rev5.h"
diff --git a/keyboards/keebio/iris/rev5/rev5.h b/keyboards/keebio/iris/rev5/rev5.h
new file mode 100644
index 0000000000..d13e24410e
--- /dev/null
+++ b/keyboards/keebio/iris/rev5/rev5.h
@@ -0,0 +1,42 @@
+/*
+Copyright 2021 Danny Nguyen <danny@keeb.io>
+
+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 of the License, 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.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "iris.h"
+#include "quantum.h"
+
+
+#define LAYOUT( \
+    LA1, LA2, LA3, LA4, LA5, LA6,           RA6, RA5, RA4, RA3, RA2, RA1, \
+    LB1, LB2, LB3, LB4, LB5, LB6,           RB6, RB5, RB4, RB3, RB2, RB1, \
+    LC1, LC2, LC3, LC4, LC5, LC6,           RC6, RC5, RC4, RC3, RC2, RC1, \
+    LD1, LD2, LD3, LD4, LD5, LD6, LE6, RE6, RD6, RD5, RD4, RD3, RD2, RD1, \
+                        LE3, LE4, LE5, RE5, RE4, RE3 \
+    ) \
+    { \
+        { LA1, LA2, LA3, LA4, LA5, LA6 }, \
+        { LB1, LB2, LB3, LB4, LB5, LB6 }, \
+        { LC1, LC2, LC3, LC4, LC5, LC6 }, \
+        { LD1, LD2, LD3, LD4, LD5, LD6 }, \
+        { KC_NO, KC_NO, LE3, LE4, LE5, LE6 }, \
+        { RA1, RA2, RA3, RA4, RA5, RA6 }, \
+        { RB1, RB2, RB3, RB4, RB5, RB6 }, \
+        { RC1, RC2, RC3, RC4, RC5, RC6 }, \
+        { RD1, RD2, RD3, RD4, RD5, RD6 }, \
+        { KC_NO, KC_NO, RE3, RE4, RE5, RE6 } \
+    }
diff --git a/keyboards/keebio/iris/rev5/rules.mk b/keyboards/keebio/iris/rev5/rules.mk
new file mode 100644
index 0000000000..b77e9ce72b
--- /dev/null
+++ b/keyboards/keebio/iris/rev5/rules.mk
@@ -0,0 +1,24 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = qmk-dfu
+
+# Build Options
+#   change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no        # Mouse keys
+EXTRAKEY_ENABLE = yes       # Audio control and System control
+CONSOLE_ENABLE = yes        # Console for debug
+COMMAND_ENABLE = no         # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no            # USB Nkey Rollover
+BACKLIGHT_ENABLE = yes      # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
+BLUETOOTH_ENABLE = no       # Enable Bluetooth
+AUDIO_ENABLE = no           # Audio output
+SPLIT_KEYBOARD = yes
+ENCODER_ENABLE = yes