[BACK]Return to pad.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / dev / pad

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/dev/pad/pad.c between version 1.12 and 1.13

version 1.12, 2010/01/18 23:57:14 version 1.13, 2010/04/09 13:39:17
Line 41  __KERNEL_RCSID(0, "$NetBSD$");
Line 41  __KERNEL_RCSID(0, "$NetBSD$");
 #include <sys/select.h>  #include <sys/select.h>
 #include <sys/audioio.h>  #include <sys/audioio.h>
 #include <sys/vnode.h>  #include <sys/vnode.h>
   #include <sys/module.h>
   
 #include <dev/audio_if.h>  #include <dev/audio_if.h>
 #include <dev/audiovar.h>  #include <dev/audiovar.h>
Line 566  pad_round_blocksize(void *opaque, int bl
Line 567  pad_round_blocksize(void *opaque, int bl
 {  {
         return PAD_BLKSIZE;          return PAD_BLKSIZE;
 }  }
   
   #ifdef _MODULE
   
   MODULE(MODULE_CLASS_DRIVER, pad, NULL);
   
   static const struct cfiattrdata audiobuscf_iattrdata = {
           "audiobus", 0, { { NULL, NULL, 0 }, }
   };
   static const struct cfiattrdata * const pad_attrs[] = {
           &audiobuscf_iattrdata, NULL
   };
   
   CFDRIVER_DECL(pad, DV_DULL, pad_attrs);
   extern struct cfattach pad_ca;
   static int padloc[] = { -1, -1 };
   
   static struct cfdata pad_cfdata[] = {
           {
                   .cf_name = "pad",
                   .cf_atname = "pad",
                   .cf_unit = 0,
                   .cf_fstate = FSTATE_STAR,
                   .cf_loc = padloc,
                   .cf_flags = 0,
                   .cf_pspec = NULL,
           },
           { NULL }
   };
   
   static int
   pad_modcmd(modcmd_t cmd, void *arg)
   {
           devmajor_t cmajor = NODEVMAJOR, bmajor = NODEVMAJOR;
           int error, s;
   
           switch (cmd) {
           case MODULE_CMD_INIT:
                   error = config_cfdriver_attach(&pad_cd);
                   if (error) {
                           return error;
                   }
   
                   error = config_cfattach_attach(pad_cd.cd_name, &pad_ca);
                   if (error) {
                           config_cfdriver_detach(&pad_cd);
                           aprint_error("%s: unable to register cfattach\n",
                                   pad_cd.cd_name);
   
                           return error;
                   }
   
                   s = splaudio();
                   error = config_cfdata_attach(pad_cfdata, 1);
                   splx(s);
                   if (error) {
                           config_cfattach_detach(pad_cd.cd_name, &pad_ca);
                           config_cfdriver_detach(&pad_cd);
                           aprint_error("%s: unable to register cfdata\n",
                                   pad_cd.cd_name);
   
                           return error;
                   }
   
                   error = devsw_attach(pad_cd.cd_name, NULL, &bmajor, &pad_cdevsw, &cmajor);
                   if (error) {
                           error = config_cfdata_detach(pad_cfdata);
                           if (error) {
                                   return error;
                           }
                           config_cfattach_detach(pad_cd.cd_name, &pad_ca);
                           config_cfdriver_detach(&pad_cd);
                           aprint_error("%s: unable to register devsw\n",
                                   pad_cd.cd_name);
   
                           return error;
                   }
   
                   (void)config_attach_pseudo(pad_cfdata);
   
                   return 0;
           case MODULE_CMD_FINI:
                   error = config_cfdata_detach(pad_cfdata);
                   if (error) {
                           return error;
                   }
   
                   config_cfattach_detach(pad_cd.cd_name, &pad_ca);
                   config_cfdriver_detach(&pad_cd);
                   devsw_detach(NULL, &pad_cdevsw);
   
                   return 0;
           default:
                   return ENOTTY;
           }
   }
   
   #endif

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.13

CVSweb <webmaster@jp.NetBSD.org>