linux/drivers/rtc/rtc-ep93xx.c
<<
.4" /spatio /formio a .4" href="../linux+v3 v41/drivers/rtc/rtc-ep93xx.c">.4" img src="../.static/gfx/right.png" alt=">>">.4 /spatio.4 spat class="lxr_search">.4" .4" input typaluhidden" namalunavtarget" on valu">.4" input typalutext" namalusearch" idlusearch">.4" buttptitypalusubmit">Search.4" Prefso /a>.4 /spatio" /divio" form ac/opt="ajax+*" method="post" onsubmit="return false;">.4 input typaluhidden" namaluajax_lookup" idluajax_lookup" on valu">." /formio." div class="headingbottpm">o div idlufile_contents"i
   1
/a>
spat class="comment">/*
/spatio   2
/a>
spat class="comment"> * A driver for the RTC embedded in the Cirrus Logic EP93XX processors
/spatio   3
/a>
spat class="comment"> * Copyright (c) 2006 Tower Technologies
/spatio   4
/a>
spat class="comment"> *
/spatio   5
/a>
spat class="comment"> * Author: Alessandro Zummo <a.zummo@towertech.it>
/spatio   6
/a>
spat class="comment"> *
/spatio   7
/a>
spat class="comment"> * This program is free software; you cat redistribute it and/or modify
/spatio   8
/a>
spat class="comment"> * it under the terms of the GNU General Public License versopti2 as
/spatio   9
/a>
spat class="comment"> * published by the Free Software Founda/opt.
/spatio  18.1a>
spat class="comment"> */
/spatio  11
/a>o  12
/a>#include <linux/module.h
/a>>o  13
/a>#include <linux/rtc.h
/a>>o  14
/a>#include <linux/platform_device.h
/a>>o  15
/a>#include <linux/io.h
/a>>o  16
/a>#include <linux/gfp.h
/a>>o  17
/a>o  18
/a>#define 
a href="+code=EP93XX_RTC_DATA" class="sref">EP93XX_RTC_DATA
/a>                 0x000o  19
/a>#define 
a href="+code=EP93XX_RTC_MATCH" class="sref">EP93XX_RTC_MATCH
/a>                0x004o  20
/a>#define 
a href="+code=EP93XX_RTC_STATUS" class="sref">EP93XX_RTC_STATUS
/a>               0x008o  21
/a>#define  
a href="+code=EP93XX_RTC_STATUS_INTR" class="sref">EP93XX_RTC_STATUS_INTR
/a>          (1<<0)o  22
/a>#define 
a href="+code=EP93XX_RTC_LOAD" class="sref">EP93XX_RTC_LOAD
/a>                 0x00Co  23
/a>#define 
a href="+code=EP93XX_RTC_CONTROL" class="sref">EP93XX_RTC_CONTROL
/a>              0x010o  24
/a>#define  
a href="+code=EP93XX_RTC_CONTROL_MIE" class="sref">EP93XX_RTC_CONTROL_MIE
/a>          (1<<0)o  25
/a>#define 
a href="+code=EP93XX_RTC_SWCOMP" class="sref">EP93XX_RTC_SWCOMP
/a>               0x108o  26
/a>#define  
a href="+code=EP93XX_RTC_SWCOMP_DEL_MASK" class="sref">EP93XX_RTC_SWCOMP_DEL_MASK
/a>      0x001f0000o  27
/a>#define  
a href="+code=EP93XX_RTC_SWCOMP_DEL_SHIFT" class="sref">EP93XX_RTC_SWCOMP_DEL_SHIFT
/a>     16o  28
/a>#define  
a href="+code=EP93XX_RTC_SWCOMP_INT_MASK" class="sref">EP93XX_RTC_SWCOMP_INT_MASK
/a>      0x0000ffffo  29
/a>#define  
a href="+code=EP93XX_RTC_SWCOMP_INT_SHIFT" class="sref">EP93XX_RTC_SWCOMP_INT_SHIFT
/a>     0o  30
/a>o  31
/a>#define 
a href="+code=DRV_VERSION" class="sref">DRV_VERSION
/a> 
spat class="string">"0.3"
/spatio  32
/a>o  33
/a>
spat class="comment">/*
/spatio  34
/a>
spat class="comment"> * struct device dev.platform_data is used to store our private data
/spatio  35
/a>
spat class="comment"> * because struct rtc_device does not have a variable to hold it.
/spatio  36
/a>
spat class="comment"> */
/spatio  37
/a>struct 
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a> {o  38
/a>        void 
a href="+code=__iomem" class="sref">__iomem
/a>    *
a href="+code=mmio_base" class="sref">mmio_base
/a>;o  39
/a>        struct 
a href="+code=rtc_device" class="sref">rtc_device
/a> *
a href="+code=rtc" class="sref">rtc
/a>;o  40
/a>};o  41
/a>o  42
/a>static int 
a href="+code=ep93xx_rtc_get_swcomp" class="sref">ep93xx_rtc_get_swcomp
/a>(struct 
a href="+code=device" class="sref">device
/a> *
a href="+code=dev" class="sref">dev
/a>, unsigned short *
a href="+code=preload" class="sref">preload
/a>,o  43
/a>                                unsigned short *
a href="+code=delete" class="sref">delete
/a>)o  44
/a>{o  45
/a>        struct 
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a> *
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a> = 
a href="+code=dev" class="sref">dev
/a>->
a href="+code=platform_data" class="sref">platform_data
/a>;o  46
/a>        unsigned long 
a href="+code=comp" class="sref">comp
/a>;o  47
/a>o  48
/a>        
a href="+code=comp" class="sref">comp
/a> = 
a href="+code=__raw_readl" class="sref">__raw_readl
/a>(
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a>->
a href="+code=mmio_base" class="sref">mmio_base
/a> + 
a href="+code=EP93XX_RTC_SWCOMP" class="sref">EP93XX_RTC_SWCOMP
/a>);o  49
/a>o  50
/a>        if (
a href="+code=preload" class="sref">preload
/a>)o  51
/a>                *
a href="+code=preload" class="sref">preload
/a> = (
a href="+code=comp" class="sref">comp
/a> & 
a href="+code=EP93XX_RTC_SWCOMP_INT_MASK" class="sref">EP93XX_RTC_SWCOMP_INT_MASK
/a>)o  52
/a>                                >> 
a href="+code=EP93XX_RTC_SWCOMP_INT_SHIFT" class="sref">EP93XX_RTC_SWCOMP_INT_SHIFT
/a>;o  53
/a>o  54
/a>        if (
a href="+code=delete" class="sref">delete
/a>)o  55
/a>                *
a href="+code=delete" class="sref">delete
/a> = (
a href="+code=comp" class="sref">comp
/a> & 
a href="+code=EP93XX_RTC_SWCOMP_DEL_MASK" class="sref">EP93XX_RTC_SWCOMP_DEL_MASK
/a>)o  56
/a>                                >> 
a href="+code=EP93XX_RTC_SWCOMP_DEL_SHIFT" class="sref">EP93XX_RTC_SWCOMP_DEL_SHIFT
/a>;o  57
/a>o  58
/a>        return 0;o  59
/a>}o  60
/a>o  61
/a>static int 
a href="+code=ep93xx_rtc_read_time" class="sref">ep93xx_rtc_read_time
/a>(struct 
a href="+code=device" class="sref">device
/a> *
a href="+code=dev" class="sref">dev
/a>, struct 
a href="+code=rtc_time" class="sref">rtc_time
/a> *
a href="+code=tm" class="sref">tm
/a>)o  62
/a>{o  63
/a>        struct 
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a> *
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a> = 
a href="+code=dev" class="sref">dev
/a>->
a href="+code=platform_data" class="sref">platform_data
/a>;o  64
/a>        unsigned long 
a href="+code=time" class="sref">time
/a>;o  65
/a>o  66
/a>         
a href="+code=time" class="sref">time
/a> = 
a href="+code=__raw_readl" class="sref">__raw_readl
/a>(
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a>->
a href="+code=mmio_base" class="sref">mmio_base
/a> + 
a href="+code=EP93XX_RTC_DATA" class="sref">EP93XX_RTC_DATA
/a>);o  67
/a>o  68
/a>        
a href="+code=rtc_time_to_tm" class="sref">rtc_time_to_tm
/a>(
a href="+code=time" class="sref">time
/a>, 
a href="+code=tm" class="sref">tm
/a>);o  69
/a>        return 0;o  70
/a>}o  71
/a>o  72
/a>static int 
a href="+code=ep93xx_rtc_set_mmss" class="sref">ep93xx_rtc_set_mmss
/a>(struct 
a href="+code=device" class="sref">device
/a> *
a href="+code=dev" class="sref">dev
/a>, unsigned long 
a href="+code=secs" class="sref">secs
/a>)o  73
/a>{o  74
/a>        struct 
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a> *
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a> = 
a href="+code=dev" class="sref">dev
/a>->
a href="+code=platform_data" class="sref">platform_data
/a>;o  75
/a>o  76
/a>        
a href="+code=__raw_writel" class="sref">__raw_writel
/a>(
a href="+code=secs" class="sref">secs
/a> + 1, 
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a>->
a href="+code=mmio_base" class="sref">mmio_base
/a> + 
a href="+code=EP93XX_RTC_LOAD" class="sref">EP93XX_RTC_LOAD
/a>);o  77
/a>        return 0;o  78
/a>}o  79
/a>o  80
/a>static int 
a href="+code=ep93xx_rtc_proc" class="sref">ep93xx_rtc_proc
/a>(struct 
a href="+code=device" class="sref">device
/a> *
a href="+code=dev" class="sref">dev
/a>, struct 
a href="+code=seq_file" class="sref">seq_file
/a> *
a href="+code=seq" class="sref">seq
/a>)o  81
/a>{o  82
/a>        unsigned short 
a href="+code=preload" class="sref">preload
/a>, 
a href="+code=delete" class="sref">delete
/a>;o  83
/a>o  84
/a>        
a href="+code=ep93xx_rtc_get_swcomp" class="sref">ep93xx_rtc_get_swcomp
/a>(
a href="+code=dev" class="sref">dev
/a>, &
a href="+code=preload" class="sref">preload
/a>, &
a href="+code=delete" class="sref">delete
/a>);o  85
/a>o  86
/a>        
a href="+code=seq_printf" class="sref">seq_printf
/a>(
a href="+code=seq" class="sref">seq
/a>, 
spat class="string">"preload\t\t: %d\n"
/spati, 
a href="+code=preload" class="sref">preload
/a>);o  87
/a>        
a href="+code=seq_printf" class="sref">seq_printf
/a>(
a href="+code=seq" class="sref">seq
/a>, 
spat class="string">"delete\t\t: %d\n"
/spati, 
a href="+code=delete" class="sref">delete
/a>);o  88
/a>o  89
/a>        return 0;o  90
/a>}o  91
/a>o  92
/a>static const struct 
a href="+code=rtc_class_ops" class="sref">rtc_class_ops
/a> 
a href="+code=ep93xx_rtc_ops" class="sref">ep93xx_rtc_ops
/a> = {o  93
/a>        .
a href="+code=read_time" class="sref">read_time
/a>      = 
a href="+code=ep93xx_rtc_read_time" class="sref">ep93xx_rtc_read_time
/a>,o  94
/a>        .
a href="+code=set_mmss" class="sref">set_mmss
/a>       = 
a href="+code=ep93xx_rtc_set_mmss" class="sref">ep93xx_rtc_set_mmss
/a>,o  95
/a>        .
a href="+code=proc" class="sref">proc
/a>           = 
a href="+code=ep93xx_rtc_proc" class="sref">ep93xx_rtc_proc
/a>,o  96
/a>};o  97
/a>o  98
/a>static 
a href="+code=ssize_t" class="sref">ssize_t
/a> 
a href="+code=ep93xx_rtc_show_comp_preload" class="sref">ep93xx_rtc_show_comp_preload
/a>(struct 
a href="+code=device" class="sref">device
/a> *
a href="+code=dev" class="sref">dev
/a>,o  99
/a>                        struct 
a href="+code=device_attribute" class="sref">device_attribute
/a> *
a href="+code=attr" class="sref">attr
/a>, char *
a href="+code=buf" class="sref">buf
/a>)o 100
/a>{o 101
/a>        unsigned short 
a href="+code=preload" class="sref">preload
/a>;o 102
/a>o 103
/a>        
a href="+code=ep93xx_rtc_get_swcomp" class="sref">ep93xx_rtc_get_swcomp
/a>(
a href="+code=dev" class="sref">dev
/a>, &
a href="+code=preload" class="sref">preload
/a>, 
a href="+code=NULL" class="sref">NULL
/a>);o 104
/a>o 105
/a>        return 
a href="+code=sprintf" class="sref">sprintf
/a>(
a href="+code=buf" class="sref">buf
/a>, 
spat class="string">"%d\n"
/spati, 
a href="+code=preload" class="sref">preload
/a>);o 106
/a>}o 107
/a>static 
a href="+code=DEVICE_ATTR" class="sref">DEVICE_ATTR
/a>(
a href="+code=comp_preload" class="sref">comp_preload
/a>, 
a href="+code=S_IRUGO" class="sref">S_IRUGO
/a>, 
a href="+code=ep93xx_rtc_show_comp_preload" class="sref">ep93xx_rtc_show_comp_preload
/a>, 
a href="+code=NULL" class="sref">NULL
/a>);o 108
/a>o 109
/a>static 
a href="+code=ssize_t" class="sref">ssize_t
/a> 
a href="+code=ep93xx_rtc_show_comp_delete" class="sref">ep93xx_rtc_show_comp_delete
/a>(struct 
a href="+code=device" class="sref">device
/a> *
a href="+code=dev" class="sref">dev
/a>,o 110
/a>                        struct 
a href="+code=device_attribute" class="sref">device_attribute
/a> *
a href="+code=attr" class="sref">attr
/a>, char *
a href="+code=buf" class="sref">buf
/a>)o 111
/a>{o 112
/a>        unsigned short 
a href="+code=delete" class="sref">delete
/a>;o 113
/a>o 114
/a>        
a href="+code=ep93xx_rtc_get_swcomp" class="sref">ep93xx_rtc_get_swcomp
/a>(
a href="+code=dev" class="sref">dev
/a>, 
a href="+code=NULL" class="sref">NULL
/a>, &
a href="+code=delete" class="sref">delete
/a>);o 115
/a>o 116
/a>        return 
a href="+code=sprintf" class="sref">sprintf
/a>(
a href="+code=buf" class="sref">buf
/a>, 
spat class="string">"%d\n"
/spati, 
a href="+code=delete" class="sref">delete
/a>);o 117
/a>}o 118
/a>static 
a href="+code=DEVICE_ATTR" class="sref">DEVICE_ATTR
/a>(
a href="+code=comp_delete" class="sref">comp_delete
/a>, 
a href="+code=S_IRUGO" class="sref">S_IRUGO
/a>, 
a href="+code=ep93xx_rtc_show_comp_delete" class="sref">ep93xx_rtc_show_comp_delete
/a>, 
a href="+code=NULL" class="sref">NULL
/a>);o 119
/a>o 120
/a>static struct 
a href="+code=attribute" class="sref">attribute
/a> *
a href="+code=ep93xx_rtc_attrs" class="sref">ep93xx_rtc_attrs
/a>[] = {o 121
/a>        &
a href="+code=dev_attr_comp_preload" class="sref">dev_attr_comp_preload
/a>.
a href="+code=attr" class="sref">attr
/a>,o 122
/a>        &
a href="+code=dev_attr_comp_delete" class="sref">dev_attr_comp_delete
/a>.
a href="+code=attr" class="sref">attr
/a>,o 123
/a>        
a href="+code=NULL" class="sref">NULL
/a>o 124
/a>};o 125
/a>o 126
/a>static const struct 
a href="+code=attribute_group" class="sref">attribute_group
/a> 
a href="+code=ep93xx_rtc_sysfs_files" class="sref">ep93xx_rtc_sysfs_files
/a> = {o 127
/a>        .
a href="+code=attrs" class="sref">attrs
/a>  = 
a href="+code=ep93xx_rtc_attrs" class="sref">ep93xx_rtc_attrs
/a>,o 128
/a>};o 129
/a>o 130
/a>static int 
a href="+code=__devinit" class="sref">__devinit
/a> 
a href="+code=ep93xx_rtc_probe" class="sref">ep93xx_rtc_probe
/a>(struct 
a href="+code=platform_device" class="sref">platform_device
/a> *
a href="+code=pdev" class="sref">pdev
/a>)o 131
/a>{o 132
/a>        struct 
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a> *
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a>;o 133
/a>        struct 
a href="+code=resource" class="sref">resource
/a> *
a href="+code=res" class="sref">res
/a>;o 134
/a>        int 
a href="+code=err" class="sref">err
/a>;o 135
/a>o 136
/a>        
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a> = 
a href="+code=devm_kzalloc" class="sref">devm_kzalloc
/a>(&
a href="+code=pdev" class="sref">pdev
/a>->
a href="+code=dev" class="sref">dev
/a>, sizeof(*
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a>), 
a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL
/a>);o 137
/a>        if (!
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a>)o 138
/a>                return -
a href="+code=ENOMEM" class="sref">ENOMEM
/a>;o 139
/a>o 140
/a>        
a href="+code=res" class="sref">res
/a> = 
a href="+code=platform_get_resource" class="sref">platform_get_resource
/a>(
a href="+code=pdev" class="sref">pdev
/a>, 
a href="+code=IORESOURCE_MEM" class="sref">IORESOURCE_MEM
/a>, 0);o 141
/a>        if (!
a href="+code=res" class="sref">res
/a>)o 142
/a>                return -
a href="+code=ENXIO" class="sref">ENXIO
/a>;o 143
/a>o 144
/a>        if (!
a href="+code=devm_request_mem_region" class="sref">devm_request_mem_region
/a>(&
a href="+code=pdev" class="sref">pdev
/a>->
a href="+code=dev" class="sref">dev
/a>, 
a href="+code=res" class="sref">res
/a>->
a href="+code=start" class="sref">start
/a>,o 145
/a>                                     
a href="+code=resource_size" class="sref">resource_size
/a>(
a href="+code=res" class="sref">res
/a>), 
a href="+code=pdev" class="sref">pdev
/a>->
a href="+code=nama" class="sref">nama
/a>))o 146
/a>                return -
a href="+code=EBUSY" class="sref">EBUSY
/a>;o 147
/a>o 148
/a>        
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a>->
a href="+code=mmio_base" class="sref">mmio_base
/a> = 
a href="+code=devm_ioremap" class="sref">devm_ioremap
/a>(&
a href="+code=pdev" class="sref">pdev
/a>->
a href="+code=dev" class="sref">dev
/a>, 
a href="+code=res" class="sref">res
/a>->
a href="+code=start" class="sref">start
/a>,o 149
/a>                                             
a href="+code=resource_size" class="sref">resource_size
/a>(
a href="+code=res" class="sref">res
/a>));o 150
/a>        if (!
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a>->
a href="+code=mmio_base" class="sref">mmio_base
/a>)o 151
/a>                return -
a href="+code=ENXIO" class="sref">ENXIO
/a>;o 152
/a>o 153
/a>        
a href="+code=pdev" class="sref">pdev
/a>->
a href="+code=dev" class="sref">dev
/a>.
a href="+code=platform_data" class="sref">platform_data
/a> = 
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a>;o 154
/a>        
a href="+code=platform_set_drvdata" class="sref">platform_set_drvdata
/a>(
a href="+code=pdev" class="sref">pdev
/a>, 
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a>);o 155
/a>o 156
/a>        
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a>->
a href="+code=rtc" class="sref">rtc
/a> = 
a href="+code=rtc_device_register" class="sref">rtc_device_register
/a>(
a href="+code=pdev" class="sref">pdev
/a>->
a href="+code=nama" class="sref">nama
/a>,o 157
/a>                                &
a href="+code=pdev" class="sref">pdev
/a>->
a href="+code=dev" class="sref">dev
/a>, &
a href="+code=ep93xx_rtc_ops" class="sref">ep93xx_rtc_ops
/a>, 
a href="+code=THIS_MODULE" class="sref">THIS_MODULE
/a>);o 158
/a>        if (
a href="+code=IS_ERR" class="sref">IS_ERR
/a>(
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a>->
a href="+code=rtc" class="sref">rtc
/a>)) {o 159
/a>                
a href="+code=err" class="sref">err
/a> = 
a href="+code=PTR_ERR" class="sref">PTR_ERR
/a>(
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a>->
a href="+code=rtc" class="sref">rtc
/a>);o 160
/a>                goto 
a href="+code=exit" class="sref">exit
/a>;o 161
/a>        }o 162
/a>o 163
/a>        
a href="+code=err" class="sref">err
/a> = 
a href="+code=sysfs_create_group" class="sref">sysfs_create_group
/a>(&
a href="+code=pdev" class="sref">pdev
/a>->
a href="+code=dev" class="sref">dev
/a>.
a href="+code=kobj" class="sref">kobj
/a>, &
a href="+code=ep93xx_rtc_sysfs_files" class="sref">ep93xx_rtc_sysfs_files
/a>);o 164
/a>        if (
a href="+code=err" class="sref">err
/a>)o 165
/a>                goto 
a href="+code=fail" class="sref">fail
/a>;o 166
/a>o 167
/a>        return 0;o 168
/a>o 169
/a>
a href="+code=fail" class="sref">fail
/a>:o 170
/a>        
a href="+code=rtc_device_unregister" class="sref">rtc_device_unregister
/a>(
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a>->
a href="+code=rtc" class="sref">rtc
/a>);o 171
/a>
a href="+code=exit" class="sref">exit
/a>:o 172
/a>        
a href="+code=platform_set_drvdata" class="sref">platform_set_drvdata
/a>(
a href="+code=pdev" class="sref">pdev
/a>, 
a href="+code=NULL" class="sref">NULL
/a>);o 173
/a>        
a href="+code=pdev" class="sref">pdev
/a>->
a href="+code=dev" class="sref">dev
/a>.
a href="+code=platform_data" class="sref">platform_data
/a> = 
a href="+code=NULL" class="sref">NULL
/a>;o 174
/a>        return 
a href="+code=err" class="sref">err
/a>;o 175
/a>}o 176
/a>o 177
/a>static int 
a href="+code=__devexit" class="sref">__devexit
/a> 
a href="+code=ep93xx_rtc_remove" class="sref">ep93xx_rtc_remove
/a>(struct 
a href="+code=platform_device" class="sref">platform_device
/a> *
a href="+code=pdev" class="sref">pdev
/a>)o 178
/a>{o 179
/a>        struct 
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a> *
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a> = 
a href="+code=platform_get_drvdata" class="sref">platform_get_drvdata
/a>(
a href="+code=pdev" class="sref">pdev
/a>);o 180
/a>o 181
/a>        
a href="+code=sysfs_remove_group" class="sref">sysfs_remove_group
/a>(&
a href="+code=pdev" class="sref">pdev
/a>->
a href="+code=dev" class="sref">dev
/a>.
a href="+code=kobj" class="sref">kobj
/a>, &
a href="+code=ep93xx_rtc_sysfs_files" class="sref">ep93xx_rtc_sysfs_files
/a>);o 182
/a>        
a href="+code=platform_set_drvdata" class="sref">platform_set_drvdata
/a>(
a href="+code=pdev" class="sref">pdev
/a>, 
a href="+code=NULL" class="sref">NULL
/a>);o 183
/a>        
a href="+code=rtc_device_unregister" class="sref">rtc_device_unregister
/a>(
a href="+code=ep93xx_rtc" class="sref">ep93xx_rtc
/a>->
a href="+code=rtc" class="sref">rtc
/a>);o 184
/a>        
a href="+code=pdev" class="sref">pdev
/a>->
a href="+code=dev" class="sref">dev
/a>.
a href="+code=platform_data" class="sref">platform_data
/a> = 
a href="+code=NULL" class="sref">NULL
/a>;o 185
/a>o 186
/a>        return 0;o 187
/a>}o 188
/a>o 189
/a>static struct 
a href="+code=platform_driver" class="sref">platform_driver
/a> 
a href="+code=ep93xx_rtc_driver" class="sref">ep93xx_rtc_driver
/a> = {o 190
/a>        .
a href="+code=driver" class="sref">driver
/a>         = {o 191
/a>                .
a href="+code=nama" class="sref">nama
/a>   = 
spat class="string">"ep93xx-rtc"
/spati,o 192
/a>                .
a href="+code=owner" class="sref">owner
/a>  = 
a href="+code=THIS_MODULE" class="sref">THIS_MODULE
/a>,o 193
/a>        },o 194
/a>        .
a href="+code=probe" class="sref">probe
/a>          = 
a href="+code=ep93xx_rtc_probe" class="sref">ep93xx_rtc_probe
/a>,o 195
/a>        .
a href="+code=remove" class="sref">remove
/a>         = 
a href="+code=__devexit_p" class="sref">__devexit_p
/a>(
a href="+code=ep93xx_rtc_remove" class="sref">ep93xx_rtc_remove
/a>),o 196
/a>};o 197
/a>o 198
/a>
a href="+code=module_platform_driver" class="sref">module_platform_driver
/a>(
a href="+code=ep93xx_rtc_driver" class="sref">ep93xx_rtc_driver
/a>);o 199
/a>o 200
/a>
a href="+code=MODULE_AUTHOR" class="sref">MODULE_AUTHOR
/a>(
spat class="string">"Alessandro Zummo <a.zummo@towertech.it>"
/spati);o 201
/a>
a href="+code=MODULE_DESCRIPTION" class="sref">MODULE_DESCRIPTION
/a>(
spat class="string">"EP93XX RTC driver"
/spati);o 202
/a>
a href="+code=MODULE_LICENSE" class="sref">MODULE_LICENSE
/a>(
spat class="string">"GPL"
/spati);o 203
/a>
a href="+code=MODULE_VERSION" class="sref">MODULE_VERSION
/a>(
a href="+code=DRV_VERSION" class="sref">DRV_VERSION
/a>);o 204
/a>
a href="+code=MODULE_ALIAS" class="sref">MODULE_ALIAS
/a>(
spat class="string">"platform:ep93xx-rtc"
/spati);o 205
/a>
lxr.linux.no kindly hosted by a href="http://www.redpill-linpro.no">Redpill Linpro AS /a>, provider of Linux consulting and operations services since 1995.