blob: 3800f956f2327be4b423afde1fa55c1bd2e4b9af [file] [log] [blame]
/*
* Google LWIS Top Level Device Driver
*
* Copyright (c) 2018 Google, LLC
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#ifndef LWIS_DEVICE_TOP_H_
#define LWIS_DEVICE_TOP_H_
#include "lwis_device.h"
#define SCRATCH_MEMORY_SIZE 16
/*
* struct lwis_top_device
* "Derived" lwis_device struct, with added top device related elements.
*/
struct lwis_top_device {
struct lwis_device base_dev;
/* For testing purposes, scratch memory is used as register space in
* top device.
*/
uint8_t scratch_mem[SCRATCH_MEMORY_SIZE];
/* Hash table of event subscribers keyed by trigger event id */
DECLARE_HASHTABLE(event_subscribers, EVENT_HASH_BITS);
/* Subscription tasklet */
struct tasklet_struct subscribe_tasklet;
struct list_head emitted_event_list_tasklet;
};
int lwis_top_device_deinit(void);
#endif /* LWIS_DEVICE_TOP_H_ */