1/* 2 * A dummy STM device for stm/stm_source class testing. 3 * Copyright (c) 2014, Intel Corporation. 4 * 5 * This program is free software; you can redistribute it and/or modify it 6 * under the terms and conditions of the GNU General Public License, 7 * version 2, as published by the Free Software Foundation. 8 * 9 * This program is distributed in the hope it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12 * more details. 13 * 14 * STM class implements generic infrastructure for System Trace Module devices 15 * as defined in MIPI STPv2 specification. 16 */ 17 18#undef DEBUG 19#include <linux/kernel.h> 20#include <linux/module.h> 21#include <linux/slab.h> 22#include <linux/stm.h> 23 24static ssize_t 25dummy_stm_packet(struct stm_data *stm_data, unsigned int master, 26 unsigned int channel, unsigned int packet, unsigned int flags, 27 unsigned int size, const unsigned char *payload) 28{ 29#ifdef DEBUG 30 u64 pl = 0; 31 32 if (payload) 33 pl = *(u64 *)payload; 34 35 if (size < 8) 36 pl &= (1ull << (size * 8)) - 1; 37 trace_printk("[%u:%u] [pkt: %x/%x] (%llx)\n", master, channel, 38 packet, size, pl); 39#endif 40 return size; 41} 42 43static struct stm_data dummy_stm = { 44 .name = "dummy_stm", 45 .sw_start = 0x0000, 46 .sw_end = 0xffff, 47 .sw_nchannels = 0xffff, 48 .packet = dummy_stm_packet, 49}; 50 51static int dummy_stm_init(void) 52{ 53 return stm_register_device(NULL, &dummy_stm, THIS_MODULE); 54} 55 56static void dummy_stm_exit(void) 57{ 58 stm_unregister_device(&dummy_stm); 59} 60 61module_init(dummy_stm_init); 62module_exit(dummy_stm_exit); 63 64MODULE_LICENSE("GPL v2"); 65MODULE_DESCRIPTION("dummy_stm device"); 66MODULE_AUTHOR("Alexander Shishkin <alexander.shishkin@linux.intel.com>"); 67