linux/drivers/parisc/led.c
<<
> < href="../linux+v36.21/drivers/parisc/led.c"> > o/spa> ospa> class="lxr_search"> >="+search" method="post" onsubmit="return do_search(this);"> > > > Search ospa> class="lxr_prefs" < onclick="return ajax_prefs();"> > o/spa> > < < ="ajax+*" method="post" onsubmit="return false;"> oinput typ="vhidden" nam="vajax_lookup" id"vajax_lookup" alue="v"> > < <
<
< < < odiv id"vfile_contents"
< <1o/a>ospa> class="comment">/*o/spa>
 < <2o/a>ospa> class="comment"> * < 
 < <3o/a>ospa> class="comment"> *o/spa>
 < <4o/a>ospa> class="comment"> * < <  (c) Copyright 2000 Red Hat Softwareo/spa>
 < <5o/a>ospa> class="comment"> * < <  (c) Copyright 2000 Helge Deller <hdeller@redhat.com>o/spa>
 < <6o/a>ospa> class="comment"> * < <  (c) Copyright 2001-2009 Helge Deller <deller@gmx.de>o/spa>
 < <7o/a>ospa> class="comment"> * < <  (c) Copyright 2001 Randolph
 < <8o/a>ospa> class="comment"> *o/spa>
 < <9o/a>ospa> class="comment"> * < <  This program is free software; you ca> redistribute it and/or modifyo/spa>
 < ptioa>ospa> class="comment"> * < <  it under the terms of the GNU General Public License as published byo/spa>
 < 11o/a>ospa> class="comment"> * < <  the Free Software Foundation; either verson v2 of the License, oro/spa>
 < 12o/a>ospa> class="comment"> * < <  (at your ption>) any later verson .o/spa>
 < 13o/a>ospa> class="comment"> *o/spa>
 < 14o/a>ospa> class="comment"> * TODO:o/spa>
 < 15o/a>ospa> class="comment"> * < <  - speed-up calculations with inlined assemblero/spa>
 < 16o/a>ospa> class="comment"> * < <  - interface to write to second row of LCD from /proc (if technically possible)o/spa>
 < 17o/a>ospa> class="comment"> *o/spa>
 < 18o/a>ospa> class="comment"> *
 < 19o/a>ospa> class="comment"> * < <  - Audit copy_from_user in led_proc_write.o/spa>
 < 2tioa>ospa> class="comment"> * < <                            Daniele Bellucci <bellucda@tiscali.it>o/spa>
 < 21o/a>ospa> class="comment"> * < <  - Switch from using a tasklet to a work queue, so the led_LCD_drivero/spa>
 < 22o/a>ospa> class="comment"> * < <          ca> sleep.o/spa>
 < 23o/a>ospa> class="comment"> * < <                            David Pye <dmp@davidmpye.dyndns.org>o/spa>
 < 24o/a>ospa> class="comment"> */o/spa>
 < 25o/a> < 26o/a>#include <linux/module.ho/a>> < 27o/a>#include <linux/stddef.ho/a>>       ospa> class="comment">/* for offsetof() */o/spa>
 < 28o/a>#include <linux/init.ho/a>> < 29o/a>#include <linux/typ=s.ho/a>> < 30o/a>#include <linux/ioport.ho/a>> < 31o/a>#include <linux/utsnam=.ho/a>> < 32o/a>#include <linux/capability.ho/a>> < 33o/a>#include <linux/delay.ho/a>> < 34o/a>#include <linux/netdevice.ho/a>> < 35o/a>#include <linux/inetdevice.ho/a>> < 36o/a>#include <linux/in.ho/a>> < 37o/a>#include <linux/interrupt.ho/a>> < 38o/a>#include <linux/kernel_stat.ho/a>> < 39o/a>#include <linux/reboot.ho/a>> < 40o/a>#include <linux/proc_fs.ho/a>> < 41o/a>#include <linux/seq_file.ho/a>> < 42o/a>#include <linux/ctyp=.ho/a>> < 43o/a>#include <linux/blkdev.ho/a>> < 44o/a>#include <linux/workqueue.ho/a>> < 45o/a>#include <linux/rcupdate.ho/a>> < 46o/a>#include <asm/io.ho/a>> < 47o/a>#include <asm/processor.ho/a>> < 48o/a>#include <asm/hardware.ho/a>> < 49o/a>#include <asm/param.ho/a>>          ospa> class="comment">/* HZ */o/spa>
 < 50o/a>#include <asm/led.ho/a>> < 51o/a>#include <asm/pdc.ho/a>> < 52o/a>#include <asm/uaccess.ho/a>> < 53o/a> < 54o/a>ospa> class="comment">/* The control of the LEDs and LCDs on PARISC-machines have to be done o/spa>
 < 55o/a>ospa> class="comment">   completely in software. The necessary calculations are done in a work queueo/spa>
 < 56o/a>ospa> class="comment">   task which is scheduled regularly, and since the calculations may consume a o/spa>
 < 57o/a>ospa> class="comment">   relatively large amount of CPU time, some of the calculations ca> be o/spa>
 < 58o/a>ospa> class="comment">   turned off with the following variables (controlled via procfs) */o/spa>
 < 59o/a> < 60o/a>static intled_typ=o/a>__read_mostlyo/a><= -1; < 61o/a>static unsigned charlastledso/a>;  ospa> class="comment">/* LED state from most recent update */o/spa>
 < 62o/a>static unsigned intled_heartbeato/a>__read_mostlyo/a><= 1; < 63o/a>static unsigned intled_diskioo/a><  __read_mostlyo/a><= 1; < 64o/a>static unsigned intled_lanrxtxo/a><  oa href="+code=__read_mostly" class="sref">__read_mostlyo/a><= 1; < 65o/a>static charlcd_texto/a>[32]          oa href="+code=__read_mostly" class="sref">__read_mostlyo/a>; < 66o/a>static charlcd_text_defaulto/a>[32]  oa href="+code=__read_mostly" class="sref">__read_mostlyo/a>; < 67o/a>static int<lcd_no_led_supporto/a><  __read_mostlyo/a><= 0; ospa> class="comment">/* KittyHawk doesn't support LED on its LCD */o/spa>
 < 68o/a> < 69o/a> < 70o/a>static structworkqueue_structo/a><*oa href="+code=led_wq" class="sref">led_wqo/a>; < 71o/a>static voidled_work_funco/a>(structwork_structo/a><*); < 72o/a>static oa href="+code=DECLARE_DELAYED_WORK" class="sref">DECLARE_DELAYED_WORKo/a>(oa href="+code=led_task" class="sref">led_tasko/a>,led_work_funco/a>); < 73o/a> < 74o/a>#if 0 < 75o/a>#define oa href="+code=DPRINTK" class="sref">DPRINTKo/a>(oa href="+code=x" class="sref">xo/a>)      oa href="+code=printk" class="sref">printko/a>xo/a> < 76o/a>#else < 77o/a>#define oa href="+code=DPRINTK" class="sref">DPRINTKo/a>(oa href="+code=x" class="sref">xo/a>) < 78o/a>#endif < 79o/a> < 80o/a>structlcd_blocko/a><{ < 81o/a><  <<<<commando/a>;  ospa> class="comment">/* stores the command byte      */o/spa>
 < 82o/a><  <<<<ono/a>;       ospa> class="comment">/* alue= for turning LED on     */o/spa>
 < 83o/a><  <<<<offo/a>;      ospa> class="comment">/* alue= for turning LED off    */o/spa>
 < 84o/a>}; < 85o/a> < 86o/a>ospa> class="comment">/* Structure returned by PDC_RETURN_CHASSIS_INFO */o/spa>
 < 87o/a>ospa> class="comment">/* NOTE: we use
 < 88o/a>ospa> class="comment">   lcd_cmd_reg_addr needs to be 64bit aligned on 64bit PA2.0-machines */o/spa>
 < 89o/a>structpdc_chassis_lcd_info_ret_blocko/a><{ < 90o/a><  <<<<modelo/a>:16;         ospa> class="comment">/* DISPLAY_MODEL_XXXX */o/spa>
 < 91o/a><  <<<<lcd_widtho/a>:16;     ospa> class="comment">/* width of the LCD in chars (DISPLAY_MODEL_LCD only) */o/spa>
 < 92o/a><  <<<<lcd_cmd_reg_addro/a>; ospa> class="comment">/* ptr to LCD cmd-register & data ptr for LED */o/spa>
 < 93o/a><  <<<<lcd_data_reg_addro/a>; ospa> class="comment">/* ptr to LCD data-register (LCD only) */o/spa>
 < 94o/a><  <<<<min_cmd_delayo/a>;     ospa> class="comment">/* delay in uS after cmd-write (LCD only) */o/spa>
 < 95o/a><  <<<<reset_cmd1o/a>;       ospa> class="comment">/* command #1 for writing LCD string (LCD only) */o/spa>
 < 96o/a><  <<<<reset_cmd2o/a>;       ospa> class="comment">/* command #2 for writing LCD string (LCD only) */o/spa>
 < 97o/a><  <<<<act_enableo/a>;       ospa> class="comment">/* 0 = no aciovity (LCD only) */o/spa>
 < 98o/a><  <<<<lcd_blocko/a>heartbeato/a>; < 99o/a><  <<<<lcd_blocko/a>disk_ioo/a>; <100o/a><  <<<<lcd_blocko/a>lan_rcvo/a>; <101o/a><  <<<<lcd_blocko/a>lan_txo/a>; <102o/a><  <<<<_pado/a>; <103o/a>}; <104o/a> <105o/a> <106o/a>ospa> class="comment">/* LCD_CMD and LCD_DATA for KittyHawk machines */o/spa>
 <107o/a>#define oa href="+code=KITTYHAWK_LCD_CMD" class="sref">KITTYHAWK_LCD_CMDo/a>< oa href="+code=F_EXTEND" class="sref">F_EXTENDo/a>(0xf0190000UL) ospa> class="comment">/* 64bit-ready */o/spa>
 <108o/a>#define oa href="+code=KITTYHAWK_LCD_DATA" class="sref">KITTYHAWK_LCD_DATAo/a><(oa href="+code=KITTYHAWK_LCD_CMD" class="sref">KITTYHAWK_LCD_CMDo/a>+1) <109o/a> <1ptioa>ospa> class="comment">/* lcd_info is pre-initialized to the alue=s needed to program KittyHawk LCD's o/spa>
 <111o/a>ospa> class="comment"> * HP seems to have used Sharp/Hitachi HD44780 LCDs most of the time. */o/spa>
 <112o/a>static structpdc_chassis_lcd_info_ret_blocko/a> <113o/a>oa href="+code=lcd_info" class="sref">lcd_infoo/a>__attribute__o/a>((oa href="+code=aligned" class="sref">alignedo/a>(8)))__read_mostlyo/a><= <114o/a>{ <115o/a><  <<<<<.oa href="+code=model" class="sref">modelo/a> =                oa href="+code=DISPLAY_MODEL_LCD" class="sref">DISPLAY_MODEL_LCDo/a>, <116o/a><  <<<<<.oa href="+code=lcd_width" class="sref">lcd_widtho/a> =            16, <117o/a><  <<<<<.oa href="+code=lcd_cmd_reg_addr" class="sref">lcd_cmd_reg_addro/a> =     oa href="+code=KITTYHAWK_LCD_CMD" class="sref">KITTYHAWK_LCD_CMDo/a>, <118o/a><  <<<<<.oa href="+code=lcd_data_reg_addr" class="sref">lcd_data_reg_addro/a> =    oa href="+code=KITTYHAWK_LCD_DATA" class="sref">KITTYHAWK_LCD_DATAo/a>, <119o/a><  <<<<<.oa href="+code=min_cmd_delay" class="sref">min_cmd_delayo/a> =        80, <120o/a><  <<<<<.oa href="+code=reset_cmd1" class="sref">reset_cmd1o/a> =           0x80, <121o/a><  <<<<<.oa href="+code=reset_cmd2" class="sref">reset_cmd2o/a> =           0xc0, <122o/a>}; <123o/a> <124o/a> <125o/a>ospa> class="comment">/* direct
 <126o/a>#define oa href="+code=LCD_CMD_REG" class="sref">LCD_CMD_REGo/a><  <lcd_infoo/a>.oa href="+code=lcd_cmd_reg_addr" class="sref">lcd_cmd_reg_addro/a>         <127o/a>#define oa href="+code=LCD_DATA_REG" class="sref">LCD_DATA_REGo/a><  lcd_infoo/a>.oa href="+code=lcd_data_reg_addr" class="sref">lcd_data_reg_addro/a>        <128o/a>#define oa href="+code=LED_DATA_REG" class="sref">LED_DATA_REGo/a><  lcd_infoo/a>.oa href="+code=lcd_cmd_reg_addr" class="sref">lcd_cmd_reg_addro/a>       ospa> class="comment">/* LASI & ASP only */o/spa>
 <129o/a> <130o/a>#define oa href="+code=LED_HASLCD" class="sref">LED_HASLCDo/a> 1 <131o/a>#define oa href="+code=LED_NOLCD" class="sref">LED_NOLCDo/a>  0 <132o/a> <133o/a>ospa> class="comment">/* The workqueue must be created at init-time */o/spa>
 <134o/a>static intstart_tasko/a>(void)  <135o/a>{        <136o/a><  <<<< class="comment">/* Display the default text now */o/spa>
 <137o/a><  <<<<led_typ=o/a><== oa href="+code=LED_HASLCD" class="sref">LED_HASLCDo/a>)lcd_printo/a>(lcd_text_defaulto/a> ); <138o/a> <139o/a><  <<<< class="comment">/* KittyHawk has no LED support on its LCD */o/spa>
 <140o/a><  <<<<lcd_no_led_supporto/a>) return 0; <141o/a>#include <<  <<<< class="comment">/* Create the work queue and queue the LED task */o/spa>
 <143o/a><  <<<<led_wqo/a> = oa href="+code=create_singlethread_workqueue" class="sref">create_singlethread_workqueueo/a>(ospa> class="string">"led_wq"o/spa>
);        <144o/a><  <<<<queue_delayed_worko/a>(oa href="+code=led_wq" class="sref">led_wqo/a>, &oa href="+code=led_task" class="sref">led_tasko/a>,<0); <145o/a> <146o/a><  <<<<<147o/a>} <148o/a> <149o/a>oa href="+code=device_initcall" class="sref">device_initcallo/a>(oa href="+code=start_task" class="sref">start_tasko/a>); <150o/a> <151o/a>ospa> class="comment">/* ptr to LCD/LED-specific funcion v*/o/spa>
 <152o/a>static void<(*oa href="+code=led_func_ptr" class="sref">led_func_ptro/a>) (unsigned char)__read_mostlyo/a>; <153o/a> <154o/a>#ifdefCONFIG_PROC_FSo/a> <155o/a>static intled_proc_showo/a>(structseq_fileo/a><*oa href="+code=m" class="sref">mo/a>,vo/a>) <156o/a>{ <157o/a><  <<<<mo/a>->oa href="+code=private" class="sref">privateo/a>) <158o/a><  <<<<<{ <159o/a><  <<<<LED_NOLCDo/a>: <160o/a><  <<<<<<  <<<<seq_printfo/a>(oa href="+code=m" class="sref">mo/a>, class="string">"Heartbeat: %d\n"o/spa>
,led_heartbeato/a>); <161o/a><  <<<<<<  <<<<seq_printfo/a>(oa href="+code=m" class="sref">mo/a>, class="string">"Disk IO: %d\n"o/spa>
,led_diskioo/a>); <162o/a><  <<<<<<  <<<<seq_printfo/a>(oa href="+code=m" class="sref">mo/a>, class="string">"LAN Rx/Tx: %d\n"o/spa>
,led_lanrxtxo/a>); <163o/a><  <<<<<<  <<<<<164o/a><  <<<<LED_HASLCDo/a>: <165o/a><  <<<<<<  <<<<seq_printfo/a>(oa href="+code=m" class="sref">mo/a>, class="string">"%s\n"o/spa>
,lcd_texto/a>); <166o/a><  <<<<<<  <<<<<167o/a><  <<<<<168o/a><  <<<<<<  <<<<<169o/a><  <<<<<} <170o/a><  <<<<<171o/a>} <172o/a> <173o/a>static intled_proc_openo/a>(structinodeo/a><*oa href="+code=inode" class="sref">inodeo/a>, structfileo/a><*oa href="+code=file" class="sref">fileo/a>) <174o/a>{ <175o/a><  <<<<single_openo/a>(oa href="+code=file" class="sref">fileo/a>,led_proc_showo/a>,PDEo/a>(oa href="+code=inode" class="sref">inodeo/a>)->oa href="+code=data" class="sref">datao/a>); <176o/a>} <177o/a> <178o/a> <179o/a>static oa href="+code=ssize_t" class="sref">ssize_to/a>led_proc_writeo/a>(structfileo/a><*oa href="+code=file" class="sref">fileo/a>, constbufo/a>, <180o/a><  <<<<size_to/a>counto/a>,loff_to/a><*oa href="+code=pos" class="sref">poso/a>) <181o/a>{ <182o/a><  <<<<datao/a> = oa href="+code=PDE" class="sref">PDEo/a>(oa href="+code=file" class="sref">fileo/a>->oa href="+code=f_path" class="sref">f_patho/a>.oa href="+code=dentry" class="sref">dentryo/a>->oa href="+code=d_inode" class="sref">d_inodeo/a>)->oa href="+code=data" class="sref">datao/a>; <183o/a><  <<<<curo/a>,lbufo/a>[32]; <184o/a><  <<<<do/a>; <185o/a> <186o/a><  <<<<capableo/a>(oa href="+code=CAP_SYS_ADMIN" class="sref">CAP_SYS_ADMINo/a>)) <187o/a><  <<<<<<  <<<<EACCESo/a>; <188o/a> counto/a >= sizeof(oa href="+code=lbuf" class="sref">lbufo/a>)) <190o/a><  <<<<<<  <<<<counto/a = sizeof(oa href="+code=lbuf" class="sref">lbufo/a>)-1; <191o/a><192o/a><  <<<<<<<<<ccpy_from_usero/a>(oa href="+code=lbuf" class="sref">lbufo/a>,bufo/a>,counto/a)) <193o/a><  <<<<<<  <<<<EFAULTo/a>; <194o/a><  <<<<lbufo/a>[oa href="+code==count" class="sref">counto/a]<= 0; <195o/a> <196o/a><  <<<<curo/a> = oa href="+code=lbuf" class="sref">lbufo/a>; <197o/a> <198o/a><  <<<<datao/a>) <199o/a><  <<<<<{ <200o/a><  <<<<LED_NOLCDo/a>: <201o/a><  <<<<<<  <<<<do/a> = *oa href="+code=cur" class="sref">curo/a>++ - class="string">'0'o/spa>
; <202o/a><  <<<<<<  <<<<<<<<<do/a> != 0 && do/a> != 1) gotoparse_erroro/a>; <203o/a><  <<<<<<  <<<<led_heartbeato/a> = oa href="+code=d" class="sref">do/a>; <204o/a> <205o/a><  <<<<<<  <<<<<<<<<*oa href="+code=cur" class="sref">curo/a>++ != ospa> class="string">' 'o/spa>
) gotoparse_erroro/a>; <206o/a> <207o/a><  <<<<<<  <<<<do/a> = *oa href="+code=cur" class="sref">curo/a>++ - class="string">'0'o/spa>
; <208o/a><  <<<<<<  <<<<<<<<<do/a> != 0 && do/a> != 1) gotoparse_erroro/a>; <209o/a><  <<<<<<  <<<<led_diskioo/a><= oa href="+code=d" class="sref">do/a>; <210o/a> <211o/a><  <<<<<<  <<<<<<<<<*oa href="+code=cur" class="sref">curo/a>++ != ospa> class="string">' 'o/spa>
) gotoparse_erroro/a>; <212o/a> <213o/a><  <<<<<<  <<<<do/a> = *oa href="+code=cur" class="sref">curo/a>++ - class="string">'0'o/spa>
; <214o/a><  <<<<<<  <<<<<<<<<do/a> != 0 && do/a> != 1) gotoparse_erroro/a>; <215o/a><  <<<<<<  <<<<led_lanrxtxo/a><= oa href="+code=d" class="sref">do/a>; <216o/a> <217o/a><  <<<<<<  <<<<<218o/a><  <<<<LED_HASLCDo/a>: <219o/a><  <<<<<<  <<<<<<<<<*oa href="+code=cur" class="sref">curo/a> && curo/a>[oa href="+code=strlen" class="sref">strleno/a>(oa href="+code=cur" class="sref">curo/a>)-1]<== ospa> class="string">'\n'o/spa>
) <220o/a><  <<<<<<  <<<<<<  <<<<curo/a>[oa href="+code=strlen" class="sref">strleno/a>(oa href="+code=cur" class="sref">curo/a>)-1]<= 0; <221o/a><  <<<<<<  <<<<<<<<<*oa href="+code=cur" class="sref">curo/a><== 0)  <222o/a><  <<<<<<  <<<<<<  <<<<curo/a> = oa href="+code=lcd_text_default" class="sref">lcd_text_defaulto/a>; <223o/a><  <<<<<<  <<<<lcd_printo/a>(oa href="+code=cur" class="sref">curo/a>); <224o/a><  <<<<<<  <<<<<225o/a><  <<<<<226o/a><  <<<<<<  <<<<<227o/a><  <<<<<} <228o/a><  <<<<< <229o/a><  <<<<counto/a; <230o/a> <231o/a>oa href="+code=parse_error" class="sref">parse_erroro/a>: <232o/a><  <<<<<<<<<(long)oa href="+code=data" class="sref">datao/a><== oa href="+code=LED_NOLCD" class="sref">LED_NOLCDo/a>) <233o/a><  <<<<<<  <<<<printko/a>(oa href="+code=KERN_CRIT" class="sref">KERN_CRITo/a> class="string">"Parse error: expect<\"n n n\" (n<== 0 or 1) for heartbeat,\ndisk io and lan tx/rx indicators\n"o/spa>
); <234o/a><  <<<<EINVALto/a; <235o/a>} <236o/a> <237o/a>static constfile_operationso/a>led_proc_fopso/a> = { <238o/a><  <<<<<.oa href="+code=owner" class="sref">ownero/a><  <<<<<< = oa href="+code=THIS_MODULE" class="sref">THIS_MODULEo/a>, <239o/a><  <<<<<.oa href="+code=open" class="sref">openo/a> <  <<<<<< = oa href="+code=led_proc_open" class="sref">led_proc_openo/a>, <240o/a><  <<<<<.oa href="+code=read" class="sref">reado/a> <  <<<<<< = oa href="+code=seq_read" class="sref">seq_reado/a>, <241o/a><  <<<<<.oa href="+code=llseek" class="sref">llseeko/a> <  <<<<<= oa href="+code=seq_lseek" class="sref">seq_lseeko/a>, #include <<  <<<<<.oa href="+code=release" class="sref">releaseo/a><  <<<<<= oa href="+code=single_release" class="sref">single_releaseo/a>, <243o/a><  <<<<<.oa href="+code=write" class="sref">writeo/a><  <<<<<< = oa href="+code=led_proc_write" class="sref">led_proc_writeo/a>, <244o/a>}; <245o/a> <246o/a>static int__inito/a>led_create_procfso/a>(void) <247o/a>{ <248o/a><  <<<<proc_dir_entryo/a><*oa href="+code=proc_pdc_root" class="sref">proc_pdc_rooto/a> = oa href="+code=NULL" class="sref">NULLto/a; <249o/a><  <<<<proc_dir_entryo/a><*oa href="+code=eunt" class="sref"eunto/a; <250o/a> <251o/a><  <<<<led_typ=o/a><== -1) return -1; <252o/a> <253o/a><  <<<<proc_pdc_rooto/a> = oa href="+code=proc_mkdir" class="sref">proc_mkdiro/a>(ospa> class="string">"pdc"o/spa>
,<0); <254o/a><  <<<<proc_pdc_rooto/a>) return -1; <255o/a> <256o/a><  <<<<lcd_no_led_supporto/a>) <257o/a><  <<<<<{ <258o/a><  <<<<<<  <<<<proc_create_datao/a>(ospa> class="string">"led"o/spa>
,S_IRUGOo/a>|oa href="+code=S_IWUSR" class="sref">S_IWUSRo/a>,proc_pdc_rooto/a>, <259o/a><  <<<<<<  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<&oa href="+code=led_proc_fops" class="sref">led_proc_fopso/a>, (void<*)oa href="+code=LED_NOLCD" class="sref">LED_NOLCDo/a>); ospa> class="comment">/* LED */o/spa>
 <260o/a><  <<<<<<  <<<<<261o/a><  <<<<<} <262o/a> <263o/a><  <<<<led_typ=o/a><== oa href="+code=LED_HASLCD" class="sref">LED_HASLCDo/a>) <264o/a><  <<<<<{ <265o/a><  <<<<<<  <<<<proc_create_datao/a>(ospa> class="string">"lcd"o/spa>
,S_IRUGOo/a>|oa href="+code=S_IWUSR" class="sref">S_IWUSRo/a>,proc_pdc_rooto/a>, <266o/a><  <<<<<<  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<&oa href="+code=led_proc_fops" class="sref">led_proc_fopso/a>, (void<*)oa href="+code=LED_HASLCD" class="sref">LED_HASLCDo/a>); ospa> class="comment">/* LCD */o/spa>
 <267o/a><  <<<<<<  <<<<<268o/a><  <<<<<} <269o/a> <270o/a><  <<<<<271o/a>} <272o/a>#endif <273o/a> <274o/a>ospa> class="comment">/*o/spa>
 <275o/a>ospa> class="comment"><<<** o/spa>
 <276o/a>ospa> class="comment"><<<** led_ASP_driver(G42o/a><  <<<< class="com"drivers/parisc/led.c#L273" id"vL273" L262"ne" ns< 87o/a>ospa> class="comment"><<<** o/spa>
 ospa> class="commentCD */o/spa>
 <179o/a>#define oa href="+code=LED_DLCD" class="sref">LCD_DATAo////////0x01  <<ospa> class="comment">/; dass thift (0:on 1:offnly) */o/spa>
 #define oa href="+code=LSTROBDULE" class="srede=LSTROBDATAo//////0x02  <<ospa> class="comment">s="obeass ct_bl>/; day) */o/spa>
 <181o/a>static vomp;oa href="+code=led_ASP_driops" class="sref">led_ASP_driatao/<<fops" class="sref">>poso/a>) <182o<<<{ <183o/a><  < <  <fops" class="sref">>posoo/a~arfops" class="sref">>posoo/a; <186o/a><  <<1) f/a>(oa href="+codops" class="sreieunt-1]<=int<187o/a><  <<<<<<  <<<<<  <<<<<<  <<<<>posoomp;&am   0)o/a &/a & 7o/a; <  <<<<<<  <<<<LED_DATA_REGo/,<0); <190o/a><  <<<<<<  <<<<LED_DATA_REGo/,<0); <  <<<<<<  <<<<>posoomlt;mlt;= n -1; <192o/a><  <} <193o/a>}  <195o/a> ospa> class="comment" */o/spa>
 ospa> class="comment"><<<** o/spa>
 ospa> class="comment"><<<** l/* LASP_driver(G42o/a><  <<<< class="com"driver#L199" id2vL199" class="line" nam=2vL1992><199o/a>ospa> class="comment"><<<** o/spa>
 ospa> class="commenay) */o/spa>
 static vomp;oa href="+code=l/* LASP_driops" class="sref">l/* LASP_driatao/<<fops" class="sref">>poso/a>) <  <<<<>posoo/a~arfops" class="sref">>posoo/a; <  <<<<fops" class="sref">>poso/a>,LED_DATA_REGo/,<0); } <206o/a>  ospa> class="comment" */o/spa>
 ospa> class="comment"><<<** o/spa>
 <1ptioa>ospa> class="comment"><<<** l/CDASP_driver(G42o/a><  <<<< class="com"drive3#L211" id3vL211" class="line" nam=3vL2113><111o/a>ospa> class="comment"><<< <** o/spa>
 <212ooa>ospa> class="commenay) */o/spa>
 static vomp;oa href="+code=l/CDASP_driops" class="sref">l/CDASP_driatao/<<fops" class="sref">>poso/a>) <114o/a>{ <215o/a><  <static int<116o/a><  <stat<<<217o/a><  <<<<<<  <<>,<  <<<<< <  <stat<<lbt_blort" class="sref">lbt_bl116o/*a>,<220o/a><  <<<<<<  <<<<<&oa href="+code=lcd_info" class="sref">lcd_infoo/a>.oa href="+coed_heartbeat" class="sreed_heartbeato/a>, <221o/a><  <<<<<<  <<<<<&oa href="+code=lcd_info" class="sref">lcd_infoo/a>.oa href="+co,\nd_iskio" class="sre,\nd_iseato/a>, <222o/a><  <<<<<<  <<<<<&oa href="+code=lcd_info" class="sref">lcd_infoo/a>.oa href="+colan_rcde=v" class="srelan_rcdeato/a>, <223o/a><  <<<<<<  <<<<<&oa href="+code=lcd_info" class="sref">lcd_infoo/a>.oa href="+colan_nrxtx" class="srefan_nr197o/a> <224o/a><  <};  <226o/a><  <<<< class="comment">/ondrit minlcd_cue_deass millisecondbles */o/spa>
 <227o/a><  <<<<lcd_infoo/a>.oa href="+cominlcd_cue_deask" class="sreminlcd_cue_deposoo/ 100
,<0); <228o/a><  <<<<< <229o/a><  <<1) f/a>(oa href="+codops" class="sreieunt=<=int<  <<{<<< <  <<<<<<  <<<<<>posoomp;&amar<  <<<<<<  <<{<<< <233o/a><  <<<<<<  <<  <<<<,<234o/a><  <<<<<<  <<  <<<<<  <<<<<<  <<  <<<<< <  <<<<<<  <<<<<<<<<<<<fops" class="sref">>posoomp;&amar<  <<<<<<  <<  <<<<<<  <<<<<<<<<<<<<  <<<<<<  <<  <<<<<  <<<<<<  <} <240o/a><  <} } #include < ospa> class="comment">/*o/spa>
 ospa> class="comment"><<<** o/spa>
 ospa> class="comment"><<<** lget_net_activityver(G42o/a><  <<<< class="com"drive3#L247" id3vL247" class="line" nam=3vL24734< 87o/a>ospa> class="comment"><<<** o/spa>
 ospa> class="comment"><<
 ospa> class="comment"><<<(analogass devlget_cd_i() py_f net/core/dev.cer(G42o/a><  <<<< class="com"drive3#L250" id3vL250" class="line" nam=3vL25035<1ptioa>ospa> class="comment"><<< <** o/spa>
 <151o/a>ospa> class="commenles */o/spa>
 <152o/a>statnt_s="l__ask" class="sref">_s="l__240o/ic intlget_net_activityatao/a>(void) <253o{<<<< <154o/a>n#ifdef<  <<<<<256o#else 0; <157o/a><  <<statnt<258o/a><  <<  <<260o/a><  <<162o/a><  <<263o/a><  << 0; <264o/a><  <<<< class="comment">we are running as a workqueue task, so>we cospuse an RCU lookuples */o/spa>
 <  <<  <<<<__i_netops" class="srei__i_netposo/a>,<267o/a><  <<<<<ss264" class="sressposon 0; <168o/a><  <<<<<<  <<<<<(struct__devlget_rcuort" class="sref">__devlget_rcuatao/nt<  <<<<<<<<<  <<<<<<  <<  <<<<<<<<<  <<<<<<  <<  <<<<<.oa href="+coss264" class="sressposo/a><= oa href="+codevlget_ss264" class="sredevlget_ssatao/nt<  <<<<<ss264" class="sressposoa>)->oa href="+corx_pabless264" class="srerx_pablessposon 0; <  <<<<<< = oa href="+cotx_total264" class="sretx_totalposo-+<<<= oa href="+coda>ss264" class="sressposoa>)->oa href="+cotx_pabless264" class="sretx_pablessposon 0; <  <<<<<} <  < <  <<  <<<<<<<<<<  <<<<<<  <<<= oa href="+corx_total_fast264" class="srerx_total_fastposo/a><= oa href="+corx_total264" class="srerx_totalposo= 0; <  <<<<<<  <<  <<<<<}  <187o/a><  <<<<<<<<<<  <<<<<<  <<<<<  <<<<<<  <<<<<  <} <191o/a><192o/a><  <<<<<193o/a>#endif } <195o/a>  ospa> class="comment">/*o/spa>
 ospa> class="comment"><<<>/*o/spa>
 <199o/a>ospa> class="comment"><<lget_ed_dis_activityver(G42o/a><  <<<< class="com"drive4#L200" id4vL200" class="line" nam=4vL20040<1ptioa>ospa> class="commena"><<<>/*o/spa>
 ospa> class="comment"><</*o/spa>
 ospa> class="commena"><<< <** o/spa>
 ospa> class="commenles */o/spa>
 statnt_s="l__ask" class="sref">_s="l__240o/ic intlget_ed_dis_activityatao/a>(void) <  <<  <stat<<<  <<<<<208o/a><  < <  <<  < class="comment">Justpuse a rivy simple
 ospa> class="commenlllllllllllsince>we only wac ito know<<<
 <  <<<<<215o/a><  <<<<<<  << ]if<(oa href="+coevomms264" class="sreevomms227o[nt<  <<<<<217o/a><  <<<= oa href="+codast_pgpgouport" class="srefast_pgpgoupposo<<< = oa href="+coevomms264" class="sreevomms227o[nt<  <<<<(oa href="+codhangeread" class="sreshangerposo-?<<<<220o/a>}   ospa> class="comment">/*o/spa>
 ospa> class="comment"><<lwork_funcver(G42o/a><  <<<< class="com"drive4#L226" id4vL226" class="line" nam=4vL22642<276o/a>ospa> class="comment"><<<  <<<< class="com"drive4#L207" id4vL227" class="line" nam=4vL22742< 87o/a>ospa> class="comment"><</* //* Lgets updatedr(G42o/a><  <<<< class="com"drive4#8207" id4vL228" class="line" nam=4vL22842<228o0); ospa> class="comment"> TODO:r(G42o/a><  <<<< class="com"drive4#L230" id4vL230" class="line" nam=4vL23043<1ptioa>ospa> class="commena"> - ed_p_deaload aa> age (older 4 lcd&qufree n\&quo/* 's<1) fthater(G42o/a><  <<<< class="com"drive4#L231" id4vL231" class="line" nam=4vL23143<111o/a>ospa> class="comment"> - optimizperationG42o/a><  <<<< class="com"drive4#L202" id4vL232" class="line" nam=4vL23243<212ooa>ospa> class="commenay) */o/spa>
  <234o/a>#define oa href="+coEEARTBEAC_LEN264" class="sreEEARTBEAC_LENooto /a>(oa href="+coHZ264" class="sreEZooto*10/100oid) #define oa href="+coEEARTBEAC_2ND_RANGE_START264" class="sreEEARTBEAC_2ND_RANGE_STARTooto /a>(oa href="+coHZ264" class="sreEZooto*28/100oid) #define oa href="+coEEARTBEAC_2ND_RANGE_ENSLCD" class="sreEEARTBEAC_2ND_RANGE_ENS116o/a>/a>(oa href="+coHEARTBEAC_2ND_RANGE_START264" class="sreEEARTBEAC_2ND_RANGE_STARTooto +ine oa href="+coEEARTBEAC_LEN264" class="sreEEARTBEAC_LENootooid)  #define oa href="+code=LUPDATE_INTEREINVAL" class="srede=LUPDATE_INTEREINooto /1 + <240o/a>static vomp;oa href="+code=lwork_funcops" class="sref">lwork_funcooto /a>(struct#include <<  <stat<<<243o/a><  <stat<<counter
 <  <<<<fops" class="srecurrommf">fposo-1]<=<ospa> class="comment">s=orls curromm he al o<
 <245o/a> <  <<<< class="comment">exit<<<
 <  <<<<<lfunc_ptiops" class="sref">lfunc_ptiootooid) <  <<<<<<<< <  <<<< class="comment">increcomm
 <251o/a><  <<  <<253o/a><  <<<<<<<<<<  <<<<<.oa href="+cocount_HZ264" class="srecount_HZposo-1]<= 0; <255o/a> <256o/a><  <<<<led_heartbeat" class="sref">led_heartbootoooid) <257o/a><  <<<<<{ <258o/a><  <<<<<<  <<<< class="comment">f> choed_heartb-/* Llike a<<
 ospa> class="comment">              * (2 x shorm<  <<<< class="com"drive4#L260" id4vL260" class="line" nam=4vL26046<1ptioa>ospa> class="commena">              *s */o/spa>
 <  <<<<<<  <<<<<<<<<<  <<<<<<  <<<<<<<<<<<<<<<<<<<<<<<  <<<<<<  <<  <<<<<<  <<<<<<  <<<<<<  <<<<<<  <<<<<fops" class="srecurrommf">fposo-|><== oa href="+code=LEEARTBEACRIT" class="srede=LEEARTBEACposoaid) <  <<<<<}  <  <<<<<<<<<llanrxnrxtx" class="sref">llanrxnr116o)= <<<<fops" class="srecurrommf">fposo-|><== oa href="+cole=lget_net_activityops" class="sref">lget_net_activityatao/,<0); <168o/a><  <<<<<<<<<led_disops" class="sref">led_dis116o)= <<<<<fops" class="srecurrommf">fposo-|><== oa href="+cole=lget_ed_dis_activityops" class="sref">lget_ed_dis_activityatao/,<0); <269o/a> <  <<<< class="comment">bfinko/* bl<<
 <  <<<<<<<<<__progresfops" class="sreoops">__progresf116o)= <<<{ <  <<<<<<  <<<<<<<<<<  <<<<<<  <<  <<<< class="comment">newer loadavg.o/* b, so>we */o/spa>
 <274o/a>ospa> class="commen<<<<<  <<  <<<<<<  <<<
 <  <<<<<<  <<<<<<  <<<<<fops" class="srecurrommf">fposo-1]if<(oa href="+cocount_HZ264" class="srecount_HZposo->lt;1]if<(oa href="+coHZ264" class="sreEZooto/2)= ? 0 :>
xff<0); <  <<<<<<  <<< else <<<{ <  <<<<<<  <<  <<<< class="comment">old
 <  <<<<<<  <<  <<<<<<<<<<  <<<<<<  <<<<<<  <<<<<<  <<<<<fops" class="srecurrommf">fposo-<<<&a= ~if<(oa href="+co/* L264" class="sre/* Lposo|f<(oa href="+co/* 5264" class="sre/* 5poso|f<(oa href="+co/* 6264" class="sre/* 6poso|f<(oa href="+co/* 7264" class="sre/* <217o,<0); <  <<<<<<  <<<<<<<<<<  <<<<<<  <<<<<<  <<<<<<  <<<<<fops" class="srecurrommf">fposo-|1]if<(oa href="+co/* L264" class="sre/* Lposo|f<(oa href="+co/* 5264" class="sre/* 5poso|f<(oa href="+co/* 6264" class="sre/* 6poso|f<(oa href="+co/* 7264" class="sre/* <217o,<0); <  <<<<<<  <<<<<} <  <<<<<}  <  <<<<<<<<<fops" class="srecurrommf">fposo-!<<<= oa href="+codastf">fops" class="srelastde=fposo=a>
 <186o/a><  <<<<<{ <187o/a><  <<<<<<  <<<(!oa href="+cod">lfunc_ptiops" class="sref">lfunc_ptiooto<<<<fops" class="srecurrommf">fposo);<<  <<<< class="comment">Update
 <  <<<<<<  <<<<fops" class="srelastde=fposo<<< = oa href="+cocurrommf">fops" class="srecurrommf">fposo<0); <  <<<<<} <  <lworkops" class="srequeue_ue_de">lworkatao/ntlwqops" class="sref">lwqatao,<<<<&oa href="+cof">ltt_task" class="sref">ltt_tatao,<192o<<<}  ospa> class="comment">/*o/spa>
 ospa> class="comment"><<lhaltver(G42o/a><  <<<< class="com"drive4#L196" id4vL196" class="line" nam=4vL19649<106o/a>ospa> class="commen "><<<  <<<< class="com"drive4#L197" id4vL197" class="line" nam=4vL19749< 87o/a>ospa> class="comment"><<<  <<<< class="com"drive4#L268" id4vL198" class="line" nam=4vL19849< 88o/a>ospa> class="comment"><<<  <<<< class="com"drive4#L229" id4vL199" class="line" nam=4vL1994><199o/a>ospa> class="comment"><<<** o/spa>
 ospa> class="commenay) */o/spa>
 static intlealtatao//a stat/alnotifierposo<<<<<<{ <  <.oa href="+conotifierlcallort" class="srenotifierlcallr(so<<< = oa href="+code=lhalteat" class="sref">lealtatao/a>, }; static intstatic intlealtatao//a<  < <  <<<<<<<<<<  <<<<<<  <<<< <  <<<<<217o/a><  <<  < n\&quSYSTEM RESTART n\&qu */o/spn 0; <  <<<<<<  <<<<<<  <<<<<<  <<220o/a><  < n\&quSYSTEM HALT n\&qu */o/spn 0; <221o/a><  <<<<<<  <<<<<<  <<<<<<  <<222o/a><  < n\&quSYSTEM POWER OFF n\&qu */o/spn 0; <223o/a><  <<<<<<  <<<<<<  <<<<<<  <<224o/a><  <<  <<<<<} <226o/a><  <<<<} <227o/a><  <<<< class="comment">Cancel
 <  <<<<<<<<<lwqops" class="sref">lwqatao) <<<{ <  <<<<<<  <<<<lwork_syncops" class="srecancel_ue_de">lwork_syncatao/<<<&oa href="+cof">ltt_task" class="sref">ltt_tatao,<0); <  <<<<<<  <lwqops" class="sref">lwqatao,<0); <  <<<<<<  <lwqops" class="sref">lwqatao<<< = oa href="+coNULNVAL" class="sreNULNposon 0; <  <<<<<} <233o/<<} <234o/a><  <<<<<<<<<<  <<<<<<  <<<<<<  <<  <<<<<<  <<<<<<<<<lfunc_ptiops" class="sref">lfunc_ptiootooid) <  <<<<<<  <<  <<<<lfunc_ptiops" class="sref">lfunc_ptiooto<
xff)=<ospa> class="comment">
 <  <
 <240o/a><  <<<<} #include <ospa> class="comment">/*o/spa>
 ospa> class="commen "><<lf="driver(G42o/a><  <<<< class="com"drive5#L245" id5vL245" class="line" nam=5vL24554<275o/a>ospa> class="comment"><<<** o/spa>
 ospa> class="comment"><<ospa> class="comment"><<<  <<<< class="com"drive5#L238" id5vL248" class="line" nam=5vL24854< 88o/a>ospa> class="comment"><<<  <<<< class="com"drive5#L229" id5vL249" class="line" nam=5vL24954<199o/a>ospa> class="commenty) */o/spa>
 <251oic int_it264" class="sref">_itooto ntlf="dri264" class="sreregister_f">lf="driooto<  <static int<  << 0; <  <<<<<<<<<<  <<<<<<  <<<<<257o/a><  << 0; <258o/a><  <<  <<ospa> class="comment">s=orl
 <  <<  <<  <<  <<<<<<  <<  <<<<<<  < n\&qu/*  ed_p_deaat %lx,%lx<  <<<<<<  <<<<<<  <<<<<<  <<<<<<  <<<<lfunc_ptiops" class="sref">lfunc_ptiooto<<< = oa href="+code=ldCD_f="dri264" class="srede=ldCD_f="driooton 0; <267o/a><  <<<<<<  <<<<ltyplops" class="sred">ltyplooto<<< = oa href="+code=LEASLCSLCD" class="srede=LEASLCSooton 0; <168o/a><  <<<<<<<<<<269o/a> <  <<  <<<<<<  << = oa href="+code=LDATA_REGVAL" class="sredED_DATA_REGatao<<  <<<<<<  <<<<lfunc_ptiops" class="sref">lfunc_ptiooto<<< = oa href="+code=ldASI_f="dri264" class="srede=ldASI_f="driooton 0; <  <<<<<<  < n\&qu/E  ed_p_deaat %lx<  <<<<<<  <<<<ltyplops" class="sred">ltyplooto<<< = oa href="+code=LNOLCSLCD" class="srede=LNOLCSooton 0; <  <<<<<<  < <  <<  <<<<<<  << = oa href="+code=LDATA_REGVAL" class="sredED_DATA_REGatao<<  <<<<<<  <<<<lfunc_ptiops" class="sref">lfunc_ptiooto<<< = oa href="+code=lASP_f="dri264" class="srede=lASP_f="driooton 0; <  <<<<<<  < n\&qu/E  (ASP-style) ed_p_deaat %lx<  <<<<<<  <<<<<< = oa href="+code=LDATA_REGVAL" class="sredED_DATA_REGatao,<0); <  <<<<<<  <<<<ltyplops" class="sred">ltyplooto<<< = oa href="+code=LNOLCSLCD" class="srede=LNOLCSooton 0; <  <<<<<<  < <  < <  <<<<<<  <<<< n\&qu%s: Wr<(li/* //* Lm"+cl %d !\n n\&qu */o/sp,/a> <187o/a><  <<<<<<  <<<<<  <<<<<  <<<<<<  <<<<<  <<<<<} <  <<<<} <  <ospa> class="comment">markospa> class="commena">>>>>>><
 <  <<<<<<  <<<<lnotifiereat" class="sref">lnotifierposo)n 0; <195o/a> <  <<<< class="comment">Ensurl
 <  <<<<<<<<<lwqops" class="sref">lwqatao) <<<{ <  <<<<<<  << = oa href="+coqueue_ue_de">lworkops" class="srequeue_ue_de">lworkatao/ntlwqops" class="sref">lwqatao,<<<<&oa href="+cof">ltt_task" class="sref">ltt_tatao,<
,<0); <  <<<<<} <  <<<< ospa> class="comment">/*o/spa>
 ospa> class="comment"><<lregionsver(G42o/a><  <<<< class="com"drive6#6205" id6vL196" class="line" nam=6vL20660<106o/a>ospa> class="commen "><<<  <<<< class="com"drive6#L207" id6vL207" class="line" nam=6vL20760< 87o/a>ospa> class="comment"><<lregionsve<  <<<< class="com"drive6#8207" id6vL198" class="line" nam=6vL20860< 88o/a>ospa> class="comment"><<<  <<<< class="com"drive6#9207" id6vL199" class="line" nam=6vL20960<199o/a>ospa> class="comment"><<
 ospa> class="commena"><<_itve< */o/spa>
 ospa> class="comment"><<<  <<<< class="com"drive6#L202" id6vL212" class="line" nam=6vL21261<212ooa>ospa> class="commena">*">/*o/spa>
 ospa> class="commenles */o/spa>
  _it264" class="sref">_itooto ntlregions264" class="sreregister_f">lregionsatao/ic void) <217o/a><  <<  <<  <<<<<<  < n\&qufcd_cmd n\&qu */o/sp,<0); <  <<<<<<  < n\&qufcd_/; d n\&qu */o/sp,<0); <221o/a><  <<<<<<  <<222o/a><  <<223o/a><  <<  <<<<<<  <<<< n\&qufed_/; d n\&qu */o/sp,<0); <  <<<<<<  <<226o/a><  <<<<<} <227o<<<}  ospa> class="comment">/*o/spa>
 ospa> class="comment"><<<  <<<< class="com"drive6#L202" id6vL232" class="line" nam=6vL23263<212ooa>ospa> class="commena"><<<  <<<< class="com"drive6#L213" id6vL233" class="line" nam=6vL23363<143o/a>ospa> class="commenl"><<<  <<<< class="com"drive6#L214" id6vL234" class="line" nam=6vL23463<274o/a>ospa> class="commen "><<n /aospa> class="comment"><<<  <<<< class="com"drive6#L226" id6vL236" class="line" nam=6vL23663<106o/a>ospa> class="commen "><<<  <<<< class="com"drive6#L207" id6vL237" class="line" nam=6vL23763< 87o/a>ospa> class="comment"><<  <<<< class="com"drive6#8207" id6vL238" class="line" nam=6vL23863< 88o/a>ospa> class="commentes */o/spa>
 <  <<#include <<  <<<<<lfunc_ptiops" class="sref">lfunc_ptiootoo|| f<(oa href="+codcd_cd_iops" class="srefcd_cd_i222o/a>.oa href="+com"+clort" class="srem"+clatao-!<<<= oa href="+coDISPLAY_MODEL_LCSLCD" class="sreDISPLAY_MODEL_LCSposo=a>
 <  <<<<<<<<<  << 0; <  <<<< class="comment">tempors/ply disable
 <  <<<<<<<<<lwqops" class="sref">lwqatao)a>
 <  <<<<<<  <<<<lwork_syncops" class="srecancel_ue_de">lwork_syncatao/<<<&oa href="+cof">ltt_task" class="sref">ltt_tatao,<0);  <  <<<< class="comment">copy ed_p_dea/a
 <251o/a><  < <  <<<< class="comment">Set /*  Cursorito 1st
 <  <<<<<  < <257o/a><  <<<< class="comment">P
 <258o/a><  <<1) f<<<<<  <<<<<<<<<<<<<<  <<<<<<  <<  <<<<<<  <<<<<<  <<<< #39;  #39; */o/sp,< = oa href="+codCD_DATA_REGVAL" class="sredCD_DATA_REGatao,<0); <  <<<<<<  <<<<<} <  << 0; <  <<<< class="comment">re-queue theoworknes */o/spa>
 <  <<<<<<<<<lwqops" class="sref">lwqatao) <<<{ <168o/a><  <<<<<<<<<< = oa href="+coqueue_ue_de">lworkops" class="srequeue_ue_de">lworkatao/ntlwqops" class="sref">lwqatao,<<<<&oa href="+cof">ltt_task" class="sref">ltt_tatao,<
,<0); <  <<<<<} <  <<<< <274o/a>ospa> class="comment">/*o/spa>
 ospa> class="comment"><<l>_itve>/*o/spa>
 ospa> class="commen "><<<  <<<< class="com"drive6#L267" id6ed.c#L273" id"vL273" L266"ne" 67< 87o/a>ospa> class="comment"><<l>_itvenisocalled a> y early in theobootup-process from setup.c<  <<<< class="com"drive6#L238" id6vL178" class="line" nam=6vL17867< 88o/a>ospa> class="comment"><<<  <<<< class="com"drive6#L229" id6vL179" class="line" nam=6vL17967<199o/a>ospa> class="comment"><<<  <<<< class="com"drive6#L180" id6vL180" class="line" nam=6vL18068<1ptioa>ospa> class="commena"><< ci.c<) fosp.c<  <<<< class="com"drive6#L251" id6vL181" class="line" nam=6vL18168<111o/a>ospa> class="comment"><< ci_f">l>_itven) fosp_f">l>_itve.r(G42o/a><  <<<< class="com"drive6#L262" id6vL182" class="line" nam=6vL18268<212ooa>ospa> class="commena"><<<  <<<< class="com"drive6#L243" id6vL183" class="line" nam=6vL18368<143o/a>ospa> class="commenl"><<ospa> class="commen es */o/spa>
  _it264" class="sref">_itooto ntl>_itask" class="sref">l>_itooto/ic void) <187o<<<{ <  <<  <<  <<  <<<<<<  <<ospa> clas/a n\&qu/inux %s n\&qu */o/sp,< = oa href="+co>_it_utse" nops" class="srei_it_utse" natao/)->amp;oa href="+coreleasnops" class="srereleasnatao,<0);  <  <<<< class="comment">Worknarouo atheobuggyoPDC o<
 <  <<  <ospa> class="comment">KittyHawk
 <  <ospa> class="comment">KittyHawk
 <  <ospa> class="comment">KittyHawk
 <  <ospa> class="comment">KittyHawk
 <  <ospa> class="comment">KittyHawk
 <  <<<<<<  << = oa href="+cop n\&qu%s: KittyHawk-Mach="l (hdrivion 0x%x)<1)uo ,  n\&qu */o/spa>
 <  <<<<<<  <<  <<<<<<  << a>ospa> clas/a n\&qu/E  eetection skippc/l\n n\&qu */o/sp,< = oa href="+co__FILE__ask" class="sref"FILE__atao,<  <<<<<<  <lsupport264" class="srefcd_no_f">lsupport233o/1]1n 0; <  <<<<<<  <use theopr id6vL189" class="E*/o/spa hrha47957<209o/a>< dlass="E*/o/spa hrha47957<2e" nam=7v76vL2070 class="line" nam=5vL22552<265o/a><  <<<<<}  7lass="com"drive6#6205" i76vL1970 class="line" nam=6vL25665<206o/a>  7lass="com"drive6#L207" i76vL2070 class="line" nam=6vL2576><257o/a><   clam=6,a>ospa> clascm=6vommenl">id><<s=orl
  7lass="com"drive6#8207" i76vL1970 class="line" nam=5vL2585><258o/a><  <<  <<<<<<<<<  <lwork_syns_cd_iooto ntlwqa8o/a><  <<  <<  << DPRINTeturn oa href="+DPRINTeclasntask" class="srep<  <<<<<<  <<  <<<<<<  << cofcd_wid=37;s: , d_ue_deVA=37;s:u,\&qu/E  eetecti37;x)<1)uo ,  n\&qu */o/spa>
  < qu */o/sp,< = oa href="+co__FILE__ask" class="sref"F58o/a><  <  7ers/parisc/led.6#L207" i76vL2171 class="line" nam=5vL1875><1 vL2176><217o/a><  <<217o/a><  <  7ers/parisc/led.6#9207" i76vL217" class="line" nam=6vL" nam=7vL20370<233o/a><   <<<<<  < < qu */o/sp,< = oa href="+co__FILE__ask"srefcd_text_defaultooto, a><  << s_cd_iooto nt< DPRINTeturn oa href="+DPRINTeclasntask" class="srep<< < qu */o/sp,< = oa href="+co__FILE__ask20370<233o/a><   <<<<<   <<<<<   <<<< <   <<<<<   <<<<<<<<<  <sults. Someass="commena">s=orl
 lfunc_s_cd_iooto nt
  7ers/parisc/led.6#L229" i76vL2272 class="line" nam=6vL" nam=7v20470<234o/a><  <<<<217o/a><  < 7lass="com"drive6#L202" i76vL2373 class="line" nam=6vL nam=6vL21861<228o/a><  <s=orl
  7lass="com"drive6#L213" i76vL2373 class="line" nam=7vL nam=7vL nam=6vL26766<187o/s_cd_iooto nt<  nam=5vL2" class="srefcoffeseo  <
  7lass="com"drive6#L225" i76vL2373 class="line" nam=5vL26556<26O nam=7v20470<234o/a><  <<< <<<<<<<< 7lass="com"drive6#L207" i76vL2373 class="line" nam=5vL1875><1 vnam=5vL2" class="srefcDPRINTeturn oa href="+DPRINTeclasntask" class="srep<  <<<<  <<<<<} <  <<<<<<  <<  <<<<<<  < 7ers/parisc/led.6#L242" i76vL2a74 class="line" nam=6vL nam=6vL21861<228o/a><  <s=orl
 <  <<<<<<  << = oa href="+cop<  <<<<<<  < 7ers/parisc/led.6#L244" i76vL247" class="line" nam3<25 vnam=7v20470<234o/a><  <<< <222o/a><  <<  ospa> clascomment">s=orl
  7ers/parisc/led.6#L207" i76vL2474 class="line" nam=5vL1875><1  nam=6vL26766<187o/s_cd_iooto nt
 <  <<<<  <<<<<<  <<  < <  <<<<<<  << = oa href="+cop n\&qu%s: <(li/* //* Lm"+cl %d !\n n\&qu */o/sp,/a> < unc__atao,<  <<<<  < nam=6(t">KittyHawk
 <  <
 
 75 href="drivers/parisc//parisc/led.6#L266" id6vL292" clasclass="line" nam=5nam=5vL}v2nam=6vL250650226o/a><  < nam=6(t"<  <="+coiops" class="sreiooto++)7<<<{ 7a href="drivers/pa" i76vL2575 class="ass="sref">_i065022ref="+cofcd_cd_ios="sref">_i065022220370<233o/a><  <<<,< = oa href="+co__FILE__ask" class="sref"F58o/a><  <.oa href="+coreset_cmd1ops" class="sreresops" class="sregsc_writebatao/na>ospa> clas/a #39;  #39; */o/sp,< = oa href="+codCD_DATA7a href="+7stiops" class="srestioot7)a>
 7a href="drivers/pariscrisc/led.6#L244" id6vL244" class="line" n7REGVAL" c7ass="sredCD_DATA_REGatao7<0); 767href="dri7ers/parisc/led.6#L231" i76ve" nam=6v726166<221o/a><  <<<<<<  < nam=6(tREGVAL" c7ass="sredCD_DATA_REGatao7<0); 7a href="drivers/pa" i76vL2575 class="ine" nam=5vL1875><1 vnam=5vL2" class="srefcDPRINTeturn oa href="+DPRINTeclasntask" class="srepospa> crisval =NFRooto nch="re" classurs/parisc/led.6#L201" i76vL2171 class="liprohibilassusage- wherl<  <7<<<} 767href="dri7ers/parisc/led.6#L245" i76vass="line7 nam=6vL26566<265o/a><  7< 0; 7a hrefi76vL2575 class="line" nam3<25 vnam=7v20470<234o/a>7e-queue theoworknes */o/7pa>
 7a href="driver0<233o/a><  <<<,< = oa href="+co__FILE__ask" class="sref"F58o/a><  <lwqo7s" class="sref">lwqatao)7<<<{ 7a href="driver/led.5#L238" id5vL188" class="line" nam=57tt_task" 7lass="sref">ltt_tatao,<
7<0); 7a hrefs/parisc/led.6#L254" id6vL264" cl7ss="line"7nam=6vL26966<209o/a><  <7<<<} 7a href="drivers/parisc/led.6#L270" id67L270" cla7s="line" nam=6vL27067<247o<<} 7a hrefstatic ="drivers/parisc/led.6exL276" id6vL186" claexL2class=<233o/a><  <<<,>_iexL276" id6vL186" c,>_iexL2" class="sref">_itooto ntl7d_widthop7" class="srefcd_widthoot7n<<} 7a hreffcact_"><<<272" clas7="line" nam=6vL27267<1927<<<} 77 href="drivers/parisc/led.5#unL184" id5vL194" class="line" nam=5vL194unL184" id5vL194" class="l" claoregister_rebootlnotifiereat" class="sreregister_rebootlnotifieratao/<<<&oa href="+cof">lnoti7L273" cla7s="line" nam=6vL27367<277o/a> 774href="driver/led.5atao/<<<&oa href="+cof">lnoti7Ls="line"7pa> class="comment">/*o/7pa>
 7a hrefs/parisc/led.6#L254" id6vL264" cl7sss="line7ment"><<l>_itve>/*o/7pa>
 77 href="dri7ers/parisc/led.6#L226" i76vo/a>ospa>7class="commen "><<< 7<<<<lwqo7ocess from setup.c< 7<<<<<  << 7<<<<
Tclaorigiass=LXR softw> clbs="linass="srefhttp://sourceforge.netcommjects/lxla>LXR 6#L2u inefcd_c="lisd6vLeri207"ss=KERN_INFbs=ass="srefm5v2to:lxl@l="li.noterxl@l="li.nolass=
s/div>

rxl.l="li.no kindommeos0" clasass="srefhttp://www.redpill-l="omm.noteRedpill L="omm ASfcd_c=ommvidm=5of s="linL239ul3663<1806s="ca classser="com since 1995.
s/div>