/* Copyright 2018 James Laird-Wah * Copyright 2019 Clueboard * * 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 . */ #include #include #include "quantum.h" #include "ledmatrix.h" /* Each driver needs to define a struct: * * const led_matrix_driver_t led_matrix_driver; * * All members must be provided. Keyboard custom drivers must define this * in their own files. */ #if defined(IS31FL3731) || defined(IS31FL3733) # if defined(IS31FL3731) # include "is31fl3731-simple.h" # endif # include "i2c_master.h" static void init(void) { i2c_init(); # ifdef IS31FL3731 # ifdef LED_DRIVER_ADDR_1 IS31FL3731_init(LED_DRIVER_ADDR_1); # endif # ifdef LED_DRIVER_ADDR_2 IS31FL3731_init(LED_DRIVER_ADDR_2); # endif # ifdef LED_DRIVER_ADDR_3 IS31FL3731_init(LED_DRIVER_ADDR_3); # endif # ifdef LED_DRIVER_ADDR_4 IS31FL3731_init(LED_DRIVER_ADDR_4); # endif # else # ifdef LED_DRIVER_ADDR_1 IS31FL3733_init(LED_DRIVER_ADDR_1, 0); # endif # ifdef LED_DRIVER_ADDR_2 IS31FL3733_init(LED_DRIVER_ADDR_2, 0); # endif # ifdef LED_DRIVER_ADDR_3 IS31FL3733_init(LED_DRIVER_ADDR_3, 0); # endif # ifdef LED_DRIVER_ADDR_4 IS31FL3733_init(LED_DRIVER_ADDR_4, 0); # endif # endif for (int index = 0; index < LED_DRIVER_LED_COUNT; index++) { # ifdef IS31FL3731 IS31FL3731_set_led_control_register(index, true); # else IS31FL3733_set_led_control_register(index, true); # endif } // This actually updates the LED drivers # ifdef IS31FL3731 # ifdef LED_DRIVER_ADDR_1 IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_1, 0); # endif # ifdef LED_DRIVER_ADDR_2 IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_2, 1); # endif # ifdef LED_DRIVER_ADDR_3 IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_3, 2); # endif # ifdef LED_DRIVER_ADDR_4 IS31FL3731_update_led_control_registers(LED_DRIVER_ADDR_4, 3); # endif # else # ifdef LED_DRIVER_ADDR_1 IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_1, 0); # endif # ifdef LED_DRIVER_ADDR_2 IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_2, 1); # endif # ifdef LED_DRIVER_ADDR_3 IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_3, 2); # endif # ifdef LED_DRIVER_ADDR_4 IS31FL3733_update_led_control_registers(LED_DRIVER_ADDR_4, 3); # endif # endif } static void flush(void) { # ifdef IS31FL3731 # ifdef LED_DRIVER_ADDR_1 IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_1, 0); # endif # ifdef LED_DRIVER_ADDR_2 IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_2, 1); # endif # ifdef LED_DRIVER_ADDR_3 IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_3, 2); # endif # ifdef LED_DRIVER_ADDR_4 IS31FL3731_update_pwm_buffers(LED_DRIVER_ADDR_4, 3); # endif # else # ifdef LED_DRIVER_ADDR_1 IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_1, 0); # endif # ifdef LED_DRIVER_ADDR_2 IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_2, 1); # endif # ifdef LED_DRIVER_ADDR_3 IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_3, 2); # endif # ifdef LED_DRIVER_ADDR_4 IS31FL3733_update_pwm_buffers(LED_DRIVER_ADDR_4, 3); # endif # endif } const led_matrix_driver_t led_matrix_driver = { .init = init, .flush = flush, # ifdef IS31FL3731 .set_value = IS31FL3731_set_value, .set_value_all = IS31FL3731_set_value_all, # else .set_value = IS31FL3733_set_value, .set_value_all = IS31FL3733_set_value_all, # endif }; #endif /a> 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
/*
    ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
*/

#ifndef MCUCONF_H
#define MCUCONF_H

/*
 * AVR drivers configuration.
 * The following settings override the default settings present in
 * the various device driver implementation headers.
 * Note that the settings for each driver only have effect if the driver
 * is enabled in halconf.h.
 */

/*
 * ADC driver system settings.
 */
#define AVR_ADC_USE_ADC1                   FALSE

/*
 * CAN driver system settings.
 */

/*
 * MAC driver system settings.
 */

/*
 * PWM driver system settings.
 */
#define AVR_PWM_USE_TIM1                   FALSE
#define AVR_PWM_USE_TIM2                   FALSE
#define AVR_PWM_USE_TIM3                   FALSE
#define AVR_PWM_USE_TIM4                   FALSE
#define AVR_PWM_USE_TIM5                   FALSE

/*
 * ICU driver system settings.
 */
#define AVR_ICU_USE_TIM1                   FALSE
#define AVR_ICU_USE_TIM3                   FALSE
#define AVR_ICU_USE_TIM4                   FALSE
#define AVR_ICU_USE_TIM5                   FALSE

/*
 * GPT driver system settings.
 */
#define AVR_GPT_USE_TIM1                   FALSE
#define AVR_GPT_USE_TIM2                   FALSE
#define AVR_GPT_USE_TIM3                   FALSE
#define AVR_GPT_USE_TIM4                   FALSE
#define AVR_GPT_USE_TIM5                   FALSE

/*
 * SERIAL driver system settings.
 */
#define AVR_SERIAL_USE_USART0              TRUE
#define AVR_SERIAL_USE_USART1              FALSE

/*
 * I2C driver system settings.
 */
#define AVR_I2C_USE_I2C1                   FALSE

/*
 * SPI driver system settings.
 */
#define AVR_SPI_USE_SPI1                   FALSE
#define AVR_SPI_USE_16BIT_POLLED_EXCHANGE  FALSE

#endif /* MCUCONF_H */