index
:
litmus-rt.git
archive/unc-master-3.0
archived-2013.1
archived-private-master
archived-semi-part
demo
ecrts-pgm-final
ecrts14-pgm-final
gpusync-rtss12
gpusync/staging
linux-tip
litmus2008-patch-series
master
pgm
prop/litmus-signals
prop/robust-tie-break
staging
test
tracing-devel
v2.6.34-with-arm-patches
v2015.1
wip-2011.2-bbb
wip-2011.2-bbb-trace
wip-2012.3-gpu
wip-2012.3-gpu-preport
wip-2012.3-gpu-rtss13
wip-2012.3-gpu-sobliv-budget-w-kshark
wip-aedzl-final
wip-aedzl-revised
wip-arbit-deadline
wip-aux-tasks
wip-bbb
wip-bbb-prio-don
wip-better-break
wip-binary-heap
wip-budget
wip-color
wip-color-jlh
wip-d10-hz1000
wip-default-clustering
wip-dissipation-jerickso
wip-dissipation2-jerickso
wip-ecrts14-pgm
wip-edf-hsb
wip-edf-os
wip-edf-tie-break
wip-edzl-critique
wip-edzl-final
wip-edzl-revised
wip-events
wip-extra-debug
wip-fix-switch-jerickso
wip-fix3
wip-fmlp-dequeue
wip-ft-irq-flag
wip-gpu-cleanup
wip-gpu-interrupts
wip-gpu-rtas12
wip-gpu-rtss12
wip-gpu-rtss12-srp
wip-gpusync-merge
wip-ikglp
wip-k-fmlp
wip-kernel-coloring
wip-kernthreads
wip-klmirqd-to-aux
wip-kshark
wip-litmus-3.2
wip-litmus2011.2
wip-litmus3.0-2011.2
wip-master-2.6.33-rt
wip-mc
wip-mc-bipasa
wip-mc-jerickso
wip-mc2-cache-slack
wip-mcrit-mac
wip-merge-3.0
wip-merge-v3.0
wip-migration-affinity
wip-mmap-uncache
wip-modechange
wip-nested-locking
wip-omlp-gedf
wip-pai
wip-percore-lib
wip-performance
wip-pgm
wip-pgm-split
wip-pm-ovd
wip-prio-inh
wip-prioq-dgl
wip-refactored-gedf
wip-release-master-fix
wip-robust-tie-break
wip-rt-kshark
wip-rtas12-pgm
wip-semi-part
wip-semi-part-edfos-jerickso
wip-shared-lib
wip-shared-lib2
wip-shared-mem
wip-splitting-jerickso
wip-splitting-omlp-jerickso
wip-stage-binheap
wip-sun-port
wip-timer-trace
wip-tracepoints
The LITMUS^RT kernel.
Bjoern Brandenburg
/*
* linux/arch/arm/mach-pxa/leds-lubbock.c
*
* Copyright (C) 2000 John Dorsey <john+@cs.cmu.edu>
*
* Copyright (c) 2001 Jeff Sutherland <jeffs@accelent.com>
*
* Original (leds-footbridge.c) by Russell King
*
* Major surgery on April 2004 by Nicolas Pitre for less global
* namespace collision. Mostly adapted the Mainstone version.
*/
#include <linux/init.h>
#include <mach/hardware.h>
#include <asm/leds.h>
#include <asm/system.h>
#include <mach/pxa25x.h>
#include <mach/lubbock.h>
#include
"leds.h"
/*
* 8 discrete leds available for general use:
*
* Note: bits [15-8] are used to enable/blank the 8 7 segment hex displays
* so be sure to not monkey with them here.
*/
#define D28 (1 << 0)
#define D27 (1 << 1)
#define D26 (1 << 2)
#define D25 (1 << 3)
#define D24 (1 << 4)
#define D23 (1 << 5)
#define D22 (1 << 6)
#define D21 (1 << 7)
#define LED_STATE_ENABLED 1
#define LED_STATE_CLAIMED 2
static unsigned int
led_state
;
static unsigned int
hw_led_state
;
void
lubbock_leds_event
(
led_event_t evt
)
{
unsigned long
flags
;
local_irq_save
(
flags
);
switch
(
evt
) {
case
led_start
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
5 hw_led_state
=
0
;
break
;
#ifdef CONFIG_LEDS_TIMER
case
led_timer
:
hw_led_state
^=
D26
;
break
;
#endif
#ifdef CONFIG_LEDS_CPU
case
led_idle_start
:
hw_led_state
&= ~
D27
;
break
;
case
led_idle_end
:
hw_led_state
|=
D27
;
break
;
#endif
case
led_halted
:
break
;
case
led_green_on
:
hw_led_state
|=
D21
;
break
;
case
led_green_off
:
hw_led_state
&= ~
D21
;
break
;
case
led_amber_on
:
hw_led_state
/*
* Cryptographic API.
*
* 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.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
#include <linux/init.h>
#include <linux/module.h>
#include <linux/crypto.h>
#include <linux/vmalloc.h>
#include <linux/lzo.h>
struct
lzo_ctx
{
void
*
lzo_comp_mem
;
};
static int
lzo_init
(
struct
crypto_tfm
*
tfm
)
{
struct
lzo_ctx
*
ctx
=
crypto_tfm_ctx
(
tfm
);
ctx
->
lzo_comp_mem
=
vmalloc
(
LZO1X_MEM_COMPRESS
);
if
(!
ctx
->
lzo_comp_mem
)
return
-
ENOMEM
;
return
0
;
}
static void
lzo_exit
(
struct
crypto_tfm
*
tfm
)
{
struct
lzo_ctx
*
ctx
=
crypto_tfm_ctx
(
tfm
);
vfree
(
ctx
->
lzo_comp_mem
);
}
static int
lzo_compress
(
struct
crypto_tfm
*
tfm
,
const
u8
*
src
,
unsigned int
slen
,
u8
*
dst
,
unsigned int
*
dlen
)
{
struct
lzo_ctx
*
ctx
=
crypto_tfm_ctx
(
tfm
);
size_t
tmp_len
= *
dlen
;
/* size_t(ulong) <-> uint on 64 bit */
int
err
;
err
=
lzo1x_1_compress
(
src
,
slen
,
dst
, &
tmp_len
,
ctx
->
lzo_comp_mem
);
if
(
err
!=
LZO_E_OK
)
return
-
EINVAL
;
*
dlen
=
tmp_len
;
return
0
;
}
static int
lzo_decompress
(
struct
crypto_tfm
*
tfm
,
const
u8
*
src
,
unsigned int
slen
,
u8
*
dst
,
unsigned int
*
dlen
)
{
int
err
;
size_t
tmp_len
= *
dlen
;
/* size_t(ulong) <-> uint on 64 bit */
err
=
lzo1x_decompress_safe
(
src
,
slen
,
dst
, &
tmp_len
);
if
(
err
!=
LZO_E_OK
)
return
-
EINVAL
;
*
dlen
=
tmp_len
;
return
0
;
}
static struct
crypto_alg alg
= {
.
cra_name
=
"lzo"
,
.
cra_flags
=
CRYPTO_ALG_TYPE_COMPRESS
,
.
cra_ctxsize
=
sizeof
(
struct
lzo_ctx
),
.
cra_module
=
THIS_MODULE
,
.
cra_list
=
LIST_HEAD_INIT
(
alg
.
cra_list
),
.
cra_init
=
lzo_init
,
.
cra_exit
=
lzo_exit
,
.
cra_u
= { .
compress
= {
.
coa_compress
=
lzo_compress
,
.
coa_decompress
=
lzo_decompress
} }
};
static int
__init
lzo_mod_init
(
void
)
{
return
crypto_register_alg
(&
alg
);
}
static void
__exit
lzo_mod_fini
(
void
)
{
crypto_unregister_alg
(&
alg
);
}
module_init
(
lzo_mod_init
);
module_exit
(
lzo_mod_fini
);
MODULE_LICENSE
(
"GPL"
);
MODULE_DESCRIPTION
(
"LZO Compression Algorithm"
);