/* * Copyright (c) 2013-2015 TRUSTONIC LIMITED * All Rights Reserved. * * 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. * * 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. */ #include #include #include static int trustedui_mode = TRUSTEDUI_MODE_OFF; static int trustedui_blank_counter; static DEFINE_SPINLOCK(trustedui_lock); int trustedui_blank_inc(void) { unsigned long flags; int newvalue; spin_lock_irqsave(&trustedui_lock, flags); newvalue = ++trustedui_blank_counter; spin_unlock_irqrestore(&trustedui_lock, flags); return newvalue; } EXPORT_SYMBOL(trustedui_blank_inc); int trustedui_blank_dec(void) { unsigned long flags; int newvalue; spin_lock_irqsave(&trustedui_lock, flags); newvalue = --trustedui_blank_counter; spin_unlock_irqrestore(&trustedui_lock, flags); return newvalue; } EXPORT_SYMBOL(trustedui_blank_dec); int trustedui_blank_get_counter(void) { unsigned long flags; int newvalue; spin_lock_irqsave(&trustedui_lock, flags); newvalue = trustedui_blank_counter; spin_unlock_irqrestore(&trustedui_lock, flags); return newvalue; } EXPORT_SYMBOL(trustedui_blank_get_counter); void trustedui_blank_set_counter(int counter) { unsigned long flags; spin_lock_irqsave(&trustedui_lock, flags); trustedui_blank_counter = counter; spin_unlock_irqrestore(&trustedui_lock, flags); } EXPORT_SYMBOL(trustedui_blank_set_counter); int trustedui_get_current_mode(void) { unsigned long flags; int mode; spin_lock_irqsave(&trustedui_lock, flags); mode = trustedui_mode; spin_unlock_irqrestore(&trustedui_lock, flags); return mode; } EXPORT_SYMBOL(trustedui_get_current_mode); void trustedui_set_mode(int mode) { unsigned long flags; spin_lock_irqsave(&trustedui_lock, flags); trustedui_mode = mode; spin_unlock_irqrestore(&trustedui_lock, flags); } EXPORT_SYMBOL(trustedui_set_mode); int trustedui_set_mask(int mask) { unsigned long flags; int mode; spin_lock_irqsave(&trustedui_lock, flags); mode = trustedui_mode |= mask; spin_unlock_irqrestore(&trustedui_lock, flags); return mode; } EXPORT_SYMBOL(trustedui_set_mask); int trustedui_clear_mask(int mask) { unsigned long flags; int mode; spin_lock_irqsave(&trustedui_lock, flags); mode = trustedui_mode &= ~mask; spin_unlock_irqrestore(&trustedui_lock, flags); return mode; } EXPORT_SYMBOL(trustedui_clear_mask); MODULE_AUTHOR("Trustonic Limited"); MODULE_LICENSE("GPL v2"); MODULE_DESCRIPTION("Kinibi TUI");