Changeset 122


Ignore:
Timestamp:
Sep 1, 2011, 1:32:43 PM (14 years ago)
Author:
Markus Thielen
Message:
  • added support for /q switch (#7)
  • added cv#printf macros to support verbosity setting from command line
Location:
trunk/src/os2ahci
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/os2ahci/os2ahci.c

    r121 r122  
    3333
    3434/* parse integer command line parameter */
    35 #define drv_parm_int(s, value, type, radix)               \
    36   {                                                       \
    37     char _far *_ep;                                       \
    38     if ((s)[1] != ':') {                                  \
    39       cprintf("missing colon (:) after /%c\n", *(s));    \
    40       goto init_fail;                                     \
    41     }                                                     \
    42     value = (type) strtol((s) + 2,                        \
    43                           (const char _far* _far*) &_ep,  \
    44                           radix);                         \
    45     s = _ep;                                              \
     35#define drv_parm_int(s, value, type, radix)                         \
     36  {                                                                 \
     37    char _far *_ep;                                                 \
     38    if ((s)[1] != ':') {                                            \
     39      cprintf("%s: missing colon (:) after /%c\n", drv_name, *(s)); \
     40      goto init_fail;                                               \
     41    }                                                               \
     42    value = (type) strtol((s) + 2,                                  \
     43                          (const char _far* _far*) &_ep,            \
     44                          radix);                                   \
     45    s = _ep;                                                        \
    4646  }
    4747
     
    7373int             thorough_scan = 1; /* if != 0, perform thorough PCI scan */
    7474int             init_reset;        /* if != 0, reset ports during init */
    75 int             verbosity;         /* if > 0, show some info during boot */
     75int             verbosity = 1;     /* == 1 -> show sign on banner
     76                                    *  > 1 -> show adapter info during boot */
    7677
    7778PFN             Device_Help = 0;   /* pointer to device helper entry point */
     
    8384USHORT          add_handle;        /* driver handle (RegisterDeviceClass) */
    8485UCHAR           timer_pool[TIMER_POOL_SIZE]; /* timer pool */
     86char            drv_name[] = "OS2AHCI"; /* driver name as string */
    8587
    8688/* resource manager driver information structure */
    8789DRIVERSTRUCT rm_drvinfo = {
    88   "OS2AHCI",                       /* driver name */
     90  drv_name,                        /* driver name */
    8991  "AHCI SATA Driver",              /* driver description */
    9092  "GNU",                           /* vendor name */
     
    112114u8              track_size[MAX_AD][AHCI_MAX_PORTS];
    113115
    114 static char     init_msg[] = "OS2AHCI driver version %d.%02d\n";
    115 static char     exit_msg[] = "OS2AHCI driver *not* installed\n";
     116static char     init_msg[] = "%s driver version %d.%02d\n";
     117static char     exit_msg[] = "%s driver *not* installed\n";
    116118
    117119/* ----------------------------- start of code ----------------------------- */
     
    179181  init_libc();
    180182
    181   /* print initialization message */
    182   cprintf(init_msg, VERSION / 100, VERSION % 100);
    183 
    184 #ifdef ECS_BUILD
    185   cprintf("This driver is licensed for use only in conjunction with eComStation.");
    186 #endif
    187 
    188183  /* register driver with resource manager */
    189184  if ((rmrc = RMCreateDriver(&rm_drvinfo, &rm_drvh)) != RMRC_SUCCESS) {
    190     cprintf("failed to register driver with resource manager (rc = %d)\n", rmrc);
     185    cprintf("%s: failed to register driver with resource manager (rc = %d)\n",
     186            drv_name, rmrc);
    191187    goto init_fail;
    192188  }
     
    205201      case '\0':
    206202        /* end of command line; can only happen if command line is incorrect */
    207         cprintf("incomplete command line option\n");
     203        cprintf("%s: incomplete command line option\n", drv_name);
    208204        goto init_fail;
    209205
     
    223219        drv_parm_int(s, device, u16, 16);
    224220        if (add_pci_id(vendor, device)) {
    225           cprintf("failed to add PCI ID %04x:%04x\n", vendor, device);
     221          cprintf("%s: failed to add PCI ID %04x:%04x\n", drv_name, vendor, device);
    226222          goto init_fail;
    227223        }
     
    243239        drv_parm_int(s, adapter_index, int, 10);
    244240        if (adapter_index < 0 || adapter_index >= MAX_AD) {
    245           cprintf("invalid adapter index (%d)\n", adapter_index);
     241          cprintf("%s: invalid adapter index (%d)\n", drv_name, adapter_index);
    246242          goto init_fail;
    247243        }
     
    252248        drv_parm_int(s, port_index, int, 10);
    253249        if (port_index < 0 || port_index >= AHCI_MAX_PORTS) {
    254           cprintf("invalid port index (%d)\n", port_index);
     250          cprintf("%s: invalid port index (%d)\n", drv_name, port_index);
    255251          goto init_fail;
    256252        }
     
    289285          break;
    290286        default:
    291           cprintf("invalid link parameter (%c)\n", *s);
     287          cprintf("%s: invalid link parameter (%c)\n", drv_name, *s);
    292288          goto init_fail;
    293289        }
     
    308304        break;
    309305
     306      case 'q':
     307        /* be quiet */
     308        verbosity = -1000;
     309        break;
     310
    310311      default:
    311         cprintf("unknown option: /%c\n", *s);
     312        cprintf("%s: unknown option: /%c\n", drv_name, *s);
    312313        goto init_fail;
    313314      }
    314315    }
    315316  }
     317
     318  /* print initialization message */
     319  cvprintf(init_msg, drv_name, VERSION / 100, VERSION % 100);
     320
     321#ifdef ECS_BUILD
     322  cvprintf("This driver is licensed for use only in conjunction with eComStation.");
     323#endif
    316324
    317325  if (debug) {
     
    334342    mdelay_cal();
    335343
    336     if (DevHelp_RegisterDeviceClass("OS2AHCI", (PFN) add_entry, 0, 1,
     344    if (DevHelp_RegisterDeviceClass(drv_name, (PFN) add_entry, 0, 1,
    337345                                    &add_handle)) {
    338       cprintf("error: couldn't register device class\n");
     346      cprintf("%s: couldn't register device class\n", drv_name);
    339347      goto init_fail;
    340348    }
     
    344352        DevHelp_AllocateCtxHook(mk_NPFN(reset_hook), &reset_ctxhook_h) != 0 ||
    345353        DevHelp_AllocateCtxHook(mk_NPFN(engine_hook), &engine_ctxhook_h)) {
    346       cprintf("failed to allocate task-time context hooks\n");
     354      cprintf("%s: failed to allocate task-time context hooks\n", drv_name);
    347355      goto init_fail;
    348356    }
     
    354362  } else {
    355363    /* no adapters found */
    356     cprintf(" No adapters found.\n");
     364    cvprintf(" No adapters found.\n");
    357365  }
    358366
     
    372380  }
    373381
    374   cprintf(exit_msg);
     382  cvprintf(exit_msg, drv_name);
    375383  return(STDON | ERROR_I24_QUIET_INIT_FAIL);
    376384}
  • trunk/src/os2ahci/os2ahci.h

    r121 r122  
    104104#define dddprintf if (debug > 2) printf
    105105#define dddphex   if (debug > 2) phex
     106
     107/* verbosity console print macros */
     108#define cvprintf  if (verbosity > 0) cprintf
     109#define cvvprintf if (verbosity > 1) cprintf
    106110
    107111/* TRACE macros (for our internal ring buffer trace) */
     
    525529extern USHORT        add_handle;    /* adapter device driver handle */
    526530extern UCHAR         timer_pool[];  /* timer pool */
     531extern char          drv_name[];    /* driver name as string ("OS2AHCI") */
    527532
    528533extern PCI_ID        pci_ids[];     /* SATA adapter PCI IDs */
  • trunk/src/os2ahci/pci.c

    r112 r122  
    417417  memset(&parm, 0x00, sizeof(parm));
    418418  if (oemhlp_call(OH_BIOS_INFO, &parm, &data) != OH_SUCCESS) {
    419     cprintf("couldn't get PCI BIOS information\n");
     419    cprintf("%s: couldn't get PCI BIOS information\n", drv_name);
    420420    return;
    421421  }
     
    614614
    615615  /* found a supported AHCI device */
    616   if (verbosity > 0) {
    617     cprintf("found AHCI device: %s %s (%04x:%04x)\n"
     616  cvvprintf("found AHCI device: %s %s (%04x:%04x)\n"
    618617            " class:0x%06lx bus:%d devfunc:0x%02x\n",
    619618            vendor_from_id(vendor), device_from_id(device),
    620619            vendor, device,
    621620            class, bus, dev_func);
    622   }
    623621
    624622  /* make sure we got room in the adapter information array */
    625623  if (ad_info_cnt >= MAX_AD - 1) {
    626     cprintf("error: too many AHCI devices\n");
     624    cprintf("%s: too many AHCI devices\n", drv_name);
    627625    return;
    628626  }
     
    665663  ret = RMAllocResource(rm_drvh, &ad_info->rm_irq, &resource);
    666664  if (ret != RMRC_SUCCESS) {
    667     cprintf("error: couldn't register IRQ %d (rc = %s)\n", irq, rmerr(ret));
     665    cprintf("%s: couldn't register IRQ %d (rc = %s)\n", drv_name, irq, rmerr(ret));
    668666    return;
    669667  }
     
    689687    if (i == AHCI_PCI_BAR) {
    690688      if (resource.ResourceType != RS_TYPE_MEM) {
    691         cprintf("error: BAR #5 must be an MMIO region\n");
     689        cprintf("%s: BAR #5 must be an MMIO region\n", drv_name);
    692690        goto add_pci_fail;
    693691      }
     
    700698    ret = RMAllocResource(rm_drvh, ad_info->rm_bars + i, &resource);
    701699    if (ret != RMRC_SUCCESS) {
    702       cprintf("error: couldn't register [MM]IO region (rc = %s)\n", rmerr(ret));
     700      cprintf("%s: couldn't register [MM]IO region (rc = %s)\n",
     701              drv_name, rmerr(ret));
    703702      goto add_pci_fail;
    704703    }
     
    707706
    708707  if (ad_info->mmio_phys == 0) {
    709     cprintf("error: couldn't determine MMIO base address\n");
     708    cprintf("%s: couldn't determine MMIO base address\n", drv_name);
    710709    goto add_pci_fail;
    711710  }
     
    724723  if (DevHelp_AllocPhys((long) AHCI_PORT_PRIV_DMA_SZ * AHCI_MAX_PORTS,
    725724                        MEMTYPE_ABOVE_1M, &ad_info->dma_buf_phys) != 0) {
    726     cprintf("error: couldn't allocate DMA scratch buffers for AHCI ports\n");
     725    cprintf("%s: couldn't allocate DMA scratch buffers for AHCI ports\n", drv_name);
    727726    ad_info->dma_buf_phys = 0;
    728727    goto add_pci_fail;
     
    731730  /* allocate GDT selectors for memory-mapped I/O and DMA scratch buffers */
    732731  if (DevHelp_AllocGDTSelector(gdt, PORT_DMA_BUF_SEGS + 1) != 0) {
    733     cprintf("error: couldn't allocate GDT selectors\n");
     732    cprintf("%s: couldn't allocate GDT selectors\n", drv_name);
    734733    memset(gdt, 0x00, sizeof(gdt));
    735734    goto add_pci_fail;
     
    739738  if (DevHelp_PhysToGDTSelector(ad_info->mmio_phys,
    740739                                (USHORT) ad_info->mmio_size, gdt[0]) != 0) {
    741     cprintf("error: couldn't map MMIO address to GDT selector\n");
     740    cprintf("%s: couldn't map MMIO address to GDT selector\n", drv_name);
    742741    goto add_pci_fail;
    743742  }
     
    749748
    750749    if (DevHelp_PhysToGDTSelector(addr, len, gdt[i+1]) != 0) {
    751       cprintf("error: couldn't map DMA scratch buffer to GDT selector\n");
     750      cprintf("%s: couldn't map DMA scratch buffer to GDT selector\n", drv_name);
    752751      goto add_pci_fail;
    753752    }
     
    780779  ret = RMCreateAdapter(rm_drvh, &ad_info->rm_adh, &adapter, NULL, rc_list);
    781780  if (ret != RMRC_SUCCESS) {
    782     cprintf("error: couldn't register adapter (rc = %s)\n", rmerr(ret));
     781    cprintf("%s: couldn't register adapter (rc = %s)\n", drv_name, rmerr(ret));
    783782    goto add_pci_fail;
    784783  }
     
    827826  parm.read_config.size     = size;
    828827  if ((rc = oemhlp_call(OH_READ_CONFIG, &parm, &data) != OH_SUCCESS)) {
    829     cprintf("error: couldn't read config space (bus = %d, dev_func = 0x%02x, indx = 0x%02x, rc = %d)\n",
    830             bus, dev_func, indx,  rc);
     828    cprintf("%s: couldn't read config space (bus = %d, dev_func = 0x%02x, indx = 0x%02x, rc = %d)\n",
     829            drv_name, bus, dev_func, indx,  rc);
    831830    return(rc);
    832831  }
     
    854853
    855854  if ((rc = oemhlp_call(OH_WRITE_CONFIG, &parm, &data) != OH_SUCCESS)) {
    856     cprintf("error: couldn't write config space (bus = %d, dev_func = 0x%02x, indx = 0x%02x, rc = %d)\n",
    857             bus, dev_func, indx, rc);
     855    cprintf("%s: couldn't write config space (bus = %d, dev_func = 0x%02x, indx = 0x%02x, rc = %d)\n",
     856            drv_name, bus, dev_func, indx, rc);
    858857    return(rc);
    859858  }
     
    877876        oemhlp.ProtIDCEntry == NULL ||
    878877        oemhlp.ProtIDC_DS == 0) {
    879       cprintf("couldn't attach to OEMHLP$\n");
     878      cprintf("%s: couldn't attach to OEMHLP$\n", drv_name);
    880879      return(OH_NOT_SUPPORTED);
    881880    }
     
    973972      pci_write_conf(bus, dev_func, PCI_BAR(i), sizeof(u32), bar_addr)  != OH_SUCCESS) {
    974973
    975     cprintf("error: couldn't determine [MM]IO size\n");
     974    cprintf("%s: couldn't determine [MM]IO size\n", drv_name);
    976975    if (bar_addr != 0) {
    977976      pci_write_conf(bus, dev_func, PCI_BAR(i), sizeof(u32), bar_addr);
  • trunk/src/os2ahci/trace.c

    r116 r122  
    7171        /* failed, too. Give up */
    7272        ahci_trace_buf.phys_addr = 0;
    73         cprintf("OS2AHCI warning: failed to allocate %dk trace buffer\n",
    74                 AHCI_TRACE_BUF_SIZE / 1024);
     73        cprintf("%s warning: failed to allocate %dk trace buffer\n",
     74                drv_name, AHCI_TRACE_BUF_SIZE / 1024);
    7575        return;
    7676      }
Note: See TracChangeset for help on using the changeset viewer.