Changeset View
Changeset View
Standalone View
Standalone View
head/sys/arm/ti/ti_adc.c
Show First 20 Lines • Show All 741 Lines • ▼ Show 20 Lines | if (child != 0) { | ||||
if ((OF_getprop(child, "ti,charge-delay", &cell, sizeof(cell))) > 0) | if ((OF_getprop(child, "ti,charge-delay", &cell, sizeof(cell))) > 0) | ||||
sc->sc_charge_delay = fdt32_to_cpu(cell); | sc->sc_charge_delay = fdt32_to_cpu(cell); | ||||
nwire_configs = OF_getencprop_alloc(child, "ti,wire-config", | nwire_configs = OF_getencprop_alloc(child, "ti,wire-config", | ||||
sizeof(*wire_configs), (void **)&wire_configs); | sizeof(*wire_configs), (void **)&wire_configs); | ||||
if (nwire_configs != sc->sc_tsc_wires) { | if (nwire_configs != sc->sc_tsc_wires) { | ||||
device_printf(sc->sc_dev, | device_printf(sc->sc_dev, | ||||
"invalid nubmer of ti,wire-config: %d (should be %d)\n", | "invalid nubmer of ti,wire-config: %d (should be %d)\n", | ||||
nwire_configs, sc->sc_tsc_wires); | nwire_configs, sc->sc_tsc_wires); | ||||
free(wire_configs, M_OFWPROP); | OF_prop_free(wire_configs); | ||||
return (EINVAL); | return (EINVAL); | ||||
} | } | ||||
err = ti_adc_config_wires(sc, wire_configs, nwire_configs); | err = ti_adc_config_wires(sc, wire_configs, nwire_configs); | ||||
free(wire_configs, M_OFWPROP); | OF_prop_free(wire_configs); | ||||
if (err) | if (err) | ||||
return (EINVAL); | return (EINVAL); | ||||
} | } | ||||
/* Read "adc" node properties */ | /* Read "adc" node properties */ | ||||
child = ofw_bus_find_child(node, "adc"); | child = ofw_bus_find_child(node, "adc"); | ||||
if (child != 0) { | if (child != 0) { | ||||
sc->sc_adc_nchannels = OF_getencprop_alloc(child, "ti,adc-channels", | sc->sc_adc_nchannels = OF_getencprop_alloc(child, "ti,adc-channels", | ||||
sizeof(*channels), (void **)&channels); | sizeof(*channels), (void **)&channels); | ||||
if (sc->sc_adc_nchannels > 0) { | if (sc->sc_adc_nchannels > 0) { | ||||
for (i = 0; i < sc->sc_adc_nchannels; i++) | for (i = 0; i < sc->sc_adc_nchannels; i++) | ||||
sc->sc_adc_channels[i] = channels[i]; | sc->sc_adc_channels[i] = channels[i]; | ||||
free(channels, M_OFWPROP); | OF_prop_free(channels); | ||||
} | } | ||||
} | } | ||||
/* Sanity check FDT data */ | /* Sanity check FDT data */ | ||||
if (sc->sc_tsc_wires + sc->sc_adc_nchannels > TI_ADC_NPINS) { | if (sc->sc_tsc_wires + sc->sc_adc_nchannels > TI_ADC_NPINS) { | ||||
device_printf(dev, "total number of chanels (%d) is larger than %d\n", | device_printf(dev, "total number of chanels (%d) is larger than %d\n", | ||||
sc->sc_tsc_wires + sc->sc_adc_nchannels, TI_ADC_NPINS); | sc->sc_tsc_wires + sc->sc_adc_nchannels, TI_ADC_NPINS); | ||||
return (ENXIO); | return (ENXIO); | ||||
▲ Show 20 Lines • Show All 114 Lines • Show Last 20 Lines |