| 547 | } |
| 548 | |
| 549 | static void |
| 550 | ti_adc_sysctl_init(struct ti_adc_softc *sc) |
| 551 | { |
| 552 | char pinbuf[3]; |
| 553 | struct sysctl_ctx_list *ctx; |
| 554 | struct sysctl_oid *tree_node, *inp_node, *inpN_node; |
| 555 | struct sysctl_oid_list *tree, *inp_tree, *inpN_tree; |
| 556 | int ain, i; |
| 557 | |
| 558 | /* |
| 559 | * Add per-pin sysctl tree/handlers. |
| 560 | */ |
| 561 | ctx = device_get_sysctl_ctx(sc->sc_dev); |
| 562 | tree_node = device_get_sysctl_tree(sc->sc_dev); |
| 563 | tree = SYSCTL_CHILDREN(tree_node); |
| 564 | SYSCTL_ADD_PROC(ctx, tree, OID_AUTO, "clockdiv", |
| 565 | CTLFLAG_RW | CTLTYPE_UINT | CTLFLAG_NEEDGIANT, sc, 0, |
| 566 | ti_adc_clockdiv_proc, "IU", "ADC clock prescaler"); |
| 567 | inp_node = SYSCTL_ADD_NODE(ctx, tree, OID_AUTO, "ain", |
| 568 | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "ADC inputs"); |
| 569 | inp_tree = SYSCTL_CHILDREN(inp_node); |
| 570 | |
| 571 | for (i = 0; i < sc->sc_adc_nchannels; i++) { |
| 572 | ain = sc->sc_adc_channels[i]; |
| 573 | |
| 574 | snprintf(pinbuf, sizeof(pinbuf), "%d", ain); |
| 575 | inpN_node = SYSCTL_ADD_NODE(ctx, inp_tree, OID_AUTO, pinbuf, |
| 576 | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "ADC input"); |
| 577 | inpN_tree = SYSCTL_CHILDREN(inpN_node); |
| 578 | |
| 579 | SYSCTL_ADD_PROC(ctx, inpN_tree, OID_AUTO, "enable", |
| 580 | CTLFLAG_RW | CTLTYPE_UINT | CTLFLAG_NEEDGIANT, |
| 581 | &ti_adc_inputs[ain], 0, |
| 582 | ti_adc_enable_proc, "IU", "Enable ADC input"); |
| 583 | SYSCTL_ADD_PROC(ctx, inpN_tree, OID_AUTO, "open_delay", |
| 584 | CTLFLAG_RW | CTLTYPE_UINT | CTLFLAG_NEEDGIANT, |
| 585 | &ti_adc_inputs[ain], 0, |
| 586 | ti_adc_open_delay_proc, "IU", "ADC open delay"); |
| 587 | SYSCTL_ADD_PROC(ctx, inpN_tree, OID_AUTO, "samples_avg", |
| 588 | CTLFLAG_RW | CTLTYPE_UINT | CTLFLAG_NEEDGIANT, |
| 589 | &ti_adc_inputs[ain], 0, |
| 590 | ti_adc_samples_avg_proc, "IU", "ADC samples average"); |
| 591 | SYSCTL_ADD_INT(ctx, inpN_tree, OID_AUTO, "input", |
| 592 | CTLFLAG_RD, &ti_adc_inputs[ain].value, 0, |
| 593 | "Converted raw value for the ADC input"); |
| 594 | } |
| 595 | } |
| 596 | |
| 597 | static void |
| 598 | ti_adc_inputs_init(struct ti_adc_softc *sc) |
no test coverage detected