# # Copyright (C) 2012-2016 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # define KernelPackage/drm-vc4 SUBMENU:=$(VIDEO_MENU) TITLE:=Broadcom VC4 Graphics DEPENDS:= \ @TARGET_brcm2708 +kmod-drm \ +kmod-sound-core \ +kmod-sound-soc-core KCONFIG:= \ CONFIG_DRM_VC4 \ CONFIG_DRM_VC4_HDMI_CEC=n FILES:= \ $(LINUX_DIR)/drivers/gpu/drm/vc4/vc4.ko \ $(LINUX_DIR)/drivers/gpu/drm/drm_kms_helper.ko AUTOLOAD:=$(call AutoProbe,vc4) endef define KernelPackage/drm-vc4/description Direct Rendering Manager (DRM) support for Broadcom VideoCore IV GPU used in BCM2835, BCM2836 and BCM2837 SoCs (e.g. Raspberry Pi). endef $(eval $(call KernelPackage,drm-vc4)) define KernelPackage/hwmon-rpi-poe-fan SUBMENU:=$(HWMON_MENU) TITLE:=Raspberry Pi PoE HAT fan DEPENDS:=@TARGET_brcm2708 +kmod-hwmon-core KCONFIG:=CONFIG_SENSORS_RPI_POE_FAN FILES:=$(LINUX_DIR)/drivers/hwmon/rpi-poe-fan.ko AUTOLOAD:=$(call AutoProbe,rpi-poe-fan) endef define KernelPackage/hwmon-rpi-poe-fan/description Raspberry Pi PoE HAT fan driver endef $(eval $(call KernelPackage,hwmon-rpi-poe-fan)) define KernelPackage/sound-arm-bcm2835 TITLE:=BCM2835 ALSA driver KCONFIG:= \ CONFIG_SND_ARM=y \ CONFIG_SND_BCM2835 \ CONFIG_SND_ARMAACI=n FILES:= \ $(LINUX_DIR)/drivers/staging/vc04_services/bcm2835-audio/snd-bcm2835.ko AUTOLOAD:=$(call AutoLoad,68,snd-bcm2835) DEPENDS:=@TARGET_brcm2708 $(call AddDepends/sound) endef define KernelPackage/sound-arm-bcm2835/description This package contains the BCM2835 ALSA pcm card driver endef $(eval $(call KernelPackage,sound-arm-bcm2835)) define KernelPackage/sound-soc-bcm2835-i2s TITLE:=SoC Audio support for the Broadcom 2835 I2S module KCONFIG:= \ CONFIG_SND_BCM2835_SOC_I2S \ CONFIG_SND_SOC_DMAENGINE_PCM=y \ CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y FILES:= \ $(LINUX_DIR)/sound/soc/bcm/snd-soc-bcm2835-i2s.ko AUTOLOAD:=$(call AutoLoad,68,snd-soc-bcm2835-i2s) DEPENDS:=@TARGET_brcm2708 +kmod-sound-soc-core $(call AddDepends/sound) endef define KernelPackage/sound-soc-bcm2835-i2s/description This package contains support for codecs attached to the Broadcom 2835 I2S interface endef $(eval $(call KernelPackage,sound-soc-bcm2835-i2s)) define KernelPackage/sound-soc-3dlab-nano-player TITLE:=Support for 3Dlab Nano Player KCONFIG:= CONFIG_SND_BCM2708_SOC_3DLAB_NANO_PLAYER FILES:=$(LINUX_DIR)/sound/soc/bcm/snd-soc-3dlab-nano-player.ko AUTOLOAD:=$(call AutoLoad,68,snd-soc-3dlab-nano-player) DEPENDS:= \ kmod-sound-soc-bcm2835-i2s \ +kmod-regmap-i2c $(call AddDepends/sound) endef define KernelPackage/sound-soc-3dlab-nano-player/description This package contains support for 3Dlab Nano Player endef $(eval $(call KernelPackage,sound-soc-3dlab-nano-player)) define KernelPackage/sound-soc-adau1977-adc TITLE:=Support for ADAU1977 ADC KCONFIG:= \ CONFIG_SND_BCM2708_SOC_ADAU1977_ADC \ CONFIG_SND_SOC_ADAU1977 \ CONFIG_SND_SOC_ADAU1977_I2C FILES:= \ $(LINUX_DIR)/sound/soc/bcm/snd-soc-adau1977-adc.ko \ $(LINUX_DIR)/sound/soc/codecs/snd-soc-adau1977.ko \ $(LINUX_DIR)/sound/soc/codecs/snd-soc-adau1977-i2c.ko AUTOLOAD:=$(call AutoLoad,68,snd-soc-adau1977 snd-soc-adau1977-i2c \ snd-soc-adau1977-adc) DEPENDS:= \ kmod-sound-soc-bcm2835-i2s \ +kmod-i2c-bcm2708 \ +kmod-regmap-i2c $(call AddDepends/sound) endef define KernelPackage/sound-soc-adau1977-adc/description This package contains support for ADAU1977 ADC endef $(eval $(call KernelPackage,sound-soc-adau1977-adc)) define KernelPackage/sound-soc-allo-boss-dac TITLE:=Support for Allo Boss DAC KCONFIG:= \ CONFIG_SND_BCM2708_SOC_ALLO_BOSS_DAC \ CONFIG_SND_SOC_PCM512x \ CONFIG_SND_SOC_PCM512x_I2C FILES:= \ $(LINUX_DIR)/sound/soc/bcm/snd-soc-allo-boss-dac.ko \ $(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x.ko \ $(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x-i2c.ko AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm512x-i2c snd-soc-pcm512x \ snd-soc-allo-boss-dac) DEPENDS:= \ +kmod-i2c-bcm2708 \ kmod-sound-soc-bcm2835-i2s \ +kmod-regmap-i2c $(call AddDepends/sound) endef define KernelPackage/sound-soc-allo-boss-dac/description This package contains support for Allo Boss DAC endef $(eval $(call KernelPackage,sound-soc-allo-boss-dac)) define KernelPackage/sound-soc-allo-digione TITLE:=Support for Allo Piano DigiOne KCONFIG:= \ CONFIG_SND_BCM2708_SOC_ALLO_DIGIONE \ CONFIG_SND_SOC_PCM512x \ CONFIG_SND_SOC_PCM512x_I2C FILES:= \ $(LINUX_DIR)/sound/soc/bcm/snd-soc-allo-digione.ko \ $(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x.ko \ $(LINUX_DIR)/sound/soc/codecs/snd-soc-pcm512x-i2c.ko AUTOLOAD:=$(call AutoLoad,68,snd-soc-pcm512x-i2c snd-soc-pcm512x \ snd-soc-allo-digione) DEPENDS:= \ +kmod-i2c-bcm2708 \ kmod-sound-soc-bcm2835-i2s \ +kmod-regmap-i2c $(call AddDepends/sound) endef define KernelPackage/sound-soc-allo-digione/description This package contains support for Allo DigiOne endef $(eval $(call KernelPackage,sound-soc-allo-digione)) define KernelPacka
/* Copyright 2019 gtips
 *
 * 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 QMK_KEYBOARD_H

enum layer_names {
    _BASE,
    _LOWER,
    _RAISE,
    _ADJUST
};

#define LOWER  MO(_LOWER)
#define RAISE  MO(_RAISE)

#define CT_TB LCTL_T(KC_TAB)
#define CT_Q  LCTL_T(KC_Q)
#define SF_Z  LSFT_T(KC_Z)
#define SF_SS RSFT_T(KC_SLSH)
#define AL_X  LALT_T(KC_X)

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  [_BASE] = LAYOUT_reviung34(
    CT_Q,     KC_W,     KC_E,     KC_R,     KC_T,               KC_Y,     KC_U,     KC_I,     KC_O,     KC_P,
    KC_A,     KC_S,     KC_D,     KC_F,     KC_G,               KC_H,     KC_J,     KC_K,     KC_L,     KC_SCLN,
    SF_Z,     AL_X,     KC_C,     KC_V,     KC_B,               KC_N,     KC_M,     KC_COMM,  KC_DOT,   SF_SS,
                        CT_TB,    LOWER,    RAISE,              KC_SPC
  ),
  
  [_LOWER] = LAYOUT_reviung34(
    KC_EXLM,  KC_AT,    KC_HASH,  KC_DLR,   KC_PERC,            KC_CIRC,  KC_AMPR,  KC_ASTR,  KC_LPRN,  KC_RPRN,
    KC_UNDS,  KC_PLUS,  KC_LCBR,  KC_RCBR,  KC_PIPE,            KC_LEFT,  KC_DOWN,  KC_UP,    KC_RGHT,  KC_QUOT,
    KC_LSFT,  KC_ESC,   KC_LGUI,  KC_LALT,  KC_CAPS,            KC_HOME,  KC_END,   KC_PGUP,  KC_PGDN,  KC_DEL,
                        _______,  _______,  _______,            KC_BSPC
  ),
	
	[_RAISE] = LAYOUT_reviung34(
    KC_1,     KC_2,     KC_3,     KC_4,     KC_5,               KC_6,     KC_7,     KC_8,     KC_9,     KC_0,
    KC_MINS,  KC_EQL,   KC_LBRC,  KC_RBRC,  KC_BSLS,            XXXXXXX,  XXXXXXX,  KC_GRV,   KC_TILD,  KC_DQUO,
    KC_LSFT,  KC_ESC,   KC_RGUI,  KC_LALT,  KC_CAPS,            KC_TAB,   KC_RALT,  KC_RCTL,  KC_RSFT,  KC_BSPC,
                        _______,  _______,  _______,            KC_ENT
  ),
  
  [_ADJUST] = LAYOUT_reviung34(
    KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,              XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,
    KC_F7,    KC_F7,    KC_F8,    KC_F9,    KC_F10,             XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,
    KC_F11,   KC_F12,   XXXXXXX,  XXXXXXX,  KC_PSCR,            RESET,    XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,
                        _______,  _______,  _______,            XXXXXXX
  ),
};

layer_state_t layer_state_set_user(layer_state_t state) {
  return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
}
mi_dev.ko AUTOLOAD:=$(call AutoLoad,21,bcm2835_smi_dev) DEPENDS:=@TARGET_brcm2708 +kmod-smi-bcm2835 endef define KernelPackage/smi-bcm2835-dev/description This driver provides a character device interface (ioctl + read/write) to Broadcom's Secondary Memory interface. The low-level functionality is provided by the SMI driver itself. endef $(eval $(call KernelPackage,smi-bcm2835-dev)) define KernelPackage/spi-bcm2835 SUBMENU:=$(SPI_MENU) TITLE:=BCM2835 SPI controller driver KCONFIG:=\ CONFIG_SPI=y \ CONFIG_SPI_BCM2835 \ CONFIG_SPI_MASTER=y FILES:=$(LINUX_DIR)/drivers/spi/spi-bcm2835.ko AUTOLOAD:=$(call AutoLoad,89,spi-bcm2835) DEPENDS:=@TARGET_brcm2708 endef define KernelPackage/spi-bcm2835/description This package contains the Broadcom 2835 SPI master controller driver endef $(eval $(call KernelPackage,spi-bcm2835)) define KernelPackage/spi-bcm2835-aux SUBMENU:=$(SPI_MENU) TITLE:=BCM2835 Aux SPI controller driver KCONFIG:=\ CONFIG_SPI=y \ CONFIG_SPI_BCM2835AUX \ CONFIG_SPI_MASTER=y FILES:=$(LINUX_DIR)/drivers/spi/spi-bcm2835aux.ko AUTOLOAD:=$(call AutoLoad,89,spi-bcm2835aux) DEPENDS:=@TARGET_brcm2708 endef define KernelPackage/spi-bcm2835-aux/description This package contains the Broadcom 2835 Aux SPI master controller driver endef $(eval $(call KernelPackage,spi-bcm2835-aux)) define KernelPackage/hwmon-bcm2835 TITLE:=BCM2835 HWMON driver KCONFIG:=CONFIG_SENSORS_BCM2835 FILES:=$(LINUX_DIR)/drivers/hwmon/bcm2835-hwmon.ko AUTOLOAD:=$(call AutoLoad,60,bcm2835-hwmon) $(call AddDepends/hwmon,@TARGET_brcm2708) endef define KernelPackage/hwmon-bcm2835/description Kernel module for BCM2835 thermal monitor chip endef $(eval $(call KernelPackage,hwmon-bcm2835)) I2C_BCM2708_MODULES:=\ CONFIG_I2C_BCM2708:drivers/i2c/busses/i2c-bcm2708 define KernelPackage/i2c-bcm2708 $(call i2c_defaults,$(I2C_BCM2708_MODULES),59) TITLE:=Broadcom BCM2708 I2C master controller driver KCONFIG+= \ CONFIG_I2C_BCM2708_BAUDRATE=100000 DEPENDS:=@TARGET_brcm2708 +kmod-i2c-core endef define KernelPackage/i2c-bcm2708/description This package contains the Broadcom 2708 I2C master controller driver endef $(eval $(call KernelPackage,i2c-bcm2708)) I2C_BCM2835_MODULES:=\ CONFIG_I2C_BCM2835:drivers/i2c/busses/i2c-bcm2835 define KernelPackage/i2c-bcm2835 $(call i2c_defaults,$(I2C_BCM2835_MODULES),59) TITLE:=Broadcom BCM2835 I2C master controller driver DEPENDS:=@TARGET_brcm2708 +kmod-i2c-core endef define KernelPackage/i2c-bcm2835/description This package contains the Broadcom 2835 I2C master controller driver endef $(eval $(call KernelPackage,i2c-bcm2835)) define KernelPackage/video-bcm2835 TITLE:=Broadcom BCM2835 camera interface driver KCONFIG:= \ CONFIG_VIDEO_BCM2835 \ CONFIG_VIDEO_BCM2835_MMAL FILES:= \ $(LINUX_DIR)/drivers/staging/vc04_services/bcm2835-camera/bcm2835-v4l2.ko AUTOLOAD:=$(call AutoLoad,65,bcm2835-v4l2) $(call AddDepends/video,@TARGET_brcm2708 +kmod-video-videobuf2) endef define KernelPackage/video-bcm2835/description This is a V4L2 driver for the Broadcom 2835 MMAL camera host interface endef $(eval $(call KernelPackage,video-bcm2835))