time.c (7921fc4a25800f4210bca96c05dea67a6b736d32) | time.c (373b32abf9b33616ad94283461bb2ab49e8371d5) |
---|---|
1/* 2 * linux/arch/arm/kernel/time.c 3 * 4 * Copyright (C) 1991, 1992, 1995 Linus Torvalds 5 * Modifications for ARM (C) 1994-2001 Russell King 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License version 2 as --- 65 unchanged lines hidden (view full) --- 74 75#ifndef CONFIG_GENERIC_TIME 76static unsigned long dummy_gettimeoffset(void) 77{ 78 return 0; 79} 80#endif 81 | 1/* 2 * linux/arch/arm/kernel/time.c 3 * 4 * Copyright (C) 1991, 1992, 1995 Linus Torvalds 5 * Modifications for ARM (C) 1994-2001 Russell King 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License version 2 as --- 65 unchanged lines hidden (view full) --- 74 75#ifndef CONFIG_GENERIC_TIME 76static unsigned long dummy_gettimeoffset(void) 77{ 78 return 0; 79} 80#endif 81 |
82#ifdef CONFIG_LEDS 83 84static void dummy_leds_event(led_event_t evt) 85{ 86} 87 88void (*leds_event)(led_event_t) = dummy_leds_event; 89 90struct leds_evt_name { 91 const char name[8]; 92 int on; 93 int off; 94}; 95 96static const struct leds_evt_name evt_names[] = { 97 { "amber", led_amber_on, led_amber_off }, 98 { "blue", led_blue_on, led_blue_off }, 99 { "green", led_green_on, led_green_off }, 100 { "red", led_red_on, led_red_off }, 101}; 102 103static ssize_t leds_store(struct sys_device *dev, 104 struct sysdev_attribute *attr, 105 const char *buf, size_t size) 106{ 107 int ret = -EINVAL, len = strcspn(buf, " "); 108 109 if (len > 0 && buf[len] == '\0') 110 len--; 111 112 if (strncmp(buf, "claim", len) == 0) { 113 leds_event(led_claim); 114 ret = size; 115 } else if (strncmp(buf, "release", len) == 0) { 116 leds_event(led_release); 117 ret = size; 118 } else { 119 int i; 120 121 for (i = 0; i < ARRAY_SIZE(evt_names); i++) { 122 if (strlen(evt_names[i].name) != len || 123 strncmp(buf, evt_names[i].name, len) != 0) 124 continue; 125 if (strncmp(buf+len, " on", 3) == 0) { 126 leds_event(evt_names[i].on); 127 ret = size; 128 } else if (strncmp(buf+len, " off", 4) == 0) { 129 leds_event(evt_names[i].off); 130 ret = size; 131 } 132 break; 133 } 134 } 135 return ret; 136} 137 138static SYSDEV_ATTR(event, 0200, NULL, leds_store); 139 140static int leds_suspend(struct sys_device *dev, pm_message_t state) 141{ 142 leds_event(led_stop); 143 return 0; 144} 145 146static int leds_resume(struct sys_device *dev) 147{ 148 leds_event(led_start); 149 return 0; 150} 151 152static int leds_shutdown(struct sys_device *dev) 153{ 154 leds_event(led_halted); 155 return 0; 156} 157 158static struct sysdev_class leds_sysclass = { 159 .name = "leds", 160 .shutdown = leds_shutdown, 161 .suspend = leds_suspend, 162 .resume = leds_resume, 163}; 164 165static struct sys_device leds_device = { 166 .id = 0, 167 .cls = &leds_sysclass, 168}; 169 170static int __init leds_init(void) 171{ 172 int ret; 173 ret = sysdev_class_register(&leds_sysclass); 174 if (ret == 0) 175 ret = sysdev_register(&leds_device); 176 if (ret == 0) 177 ret = sysdev_create_file(&leds_device, &attr_event); 178 return ret; 179} 180 181device_initcall(leds_init); 182 183EXPORT_SYMBOL(leds_event); 184#endif 185 | |
186#ifdef CONFIG_LEDS_TIMER 187static inline void do_leds(void) 188{ 189 static unsigned int count = HZ/2; 190 191 if (--count == 0) { 192 count = HZ/2; 193 leds_event(led_timer); --- 134 unchanged lines hidden --- | 82#ifdef CONFIG_LEDS_TIMER 83static inline void do_leds(void) 84{ 85 static unsigned int count = HZ/2; 86 87 if (--count == 0) { 88 count = HZ/2; 89 leds_event(led_timer); --- 134 unchanged lines hidden --- |