linux/drivers/video/pxa3xx-gcu.c
<<
>>
Prefs
   1/*
   2 *  pxa3xx-gcu.c - Linux kernel module for PXA3xx graphics controllers
   3 *
   4 *  This driver needs a DirectFB counterpart in user space, communication
   5 *  is handled via mmap()ed memory areas and an ioctl.
   6 *
   7 *  Copyright (c) 2009 Daniel Mack <daniel@caiaq.de>
   8 *  Copyright (c) 2009 Janine Kropp <nin@directfb.org>
   9 *  Copyright (c) 2009 Denis Oliver Kropp <dok@directfb.org>
  10 *
  11 *  This program is free software; you can redistribute it and/or modify
  12 *  it under the terms of the GNU General Public License as published by
  13 *  the Free Software Foundation; either version 2 of the License, or
  14 *  (at your option) any later version.
  15 *
  16 *  This program is distributed in the hope that it will be useful,
  17 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  18 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19 *  GNU General Public License for more details.
  20 *
  21 *  You should have received a copy of the GNU General Public License
  22 *  along with this program; if not, write to the Free Software
  23 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  24 */
  25
  26/*
  27 * WARNING: This controller is attached to System Bus 2 of the PXA which
  28 * needs its arbiter to be enabled explicitly (CKENB & 1<<9).
  29 * There is currently no way to do this from Linux, so you need to teach
  30 * your bootloader for now.
  31 */
  32
  33#include <linux/module.h>
  34#include <linux/platform_device.h>
  35#include <linux/dma-mapping.h>
  36#include <linux/miscdevice.h>
  37#include <linux/interrupt.h>
  38#include <linux/spinlock.h>
  39#include <linux/uaccess.h>
  40#include <linux/ioctl.h>
  41#include <linux/delay.h>
  42#include <linux/sched.h>
  43#include <linux/slab.h>
  44#include <linux/clk.h>
  45#include <linux/fs.h>
  46#include <linux/io.h>
  47
  48#include "pxa3xx-gcu.h"
  49
  50#define DRV_NAME        "pxa3xx-gcu"
  51#define MISCDEV_MINOR   197
  52
  53#define REG_GCCR        0x00
  54#define GCCR_SYNC_CLR   (1 << 9)
  55#define GCCR_BP_RST     (1 << 8)
  56#define GCCR_ABORT      (1 << 6)
  57#define GCCR_STOP       (1 << 4)
  58
  59#define REG_GCISCR      0x04
  60#define REG_GCIECR      0x08
  61#define REG_GCRBBR      0x20
  62#define REG_GCRBLR      0x24
  63#define REG_GCRBHR      0x28
  64#define REG_GCRBTR      0x2C
  65#define REG_GCRBEXHR    0x30
  66
  67#define IE_EOB          (1 << 0)
  68#define IE_EEOB         (1 << 5)
  69#define IE_ALL          0xff
  70
  71#define SHARED_SIZE     PAGE_ALIGN(sizeof(struct pxa3xx_gcu_shared))
  72
  73/* #define PXA3XX_GCU_DEBUG */
  74/* #define PXA3XX_GCU_DEBUG_TIMER */
  75
  76#ifdef PXA3XX_GCU_DEBUG
  77#define QDUMP(msg)                                      \
  78        do {                                            \
  79                QPRINT(priv, KERN_DEBUG, msg);          \
  80        } while (0)
  81#else
  82#define QDUMP(msg)      do {} while (0)
  83#endif
  84
  85#define QERROR(msg)                                     \
  86        do {                                            \
  87                QPRINT(priv, KERN_ERR, msg);            \
  88        } while (0)
  89
  90struct pxa3xx_gcu_batch {
  91        struct pxa3xx_gcu_batch *next;
  92        u32                     *ptr;
  93        dma_addr_t               phys;
  94        unsigned long            length;
  95};
  96
  97struct pxa3xx_gcu_priv {
  98        void __iomem             *mmio_base;
  99        struct clk               *clk;
 100        struct pxa3xx_gcu_shared *shared;
 101        dma_addr_t                shared_phys;
 102        struct resource          *resource_mem;
 103        struct miscdevice         misc_dev;
 104        struct file_operations    misc_fops;
 105        wait_queue_head_t         wait_idle;
 106        wait_queue_head_t         wait_free;
 107        spinlock_t                spinlock;
 108        struct timeval            base_time;
 109
 110        struct pxa3xx_gcu_batch *free;
 111
 112        struct pxa3xx_gcu_batch *ready;
 113        struct pxa3xx_gcu_batch *ready_last;
 114        struct pxa3xx_gcu_batch *running;
 115};
 116
 117static inline unsigned long
 118gc_readl(struct pxa3xx_gcu_priv *priv, unsigned int off)
 119{
 120        return __raw_readl(priv->mmio_base + off);
 121}
 122
 123static inline void
 124gc_writel(struct pxa3xx_gcu_priv *priv, unsigned int off, unsigned long val)
 125{
 126        __raw_writel(val, priv->mmio_base + off);
 127}
 128
 129#define QPRINT(priv, level, msg)                                        \
 130        do {                                                            \
 131                struct timeval tv;                                      \
 132                struct pxa3xx_gcu_shared *shared = priv->shared;        \
 133                u32 base = gc_readl(priv, REG_GCRBBR);                  \
 134                                                                        \
 135                do_gettimeofday(&tv);                                   \
 136                                                                        \
 137                printk(level "%ld.%03ld.%03ld - %-17s: %-21s (%s, "     \
 138                        "STATUS "                                       \
 139                        "0x%02lx, B 0x%08lx [%ld], E %5ld, H %5ld, "    \
 140                        "T %5ld)\n",                                    \
 141                        tv.tv_sec - priv->base_time.tv_sec,             \
 142                        tv.tv_usec / 1000, tv.tv_usec % 1000,           \
 143                        __func__, msg,                                  \
 144                        shared->hw_running ? "running" : "   idle",     \
 145                        gc_readl(priv, REG_GCISCR),                     \
 146                        gc_readl(priv, REG_GCRBBR),                     \
 147                        gc_readl(priv, REG_GCRBLR),                     \
 148                        (gc_readl(priv, REG_GCRBEXHR) - base) / 4,      \
 149                        (gc_readl(priv, REG_GCRBHR) - base) / 4,        \
 150                        (gc_readl(priv, REG_GCRBTR) - base) / 4);       \
 151        } while (0)
 152
 153static void
 154pxa3xx_gcu_reset(struct pxa3xx_gcu_priv *priv)
 155{
 156        QDUMP("RESET");
 157
 158        /* disable interrupts */
 159        gc_writel(priv, REG_GCIECR, 0);
 160
 161        /* reset hardware */
 162        gc_writel(priv, REG_GCCR, GCCR_ABORT);
 163        gc_writel(priv, REG_GCCR, 0);
 164
 165        memset(priv->shared, 0, SHARED_SIZE);
 166        priv->shared->buffer_phys = priv->shared_phys;
 167        priv->shared->magic = PXA3XX_GCU_SHARED_MAGIC;
 168
 169        do_gettimeofday(&priv->base_time);
 170
 171        /* set up the ring buffer pointers */
 172        gc_writel(priv, REG_GCRBLR, 0);
 173        gc_writel(priv, REG_GCRBBR, priv->shared_phys);
 174        gc_writel(priv, REG_GCRBTR, priv->shared_phys);
 175
 176        /* enable all IRQs except EOB */
 177        gc_writel(priv, REG_GCIECR, IE_ALL & ~IE_EOB);
 178}
 179
 180static void
 181dump_whole_state(struct pxa3xx_gcu_priv *priv)
 182{
 183        struct pxa3xx_gcu_shared *sh = priv->shared;
 184        u32 base = gc_readl(priv, REG_GCRBBR);
 185
 186        QDUMP("DUMP");
 187
 188        printk(KERN_DEBUG "== PXA3XX-GCU DUMP ==\n"
 189                "%s, STATUS 0x%02lx, B 0x%08lx [%ld], E %5ld, H %5ld, T %5ld\n",
 190                sh->hw_running ? "running" : "idle   ",
 191                gc_readl(priv, REG_GCISCR),
 192                gc_readl(priv, REG_GCRBBR),
 193                gc_readl(priv, REG_GCRBLR),
 194                (gc_readl(priv, REG_GCRBEXHR) - base) / 4,
 195                (gc_readl(priv, REG_GCRBHR) - base) / 4,
 196                (gc_readl(priv, REG_GCRBTR) - base) / 4);
 197}
 198
 199static void
 200flush_running(struct pxa3xx_gcu_priv *priv)
 201{
 202        struct pxa3xx_gcu_batch *running = priv->running;
 203        struct pxa3xx_gcu_batch *next;
 204
 205        while (running) {
 206                next = running->next;
 207                running->next = priv->free;
 208                priv->free = running;
 209                running = next;
 210        }
 211
 212        priv->running = NULL;
 213}
 214
 215static void
 216run_ready(struct pxa3xx_gcu_priv *priv)
 217{
 218        unsigned int num = 0;
 219        struct pxa3xx_gcu_shared *shared = priv->shared;
 220        struct pxa3xx_gcu_batch *ready = priv->ready;
 221
 222        QDUMP("Start");
 223
 224        BUG_ON(!ready);
 225
 226        shared->buffer[num++] = 0x05000000;
 227
 228        while (ready) {
 229                shared->buffer[num++] = 0x00000001;
 230                shared->buffer[num++] = ready->phys;
 231                ready = ready->next;
 232        }
 233
 234        shared->buffer[num++] = 0x05000000;
 235        priv->running = priv->ready;
 236        priv->ready = priv->ready_last = NULL;
 237        gc_writel(priv, REG_GCRBLR, 0);
 23/video/pxa3xx-gcu.c#L188" idshared" class="sref">shared->hw_running . ref">ready;
 12    \
/* set up the ring buffer pointers */<2    \
 173        gc_writel(priv, priv->shared->REG_GCRBLR    \
 12    \
/* set up the ring buffer pointers */<2 
 174        gc_writel(priv, priv->shared->        unsigned i*a href="+code=base" class="sref">base)2    \
 22    \
/* set up the ring buffer pointers */<2 /a>;
 237        gc_writel(priv,         unsigned i+ 63) href="+63) *a href="+code=base" class="sref">base)2  0);
 172    \
 12    \
 107    irq0" cla10xa="+code=num" class="sre175@129" i3e9"> 12    \
irq      struct  *prive (0)
 1822
 203<_ready(struct pxa3xx_gcu_privcode=ready_last" cctx      struct ref="+code=base" class="sref">base)2 void
 114        struct pxa3xx_gcu_shared *shared = priv->shared)
 184        priv-&gid=us * 191                gc_readl(priv, REG_GCIECR, shared<   \
 12an>);
 222              ">QDUMP("Start"
 12span>
priv-&gid=us *priv, 0);
shared, IRQ_NONe, shared0
 22span>
              _  do_gettimeofday(&"Start");
priv->       8        unsig_/a>       fer"Start" 124
priv-&gid=us *IE_ALL &ammp; ~ready);
 222        QDUMP("Start";
 22;
 200do_gettimeofday(&amspan class="string">"Start"
do_gettimeofday(&"Start");
 120
 236        priv-> a href="+code=ready" class="sref">ready
 216do_gettimeofday(&amspan class="string">"Start"ready/* set up the ring buffer pointers */<2/a>);
yusadypacemment">/* set up the ring buffer pointers */<2/a>);
/* set up the ring buffer pointers */<2span>
 14v" class="sref">priv->    sig_/dlefer"Start");
 23/video/pxa3xx-gcu.c#L188" idshared" class="sref">shared->num++] = 0x0500}
 129
 222        QDUMP("Start" 22)
         /* set up the ring buffer pointers */<2{
 14 name="L237"> 237        gc_writel(priv, REG_GCRBLR;
 12/a>);
 14wake_up_al91          wake_up_al9 hrettimeofday" class="sref">do_gettimeofday(&"Start"
 172an>);
 127
priv->    sig_donefer"Start"
ready,
privQDUMP("Start",
 181do_gettimeofday(&amspan class="string">"Start"),
 232    /a>),
 23/a>),
/* set up the ring buffer pointers */<2 / 4,
 177        gc_writel(priv, priv-&gid=us *"Start"
              _ulock_ hrettimeofday" class="sref">do_gettimeofday(&"Start" 12}
shared, IRQ_HANDLED, shared8
 232   3 void
 13)
 13<2a>)
 114    L114"> 114run_ready(struct pxa3xx_gcu_priv *pri3;
ready<3;
re="L165"> 165reef="+codode=num" class="sref">num++] = 0x05034
 23a>) {
 222        QDUMP("Start";
 13;
usad ypace,mment">/* set up the ring buffer pointers */<3;
/* set up the ring buffer pointers */<3;
shared = priv->    sig_ait_q/dlefer"Start" 231
shared = priv->shared->ready<3;
 218        unsigned intef="+code=shared" class="sref">shared = priv->       8        unsig_/a>       fer"Start";
 184        shared 191                gc_readl(priv, "Start"
 23 void
 165reef="+codhref="+code=priait_qevame_/a>      iblt; 165ait_qevame_/a>      iblt;gc_readlbase3)
shared = priv->shared->shared-HZf="+* href="+code=base" class="sref">base)3{
 13 = 0;
 165reef="+c!odo *pri3;
base)3;
 231
 191                gc_readl(priv, shared 231/a>;
shared = priv->       8        unsig_/a>       fer< =a href="+code=rea 218        unsigned  a href="+code=ready" class="sref">ready<33
privQDUMP("RESET");
 14re="L165"> 165reef="+cod-name="L145"> 14ETIMEDOUf"L165"> 165ETIMEDOUffer"Start"
base)3)
 232   37
 232   37= 0;
 130001;
 222        QDUMP("RESET";
 23;
 165reef="+pan class="string">"RESET";
 2133
 130000;
 13;
 114    L114"> 114run_ready(struct pxa3xx_gcu_priv *pri3;
 213, 0);
re="L165"> 165reef="+codode=num" class="sref">num++] = 0x0503 . ref">r3ady;
 13    \
 222        QDUMP("Start" 23    \
usad ypace,mment">/* set up the ring buffer pointers */<3    \
/* set up the ring buffer pointers */<3 
shared = priv->    sig_ait_queuefer"Start" 23    \
shared = priv-&g a href="+code=ready" class="sref">ready<3 /a>;
 184        shared 191                gc_readl(priv, "Staref">ready<3  0);
 13    \
 165reef="+codhref="+code=priait_qevame_/a>      iblt; 165ait_qevame_/a>      iblt;gc_readlbase3    \
shared = priv-&g>(shared-HZf="+* href="+code=base" class="sref">base)3    \
 23e (0)
 165reef="+c<do *pri32
base)3 void
 13)
 165reef="+c>do *pri32   \
base)3 /a>;
 137
 191                gc_readl(priv, sharedready<3span>
privQDUMP("RESET" 165reef="+cod-name="L145"> 14ETIMEDOUf"L165"> 165ETIMEDOUffer"Start"
base)3span>
 213/a>);
 213/void
 134
 222        QDUMP("RESET");
 13;
 165reef="+pan class="string">"RESET";
 173
 13/a>);
/* set up the ring buffer pointers */<30
 23span>
 107    ssize10221" id="L221" class="line" name="L221"> 23sa>);
runmisc   (struct     filexa3xx_gcu_priv" classfilp_head_t    filpl(const charx_gcu_priv" class   <_head_t       base3svoid
 107    size10221"de=ready_last" ccoun07"> 107    coun0l( 107    loff10xa3xx_gcu_priv" classoffp_head_t    offp *pri3/a>);
ready<3/a>);
re="L165"> 165reef="+pan class="string">"RESET"
"RESET";
 220        struct shared->"RESET"
 219<_ready(struct pxa3xx_gcu_privcoan class="string">"RESET"
    conta/vir_o< href="+code=gc_readfilp_head_t    filpl 219<_ready(struct         unmisc fop code=pan class="string">"Staref">ready<3 void
 23)
word 8        unword f="+codhref="+code=pricoun07"> 107    coun0l"Staref">ready<3 a>);
 23;
usad ypace,mment">/* set up the ring buffer pointers */<3/a>);
/* set up the ring buffer pointers */<35
shared = priv->        unsig_a "Start");
 137
shared = priv->        unsig_aord 238" +odhref="+code=priaord 8        unword f="+pan class="string">"Start"
 13pan>,
/* set up the ring buffer pointers */<3pan>,
        unword f="+chrefodhref="+code=priPXA3XX_GCU_BATCH_WORDS8        unPXA3XX_GCU_BATCH_WORDS *pri3/a>),
 14E2BIG"L165"> 165E2BIGf="+pan class="string">"Start"),
 23/a>),
/* set up the ring buffer pointers */<3pa>);
shared = priv-&g a href="+code=ready" class="sref">ready<3/
 165reef="+codhref="+code=priL114"> 114    L114"> 114pxa3xx_gcu_priv pan class="string">"Start");
 165reef="+c<do *pri3}
 165reef="+pan class="string">"RESET"
"RESET" 14)
/* set up the ring buffer pointers */<4<2a>)
/* set up the ring buffer pointers */<4<3a>)
/* set up the ring buffer pointers */<4;
        _  do_gettimeofday(&        uns=ag f="+ pan class="string">"Start"
 24a>) {
shared->shared = priv-&gpan class="string">"Start"shared = priv-&gintef="+code=share class="sref">shared->ready->nex4;
 14;
        _ulock__irq0"store hrettimeofday" class="sref">do_gettimeofday(&        uns=ag f="+ pan class="string">"Start";
 14    }
 241
/* set up the ring buffer pointers */<4;
df     QDUMP(QDUMoo4ring">"Start"l4 unsig_/a4       fer4quot;Start&quo>);
shared = , 41ne" name="L164"> 13;
        _  do_gettimeofday(& 23 void
priv-&gintef="+code=share class="sref">sha40L226" id="L226" class="line" class="sref">shared->shared =     a4t_q/dle(&amhref="+code=b4se" c4ass="sref">base3shared = shared = r>-HZf="+* href="+code=ba4e" cl41ne" name="L187"> 127
        _ulock__irq0"store hrettimeofday" class="sref">do_gettimeofday(&eo/pxa3x4-gcu.31L198" id="L198" c4ass="4ine" name="L198"> 13 =>),
shared =  1654eef="+c!odo *base)3;
priv-&gintef="+"L192"y_last" ccoun07"L192""sref">shared =         unsig_aord 238" +odhref="+code=priaord 8<4       4unsigned  a href="+code=4eady"42ne" name="L233"> 23/a>),
4DUMP(42ne" name="L164"> 134
df             un]u.3#x01000000sig_aord 238" +odhref="+code=priaord 8<442uot;RESET");
base0"> 14)
)
 234 423;
4DUMP179" id="4179" class="line" name="4179">4130001;
        _  do_gettimeofday(&"RESET&4uot;<4s3;
43a 3ref="dr href="+code=priv" class="sref">priv-&gintef="+"L192"y_last" ccousref">sha40L226" id="L226" class="line" classNU, "RESET&4uot;<433/a>),
 43a 3ref="drivers/video/pxa3x3-gcu.27L231" id="L231" classif      236        priv-&g4164" id="4164" class="line" name="4164">433;
 236   BUG_ONit_queue_head_t    L114"> 114 9L207f">shared"L2_"> 926" cllass="line" classNU, 433/a>);
 *p433 9L207f">shared"L2_"> 926" "+"L192"y_last" ccousref">sha40L226" id="L226" class="line" class class="sref"f">shared = r>-HZf="+17" id="L417" class="line" name="L417"> 413, 0);
r>-HZf="+1222" cla4 class="sref">num++]4= 0x0433    \
 236        shared = r>-HZf="+xa="+code4num" class="sre175@129" 43e9">444;
"Start&4uot;<441 3ref="dr href="+code=priv"   L114"> 114 9L207f">shared"L2_"> 926" class="line" class class="sref"f">shared = r>-HZf="+x21" id="4221" class="line" name="4221">423    href="+code=priv" cla<="sref">r>-HZf="+x"+pan cl4 up the ring buffer poin4ers *443 3ref="drivers/v47" id="L147" class="line"                 href="+code=BUG_d" class="sref">shared = priv-> 165reef="+c&l4nt">/* se4 up the ring buffer poin4ers *443svoid
 216do_gettimeofday(4"Start&4uot;<4s3    \
444a>) {
        _ulock__irq0"store hrettimeofday" class="sref">do_gettimeofday(&eo/pxa3x4-gcu.31Lg a href=4+code=ready" class="sref4>read443an>);
"Staref4>read442}
QDUMP(QDUMoo4ri href="+code=s=ag 8eo/pxa3x4-gcu.31Lg222" cla4198" class="line" name="4198">44d8
4ase;
b4se453span>
p453sa>);
(struct     filexa3xx_gf="driverf="drivers/video/pxcm"sref">shared-> 165reef="+c&l4  kref="+4ode=base" class="sref">b4sepriv-&g4164" id="4164" class="line" name="4164">413)
p4i32   \
 219<_ready(struct pxa3xx_gcu_priv<4 ueref="+4ode=base" class="sref">b4se    conta/vir_o< href="+code=gc_readfilp_head_t    filpl 219<_ready(struct eo/pxa3x4-gcu.31L187" id="4187" class="line" name="4187">454;
sharedpriv-&g4("RESET&4uot;<4s3, 0);
sharea>        uIOCTL_RESEA, 0):="+code=priv" class="sref">priv-&g4( href="+4ss="string">"Start&4uot;<4s30
        _  do_gettimeofday(&b4se
shared     id=9e" name="Ls="line" name="L216"> 216do_gettimeofday(4ass id="L413" class="line" name="L413"> 4632
        _ulock__irq0"store hrettimeofday" class="sref">do_gettimeofday(&eo/pxa3fday(4a kref="+413" class="line" name="L413"> 463svoid
463    \
"RESET&4uot;<466, 0);
sharea>        uIOCTL_WAIT_IDLE, 0):="+code=priv" class="sref">priv-&g4(ueref="+4116" class="line" name="4116">463 1-gcu.3#L202"s="line" name="L114"> 114 216do_gettimeofday(4a87" id="4ss="string">"RESET&4uot;<4637
 473
473, 0);
/* se4 up the ring buffer poin4ers *4<30473    href="+code=priv" cla<="sref">r>-HZf="+221" id="4221" class="line" name="4221">423sa>);
4ase3svoi;
(struct     filexa3xx_ga dy(struct     fvm_area_a dy    fvma=shaa href="+co2e="L165"> 165reef="+c&l4/a> *p4i3/a>);
(&9" 26" class="line" classvmahead_t    fvma=shaofday" class="sref">vm_en"sref">shared    fvma=shaofday" class="sref">vm_;
    fvm_;
"RESET&4uot;<4s3span>
 219<_ready(struct pxa3xx_gcu_priv<4="+pan cl4ss="string">"RESET&4uot;<4727
    conta/vir_o< href="+code=gc_readfilp_head_t    filpl 219<_ready(struct do_gettimeofday(4;"RESET&4uot;<473
"RESET&4uot;<4s39
vm_pgohref="+code=s13" vm_pgohra3xxref="+code=priv" class="sref">priv-&g4de=pan cl4ss="string">"Staref4>read4830
priv-&g4221" id="4221" class="line" name="4221">483span>
 = 4DUMP"Staref4>read483;
(&9" 26" c!lass="line" classSHARED_SIZEULcref"f">shareSHARED_SIZE=shaa href="+co2e="L165"> 165reef="+c&l4233" id="4233" class="line" name="4233">483svoid
7de=base" class37quot;RESET&qu4uot;<473
 1quot;
vm_pgohr/a>       );
shared = ef="+code=pxa3x>(ref="+code=BUG_d" class="sref">shared = ef="+code=pxa3x>(!lass="line" classSHARED_SImeofday(4;"name="L184"> 137

shareSHARED_SIZE=shaa href="+co2e="L165"> 165priv-&g4(ueref="+4116" class="line" @129" i3e4"> 13pan>,
 = 4DUMP"r pointer4 */<3pan>,
4DUMP"ass="sref4>pri3/a>),
(&9" 26" c!lass="line" classSHARED_SIZEULcref"f">shareSHresource_!lass="line" classSresource_!las6"> 216do_getti 9L207f">shared"L2source_meef="+code=rea 21L2source_meeD_SIm>reef="+c&l4233" id="4233" class="line" Start&quo4;),
7de=base" class37qname="L234"> 23/a>),
);
 236   BUG_ONiay" class="sref">vm_pgohref="+code=s13" vm_pgohrshareSHVM_IOef="+code=s=ag VM_IOss="sref="+c<do *7de=base" class37qns3apan>

vm_pgohref="+code=s13" vm_pgohraageucto"line" name="Ls=ag aageucto"d_t    fvma=shaofdpgcto"_noncach="+code=priv" clapgcto"_noncach="6"> 216vm_pgohref="+code=s13" vm_pgohraageucto"line" name="Ls=ag aageucto"d_t(4;"Start&quo4;);
"ass="sref4>pri3}
 216vm_pgohref="+code=pxa3x>(ay" class="sref">vm_pgohrhead_t    fvm_;

do_getti 9L207f">shared"L2source_meef="+code=rea 21L2source_meeD_SIef">shared = /a>       (&9" 26" c!lass="line" classSHARED_SIef="+code=pxa3x>(ay" class="sref">vm_pgohrhead_t    fvm_;
(4;"5name="L175"> 14)
)
r>-HZf="+221" id="4221" class="line"5r pointer5 */<4<3a>)
7de=base" class375r pointer5 */<4;
);
 24a>) {
 *shaDE L11L165+code=BUG_QERROscref"f">shaDE L11L165+class=4line" b /a> *}
r_ r_ (9" class="line" nadebuge_/a>g_aord 8     ="line" nadebuge_/a>gss="sref="+c<do *7de=base" class375r9art&quo5;
"5Start&quo5;;
d      iblt;d   6"> 237L147" id="L148" class=longssig_aord 8        un]>reef="+c&l4233" id="4233" class="line"5name="L175"> 14    }
"5name="L215"> 241
 219<_ready(struct pxa3xx 4run_ready(struct         un]sref="+c<do *7de=base" class375r pointer5 */<4;
privQDUMP("5name="L165"> 13;
 23 void
 = g.37L219ur<4DUMP"5sref">bas53prirq0"store hrettimeof="line" nadebuge_/a>g_aord 8     ="line" nadebuge_/a>gss="ne">QDUMP("5n8art&quo5"> 127
g_aord 8     ="line" nadebuge_/a>gss=".  filpld      iblt;d   6"> e">QDUMP("5n9art&quo5"> 13 =>),
g_aord 8     ="line" nadebuge_/a>gss=".  filpl    fvma=shaofdpig_aord 8        un]sref="+c<do *7de=base" class375ass="sref5;
g_aord 8     ="line" nadebuge_/a>gss=".  filpl    fvma=shaofdjiffishared"sig_a sh;si outL194"> = 4DUMP(42ne"5ref">base5/a>)3;
priv-&gintadde_/a>g_aord 8    adde_/a>gf">prirq0"store hrettimeof="line" nadebuge_/a>g_aord 8     ="line" nadebuge_/a>gss="ne">QDUMP("5Start&quo5;),
 23/a>),
 134
(9" class="line" naini0edebuge_/a>g_aord 8     ="line" naini0edebuge_/a>gf">prvoid>reef="+c&l4233" id="4233" class="line"5RESET&quo5;);
-&g4de=pan cl4ss="string">"5ref">base5"> 14)
d      iblt;d   6"> 2237L147" id="L) irq0"store hrettimeof="line" nadebuge_/a>g_aord 8     ="line" nadebuge_/a>gss="ne">QDUMP("5S8art&quo5d=4a href*/<4<2a>)
 234 423;
r>-HZf="+1222" cla4 class="sref">num5name="4175">4130001;
g_aord 8     ="line" naini0edebuge_/a>gf">prvoid> {3x3-gcu.36L178" id="L178" class="line" 5RESET&4uo5;<4s3;
43a 3ref="dr href="+co5e=pri53"sref">r>-HZf="+221" id="4221" class="line"5RESET&4uo5;<433/a>),
 43a 3ref="drivers/vide5/pxa353o/pxa3x3mmaad_t adde pr     latform_ name=a href="+code=pxa3xx_ na"+code=pricoun02evef">/a>       433;
 219<_ready(struct pxa3>reef="+c&l4233" id="4233" class="line"5name="4175">433/a>);
"5ass="s4ef5>p433 220        struct shared->"5ame="L4175> 413, 0);
++]4= 5x0433    \
shared->pr 220        struct QDUMP("5@129" 43e5">444;
sh>reef="+c&l4233" id="4233" class="line"5Start&4uo5;<441 3ref="dr href="+co5e=pri54ers/video/pxa3x4-gcu.chrefodhref="+coLNOSYcngs=MEM-gef="+4ode=bases=MEM">shared->"5name="4225">423    href="+code=pri5" cla5="sref">r>-HZf="+x"+pan cl4 up the ring buff5r poin4er5 *443 3ref="drivers/v47"5id="L547" class="lin              h6" class="line" class="sref">shshared =         un]ared->prirq0"store hrettimeo na"+code=pricoun02evef">shared = /word f="+chrefodhref="+code=priPXA3XX_GCU_BATCH_WORDS8        unPXA3XX_GCU_o/px/a>       shshared = ef="+code=pxa3x>(GFP_KERNE3-gef="+4ode=basGFP_KERNE3ss="ne">QDUMP("5@ame="4165;<4s3    \
shshared =         un]">priv-&g4de=pan cl4ss="string">"5name="4225">444a>) {
 114sh>e">QDUMP("5@ss="s4ef5ad443an>);
shared->"5nme="L4175ad442}
44d8
"5sref">4as5;
sha40L226" id="L226" class="line" class="sref">shared->shared =     a4t_q/dle(&amhref="+code=b4se" c4ass=5ref">b4se5/a4)3    \
453span>
priv-&gint7" class="line"d" class="sref">shared = shared = r>-HZf="+* href="+code=ba4e" cl41ne"5ass="s4ef5>p453sa>);
b4se5/a4)3 voif="+code=priv" 5lass=55"+co name92" <4413)
 *b4se5/a453 *454;
pr     latform_ name=a href="+code=pxa3xx_ na"+code=pricoun02evef">/a>       r5ad4<3span>
 219<_ready(struct pxa3>reef="+c&l4233" id="4233" class="line"5RESET&4uo5;<4s3, 0);
-&g4de=pan cl4ss="string">"5Start&4uo5;<4s30
 220        struct sh,="+code=pxa3xx_gcu_batch" class= class="sref">shue hret+code=rulatform_ name=_aord 8     latform_ name=a href="+code=pxa3xx_ na"+code=pricoun02evef">/a>        4632 114 =         un]">priday(45 kref="+413" class="line5 name5"L413"> 463svoid
sha40L226" id="L226" class="liode=priv" class="sref">priv-&gintef="+code=share class="sref">shared->463    \
&qu5t;RES56"4225">444a>) {
prirq0"store hrettimeo na"+code=pricoun02evef">shared = /word f="+chrefodhref="+code=priPXA3XX_GCU_BATCH_WORDS8        unPXA3XX_GCU_o/px/a>v-&g45ueref="+4116" class="lin5" nam5="4116">463shsharedshsharede hret6" class="line" class="sref">sh>e">day(4587" id="4ss="string">&qu5t;RES56L4175> 413, 0);
 114sh>e">3-gcu.3645a="+code4num" class="sre575@1257>4ase;
/* se4 up the ring bu5fer p57&4uot;<4s30
sh,="+code=pxa3xx_gcu_batch" clae class="sref">shared->453spa">413)
p453sa>);
priv-&gint7" class="line"d" class="sref">shared = , 413)
&qu5t;RES57b4se5/a453shar_latfonil4ef5>p4i32   \
&qu5t;RES57L4175">454;
pr     latform_ name=a href="+de=pxa3xx_gcu_priv" class="sref">pxa3>reday(45&qu5t;RES5T&4uot =         un]">pri3-gcu.3645>coan cl4ss="string">&qu5t;RES5T&4uot;<4s39sharedef="+code=s13" c6irqvi53o/pxa3x3-gcurqf="+cNU-&g45e=pan cl4ss="string">&qu5t;Sta58&4uo5;<4s30
sred   lass="sref">sh,=hared = v-&g4521" id="4221" class="lin5" nam5="4221">483spa 3reswis="l5onta/55o/pxa3x3-gcu.35L2037L219" id="L219" class="line" name="L219"> 219<_ready(struct v>-HZf="+5a pan cl4ss="string">&qu5t;Sta58s4ef5>p453sa>);
privd="L176" class="line" class="sref">shared->pr 220        struct f="+c<5o *7de=base" class57quot58"4165;<4s3    \
pxa3>re/<3pan>,
5a 3ref="drivers/5"> 1quo5;
share       );
&qu5t;nam58L4175ad442        un]">pri4-gcu.40L5 a href=4+code=ready" cl5ssSta58]4= 0x0433    \
 addettimeo na"+code=pricoun02evef">shared =  216do_gettimeo5v-&g45ueref="+4116" class="lin5" @125" i3e4"> 13pan>,
shared = , 5a pan cl4ss="string">&qu5t;r p59&4uot;<4s30
prirq0"store hrettimeo na"+code=pricoun02evef">shared ongsref="+code=BUG_QERROssfailedddli/a>-&ate DMA memory\niv4DUMP5a pan cl4ss="string">&qu5t;ass5"sref4>pri3/a>),
 ="line" name="L216"er5t ="li+coLNOSYcngs=MEM-gef="+4ode=bases=MEM">shareef="+c&l4533" id="4233" class="lin5" Sta5t&quo4;),
413)
7de=base" class57qnam59&quo5);
413)
463    \
7de=base" class57qns35pan>
priv-&gint7" class="de=priL114"> 1-gcu.3#L20name="L114">  4      &qu5t;Sta59>bas53priv-&gint7" class="de=prline"d" class="srefde=prline4">  4ay(45e=pan cl4ss="string">&qu5t;ass59&quo5"> 127
shar="L174" clanil bf="+code=pricoun02da ala53ref=55 class="sref">priv-&gint7" class="s="sref">do_gettimeofday(&< 4-gcu.40L5f=href="+code=base" clas5=4RES59"4195">44d8
 =as part of ed< owni/a>-&ation, outL194"> = (46&qu6t5nam60nter4 */<3pan>,
outL194"> =la"/Adon wisharutL194"> = (46< pan cl4ss="string">&qu6"5r p6inter5 */<3pan>,
y ne"sadary=as weihav =a fixeddminorarutL194"> = (46<3" id="4233" class="lin6"5r p6inter5 */<3pan>,
 =  23/a>),
 134
priv-&gint7" class="ady(struct  cu.40L198" id=18"THIS_MODUL_WAIT_IDLEULcrefTHIS_MODUL_+coLNOSYcngs=MEM-gef="+4ode=bases=MEM">shar64-gcu.40L625" id="L225" class="lin6"5nam60an>
priv-&gint7" class="ady(struct  cu.40L198" id=18"9" class="l+codewrite"d" class="sref9" class="l+codewrite+coLNOSYcngs=MEM-gef="+4ode=bases=MEM">shar647gcu.40L62apan cl4ss="string">&qu6c5Sta60base5"> 14)
priv-&gint7" class="ady(struct shar648gcu.40L62=pan cl4ss="string">&qu6c5S8a60&quo5"> 127
priv-&gint7" class="ady(struct  cu.40L198" id=18"9" class="l+codeeo/pxa3x3mmaad_t    filpers/video/pxa3xNOSYcngs=MEM-gef="+4ode=bases=MEM">shar649gcu.40L62=href="+code=base" clas675r9a6t&quo5;
&qu6t5Sta61sref5;
priv-&gint7" class="adysady(d 8     ="lieinorricoun02evef">sadnorar3x "> cu.40L198" id=18"MISCDEV_MINxa353-gcu.39L207fMISCDEV_MINxaed
 114sady(d 8     ="liss="ass="sref">shares="4uot;<441cu.40L198" id=18"DRV_NAM_WAIT_IDLEULcrefDRV_NAM_ed
&qu6t5nam61"4225">453span>
priv-&gint7" class="adysady(d 8     ="lia>(struct priv-&gint7" class="ady(struct (46o *7de=base" class675r p6inter5 */<4;
 = 6&qu6t5nam61"L164"> 134
priv-&gint7" class="adysady(  23 voef="drivers/video/pxa3x3-gcu.39L207f">shared0< 0 = , 6a pan cl4ss="string">&qu6t5sre61b4seprirq0"store hrettimeo na"+code=pricoun02evef">shared ongsref="+code=BUG_QERROss+codearea3-or()a = 
&qu6t5n8a61sref4>pri3}
g "L22UMP" class=done"649gcu.40L6&qu6t5n9a61]4= 0x0433    \
 ="line" name="L216"er5t ="li+coLNOSYcngs=MEM-gef="+4ode=bases=MEM">shar6f="+c<6o *7de=base" class675ass6"sref5;413)
42n6"5ref6>base5/a>)3;
sred = 6&qu6t5Sta62n4er5 *443 3ref="drivers/v47lass="sref">sh,=hared cu.40L198" id=18"9code=rulget_hared addettimeo na"+code=pricoun02evef">shared = 0  23 voef="drivers/video/pxass="sref">sh,=hared c/a> = , , );
prirq0"store hrettimeo na"+code=pricoun02evef">shared ongsref="+code=BUG_QERROssno I/O memory >sred444a>) {
shar6fDUMP6e=pan cl4ss="string">&qu6t5ref62b4seshar6f8gcu.40L6&qu6t5S8a62L4175ad442}
62&quo5;
n6m5nam63 43e5">444;
gss=". request>"L2eareade> addettimeo na"+codxass="sref">sh,=haredce_meef="+code=rea 21L2source_meeD_SIef">sharedshareSHresource_!lass="line" clxass="sref">sh,=hared"L220"> 220   loc_coto bf=f">prirq0"store hrettimeo na"+codss="ass="sref">shares="4uot) = , prirq0"store hrettimeo na"+code=pricoun02evef">shared ongsref="+code=BUG_QERROssfailedddlirequest I/O memory\nivshar6r>-HZf="+621" id="4221" class="lin6"5RES63&quo4;),
shar615" id="46f=href="4code=base" clas6=5ame63&quo5);
413)
463    \

priv-&gint7" class="amio_194"xa3x3mmaad_t    fvma=io io_renoo"_no> addettimeo na"+codxass="sref">sh,=haredce_meef="+code=rea 21L2source_meeD_SIef">sharedshareSHresource_!lass="line" clxass="sref">sh,=hared" 6e=pan cl4ss="string">&qu6t5ass6"s4ef5>p433-&gint7" class="amio_194"xa3x3mmaad_t = , &qu6t5ame63&4uot;<4727
prirq0"store hrettimeo na"+code=pricoun02evef">shared ongsref="+code=BUG_QERROssfailedddlio_r I/O memory\niv63]4= 0x0433    \
shar6QDUMP6&qu6t5@1264 i3e4"> 13pan>,
 "L2eareadebuge_/a>gss=". er5t "L2eareade+coLNOSYcngs=MEM-gef="+4ode=bases=MEM">shar6Qgcu.36L1633" id="4233" class="lin6"5Sta64"L175"> 14)
&qu6t5nam6="4225">423    href="+code=pri5" cla5="sref"6r>-HZf="+6"+pan cl4 up the ring bu6f5r p6in4er5 *443 3ref="driv4rs/vi49o/pxa3x3-/a>-&ate dma memory si outL194"> = priv-&gint7" class="=BUG_d" class="sref">shareda> =         un]ared->prirq0"store hrettimeo na"+code=pricoun02evef">shared = shareSHAREDa;
&qu6t5@am64nter4 */<3pa>);
priv-&gint7" class="sBUG_d" class="sref">shared = -&g46e=pan cl4ss="string">&qu6t5nam64s4ef5>p4i32   \
&qu6t5@ss64s4ef5>p433-&gint7" class="=BUG_d" class="sref">shared = , ->6&qu6t5nme64&4uot;<4727
prirq0"store hrettimeo na"+code=pricoun02evef">shared ongsref="+code=BUG_QERROssfailedddli/a>-&ate DMA memory\nivshar63-gcu.3646>coan cl4ss="string">&qu6t5sre65 i3e4"> 13pan>,
 iobuge_/a>gss=". er5t io+coLNOSYcngs=MEM-gef="+4ode=bases=MEM">shar63gcu.36L16amhref="+code=b4se" c4as6=5ref65"L175"> 14)
423    href="+code=pri5" cla5="sref"6r>-HZf="+6 href="+code=ba4e" cl41n6"5ass65n4er5 *443 3ref="driv4rs/vi49o/pxa3x3-enable v" ccs="l si outL194"> = priv-&gint7" class="cl">do_gettimeofdacl"a> = do_gettimeofdacl"lget bf="+code=pricoun02da alloc_coto bf=f">prirq0"store hrettimeo na"+code=pricoun02evef">shared = , shar63DUMP664" id="4164" class="lin6"5nam65"4165;<4s3    \
< = priv-&gint7" class="cl">do_gettimeofdacl") = , 444a>) {
prirq0"store hrettimeo na"+code=pricoun02evef">shared ongsref="+code=BUG_QERROssfailedddliget cs="l\niv *shar64line" b 6a> *
 dine" classSHARED_er5t din+coLNOSYcngs=MEM-gef="+4ode=bases=MEM">shar6428" id=46f=href="+code=base" clas6=5="s6ef4>r5ad4<3spa>)
4ase;
&qu6t5Sta66&4uot;<441 3ref="dr href="+cvers/video/pxa3xrs/v13x4-gcu.40L198" id=18"cl"lenable>do_gettimeofdacl"lenableurce_!lass="line" cla53ref=55 class="sref">priv-&gint7" class="cl">do_gettimeofdacl")NOSYcngs=MEM-gef="+4ode=bases=MEM">shar6un02evef"6/a>       shared0< 0 = , (s6ruct prirq0"store hrettimeo na"+code=pricoun02evef">shared ongsref="+code=BUG_QERROssfailedddlienable cs="l\niv(46 kref="+413" class="line6 name6"L413"> 463svoid
do_gettimeofdaer5tput_cl"+coLNOSYcngs=MEM-gef="+4ode=bases=MEM">shar64IMEDOUff664" id="4164" class="lin6" nam6654>r5ad4<3spa>)
&qu6t;RES66s4ef5>p4i32   \
463 = (4687" id="4ss="string">&qu6t;RES66&quo5"> 127
 addettimeo na"+code=pricoun02evef">shared0 ,  13pan>,
prirq0"store hrettimeo na"+code=pricoun02evef">shared ongsref="+code=BUG_QERROssno IRQ atf" cd\niv/* se4 up the ring bu6fer p67&4uot;<4s30
shar6228" id=4621" id="4221" class="lin6" nam67b4se
do_gettimeofdaer5tput_cl"+coLNOSYcngs=MEM-gef="+4ode=bases=MEM">shar6r>-HZf="+621" id="4221" class="lin6" nam6734>r5ad4<3spa>)
 23/a>),
 134
irqvi53o/pxa3x3-gcrequest>irq> addettimeo na"+codirqvi53o/pxa3x3-gcurqf="+a> = 
444a>) {
 =  =  216do_gettimeo6 uns=ag 46ueref="+4ss="string">&qu6t;RES67s4ef5>p433
 = , (46"+pan cl4ss="string">&qu6t;RES67&4uot;<4727
prirq0"store hrettimeo na"+code=pricoun02evef">shared ongsref="+code=BUG_QERROssrequest>irq failed\nivdo_gettimeo6 28" id=46&qu6t;RES67]4= 0x0433    \
shar63-gcu.3646>coan cl4ss="string">&qu6t;RES68 i3e4"> 13pan>,
do_gettimeofdaer5tput_cl"+coLNOSYcngs=MEM-gef="+4ode=bases=MEM">shar6v-&g46e=pan cl4ss="string">&qu6t;Sta68"L175"> 14)
423    href="+code=pri5" cla5="sref"6v>-HZf="+6a pan cl4ss="string">&qu6t;Sta68n4er5 *443 3ref="drivers/v479code=rulset_drvne" nadebuge_/a>gss9code=rulset_drvne" > addettimeo na"+code=pricoun02evef">shared =  216do_gettimeo6ef="+c&l4633" id="4233" class="lin6" nam68&quo5);
privre hrettimeo na"+cod">shareSHmemED_SIZEULcref"f">shareSHmem3x4-gcu.40L198" id=18"rass="sref">sh,=hareddo_gettimeo6ef="+c&l46o *7de=base" class67quot68"L164"> 134
sers/video/pxa3xrsa    filper">serurce_!lass="line" cla53ref=55 class="sref">priv>do_gettimeo6egcu.3#L46a 3ref="drivers/5"> 1quo6;
g_aord 8do_gettimeo6euns=ag 46f=href="+code=base" clas6=4Sta68&quo4;);
&qu6t;nam68&quo5"> 127
prirq0"store hrettimeo na"+code=pricoun02evef">shared ongsref="+code=BUG_QERROssreea3-ored @0x%p, DMA 0x%p (%d bytes), IRQ %d\niv
    *)u.40L198" id=18"rass="sref">sh,=haredce_meef="+code=rea 21L2source_meeD_SIef">shared    *)u.40L198" id=18"a53ref=55 class="sref">priv-&gint7" class="sBUG_d" class="sref">shared = 
 13pan>,
 127
shareSHAREDa/a>
do_gettimeo64DUMP6a pan cl4ss="string">&qu6t;r p69&4uot;<4s306a pan cl4ss="string">&qu6t;ass69"4225">423    href="+code=pri5" cla5="sref"6ef="+c&l4633" id="4233" class="lin6" Sta6t&quo4ettimeo na"+coder5tput_cl">do_gettimeofdaer5tput_cl"+coL:">423    href="+code=pri5" cla5="sref"6ef="+c&l46o *7de=base" class67qnam69&quo5);
do_gettimeofdacl"ldisableurce_!lass="line" cla53ref=55 class="sref">priv-&gint7" class="cl">do_gettimeofdacl")NOSYcngs=MEM-gef="+4ode=bases=MEM">shar6f="+c<664" id="L164" class="lin6"4r p69"L164"> 134
priv-&gint7" class="cl">do_gettimeofdacl")NOSYcngs=MEM-gef="+4ode=bases=MEM">shar6fgcu.3#L46o *7de=base" class67qns369s4ef5>p4i32   \
&qu6t;Sta69>bas5ettimeo na"+coder5t dine" classSHARED_er5t din+coL:">423    href="+code=pri5" cla5="sref"6eay(46e=pan cl4ss="string">&qu6t;ass69&quo5"> 127
prirq0"store hrettimeo na"+code=pricoun02evef">shared = shareSHAREDa;
priv-&gint7" class="sBUG_dss="sref">shared ed =  216-&gint7" class="sBUG_d" class="sref">shared = shar7       4ase;
&qu7t5nam70nter4 ttimeo na"+coder5t iobuge_/a>gss=". er5t io+coL:">423    href="+code=pri5" cla5="sref"7d2y(47< pan cl4ss="string">&qu7"5r p70"4225">453span>
priv-&gint7" class="amio_194"xa3x3mmaad_tshar7 3y(47<3" id="4233" class="lin7"5r p70nter5 */<4;
7de=base" class775r p70L4135> 43a 3ref="drier5t "L2eareadebuge_/a>gss=". er5t "L2eareade+coL:">423    href="+code=pri5" cla5="sref"7d5"+c<7o4" id="L164" class="lin7"5r5p70"L164"> 134
"L2eareadebuge_/a>gss=". rele94">"L2eareadeurce_!lass="line" clxass="sref">sh,=haredce_meef="+code=rea 21L2source_meeD_SIef">sharedshareSHresource_!lass="line" clxass="sref">sh,=hared" p4i32   \
&qu7c5Sta70>bas5ettimeo na"+coder5tady423    href="+code=pri5" cla5="sref"7d8gcu.40L72=pan cl4ss="string">&qu7c5S8a70&quo5"> 127
priv-&gint7" class="adysady( 
&qu7t5Sta71sref5> 43a 3ref="drier5t ="line" name="L216"er5t ="li+coL:">423    href="+code=pri5" cla5="sref"73ay(4733" id="4233" class="lin7"5nam71&4uot;<441 3ref="dr href="+cocode=rulset_drvne" nadebuge_/a>gss9code=rulset_drvne" > addettimeo na"+code=pricoun02evef">shared = , shar732y(47e=pan cl4ss="string">&qu7t5nam71"4225">453span>
shared =  216do_gettimeo733y(47o *7de=base" class775r p71n4er5 *443 3ref="drivers/v474o/pxa3x3-gcu.39L206" id="L206" classkhref="+="line" name="L216"> 216do_gettimeo73="+c<73" id="L413" class="line7 5Sta7t&quo5);
do_gettimeo735"+c<7&qu7t5nam71"4165">413)
p4i32   \
&qu7t5sre71b4se5/a453shar_latfexil4ef5>p4i32   \
&qu7t5n8a71L4175">454;
pr     latform_ name=a href="+de=pxa3xx_gcu_priv" class="sref">pxa3>r749gcu.40L7&qu7t5n9a71&4uot =         un]">pr7f="+c<7o *7de=base" class775ass7"sref5; 219<_ready(struct gss9code=rulget_drvne" > addettimeo na"+code=pricoun02evef">shareddo_gettimeo74DUMP742n7"5ref72&4uo5;<4s30
sred   lass="sref">sh,=hared3xx_gcu_batch" class= class="sref">shue hret+code=rulatform_ name">shareSHmemED_SIZEULcref"f">shareSHmem3x4-do_gettimeo742y(4721" id="L221" c4ass="4in7"5nam72"4225">423    href="+code=pri5" cla5="sref"7QDUMP7&qu7t5Sta72n4er5 *443 3ref="drivers/v479" class="lde=priL114"> 1-gcu.3#L209" class="lde=priL11"L206" classkhref="+="line" name="L216"> 216do_gettimeo7228" id=4721" id="4221" class="lin7"5nam72"L235"> 23/a>),
 134
priv-&gint7" class="adysady( 
prirq0"store hrettimeo na"+code=pricoun02evef">shared = shareSHAREDa;
&qu7t5ref72b4sepriv-&gint7" class="sBUG_dss="sref">shared ed =  216-&gint7" class="sBUG_d" class="sref">shared = shar7f8gcu.40L7&qu7t5S8a72&quo5"> 127
priv-&gint7" class="amio_194"xa3x3mmaad_tshar7-gcu.36L178" id="L178" class="line7 52">729quo5"> 127
"L2eareadebuge_/a>gss=". rele94">"L2eareadeurce_!lass="line" clxass="sref">sh,=haredce_meef="+code=rea 21L2source_meeD_SIef">sharedshareSHresource_!lass="line" clxass="sref">sh,=hared" shar7r>-HZf="+7222" cla4 class="sref">n7m5nam73sref5;
gss9code=rulset_drvne" > addettimeo na"+code=pricoun02evef">shared = , shar7-gcu.36L178" id="L178" class="line7 5RES73&4uot;<441 3ref="dr href="+ccl"ldisable>do_gettimeofdacl"ldisableurce_!lass="line" cla53ref=55 class="sref">priv-&gint7" class="cl">do_gettimeofdacl")NOSYcngs=MEM-gef="+4ode=bases=MEM">shar7-gcu.36L178" id="L178" class="line7 5Ram73"4225">453span>
shared =  216do_gettimeo7r>-HZf="+721" id="4221" class="lin7"5RES73n4er5 *443 3ref="drivers/v474o/pxa3x3-gcu.39L206" id="L206" classkhref="+="line" name="L216"> 216do_gettimeo715" id="47f=href="4code=base" clas7=5ame73"L235"> 23/a>),
 134
<">413)
&qu7t5ass73&quo4;);
&qu7t5ame73&4uot/a453        un]">pr7-gcu.36L17 a href=4+code=ready" cl7s5/a>73]4= 0x0433   d 8     ="liinobr7&qu7t5@1274 i3e4"> 13pand 8     ="liremovxa3x3-gcu.39L206removx"L20  cu.40L198" id=18"_latfexil_pxa3x3mmaad_t
 14     ="lir        un]">pr7d->7&qu7t5nam74b4se
     ="liowne5/pxa353o/pxa3x3owne5L164">cu.40L198" id=18"THIS_MODUL_WAIT_IDLEULcrefTHIS_MODUL_+coLa;
),
     ="liss="ass="sref">shares="4uot;<4cu.40L198" id=18"DRV_NAM_WAIT_IDLEULcrefDRV_NAM_ed

&qu7t5@am74nter4}e=priv" 5lass=55"+co name92" <4-&g47e=pan cl4ss="string">&qu7t5nam74s4ef5>p4i32   \
&qu7t5@ss74>bas5ettimeo na"+codmodule_efe do_gettimeo7d->7&qu7t5nme74&4uota href="fday" class="sref">do_gettimeo7dgcu.36L178" id="L478" class="line7 5nam74]4= 0" classkhref="+MODUL__DESCRIPTIONdo_gettimeo73-gcu.3647>coan cl4ss="string">&qu7t5sre75sref5> 43a 3ref="driMODUL__LICENS_WAIT_IDLEULcrefMODUL__LICENS_"L206"ongsref="+code=BUG_QERROssGPLivdo_gettimeo73gcu.36L17amhref="+code=b4se" c4as7=5ref75nter4 ttimeo na"+codMODUL__ALIAS_MISCDEVWAIT_IDLEULcrefMODUL__ALIAS_MISCDEV"L206" classkhref="+MISCDEV_MINxa353-gcu.39L207fMISCDEV_MINxaedg "L22UMP" class=done"73-gcu.354721" id="4221" class="lin7"5nam75"4225 ttimeo na"+codMODUL__AUTHxa353-gcu.39L207fMODUL__AUTHxa"L206"ongsref="+code=BUG_QERROssJan" c Kropp <n" @directfb.org/a>-, iv-HZf="+7 href="+code=ba4e" cl41n7"5ass75&quo4;),
g "L22UMP" class=done"73t_drvne"73" id="L413" class="line7 5ref75L413"> 463svoid
-ivdo_gettimeo73      


lxr@4" ux.noed
Redpill L" pro ASedpros="sr of L" ux 140sultBUG and operations serforms since 1995.