mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 01:03:55 -06:00
misc: add pca9552 LED blinker model
Specs are available here : https://www.nxp.com/docs/en/application-note/AN264.pdf This is a simple model supporting the basic registers for led and GPIO mode. The device also supports two blinking rates but not the model yet. Signed-off-by: Cédric Le Goater <clg@kaod.org> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-id: 20180530064049.27976-7-clg@kaod.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
3d165f12db
commit
5141d4158c
9 changed files with 426 additions and 2 deletions
32
include/hw/misc/pca9552.h
Normal file
32
include/hw/misc/pca9552.h
Normal file
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* PCA9552 I2C LED blinker
|
||||
*
|
||||
* Copyright (c) 2017-2018, IBM Corporation.
|
||||
*
|
||||
* This work is licensed under the terms of the GNU GPL, version 2 or
|
||||
* later. See the COPYING file in the top-level directory.
|
||||
*/
|
||||
#ifndef PCA9552_H
|
||||
#define PCA9552_H
|
||||
|
||||
#include "hw/i2c/i2c.h"
|
||||
|
||||
#define TYPE_PCA9552 "pca9552"
|
||||
#define PCA9552(obj) OBJECT_CHECK(PCA9552State, (obj), TYPE_PCA9552)
|
||||
|
||||
#define PCA9552_NR_REGS 10
|
||||
|
||||
typedef struct PCA9552State {
|
||||
/*< private >*/
|
||||
I2CSlave i2c;
|
||||
/*< public >*/
|
||||
|
||||
uint8_t len;
|
||||
uint8_t pointer;
|
||||
|
||||
uint8_t regs[PCA9552_NR_REGS];
|
||||
uint8_t max_reg;
|
||||
uint8_t nr_leds;
|
||||
} PCA9552State;
|
||||
|
||||
#endif
|
32
include/hw/misc/pca9552_regs.h
Normal file
32
include/hw/misc/pca9552_regs.h
Normal file
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* PCA9552 I2C LED blinker registers
|
||||
*
|
||||
* Copyright (c) 2017-2018, IBM Corporation.
|
||||
*
|
||||
* This work is licensed under the terms of the GNU GPL, version 2 or
|
||||
* later. See the COPYING file in the top-level directory.
|
||||
*/
|
||||
#ifndef PCA9552_REGS_H
|
||||
#define PCA9552_REGS_H
|
||||
|
||||
/*
|
||||
* Bits [0:3] are used to address a specific register.
|
||||
*/
|
||||
#define PCA9552_INPUT0 0 /* read only input register 0 */
|
||||
#define PCA9552_INPUT1 1 /* read only input register 1 */
|
||||
#define PCA9552_PSC0 2 /* read/write frequency prescaler 0 */
|
||||
#define PCA9552_PWM0 3 /* read/write PWM register 0 */
|
||||
#define PCA9552_PSC1 4 /* read/write frequency prescaler 1 */
|
||||
#define PCA9552_PWM1 5 /* read/write PWM register 1 */
|
||||
#define PCA9552_LS0 6 /* read/write LED0 to LED3 selector */
|
||||
#define PCA9552_LS1 7 /* read/write LED4 to LED7 selector */
|
||||
#define PCA9552_LS2 8 /* read/write LED8 to LED11 selector */
|
||||
#define PCA9552_LS3 9 /* read/write LED12 to LED15 selector */
|
||||
|
||||
/*
|
||||
* Bit [4] is used to activate the Auto-Increment option of the
|
||||
* register address
|
||||
*/
|
||||
#define PCA9552_AUTOINC (1 << 4)
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue