Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/bhnd/cores/chipc/bhnd_sprom_chipc.c
| Show First 20 Lines • Show All 48 Lines • ▼ Show 20 Lines | |||||
| #include "bhnd_nvram_if.h" | #include "bhnd_nvram_if.h" | ||||
| #include "chipcvar.h" | #include "chipcvar.h" | ||||
| #include "chipc_private.h" | #include "chipc_private.h" | ||||
| #define CHIPC_VALID_SPROM_SRC(_src) \ | #define CHIPC_VALID_SPROM_SRC(_src) \ | ||||
| ((_src) == BHND_NVRAM_SRC_SPROM || (_src) == BHND_NVRAM_SRC_OTP) | ((_src) == BHND_NVRAM_SRC_SPROM || (_src) == BHND_NVRAM_SRC_OTP) | ||||
| static void | |||||
| chipc_sprom_identify(driver_t *driver, device_t parent) | |||||
| { | |||||
| struct chipc_caps *caps; | |||||
| caps = BHND_CHIPC_GET_CAPS(parent); | |||||
| if (!CHIPC_VALID_SPROM_SRC(caps->nvram_src)) | |||||
| return; | |||||
| if (device_find_child(parent, "bhnd_nvram", 0) != NULL) | |||||
| return; | |||||
| if (BUS_ADD_CHILD(parent, 0, "bhnd_nvram", 0) == NULL) | |||||
| device_printf(parent, "add bhnd_nvram failed\n"); | |||||
| } | |||||
| static int | static int | ||||
| chipc_sprom_probe(device_t dev) | chipc_sprom_probe(device_t dev) | ||||
| { | { | ||||
| struct chipc_caps *caps; | struct chipc_caps *caps; | ||||
| device_t chipc; | device_t chipc; | ||||
| int error; | int error; | ||||
| chipc = device_get_parent(dev); | chipc = device_get_parent(dev); | ||||
| Show All 27 Lines | chipc_sprom_attach(device_t dev) | ||||
| error = bhnd_sprom_attach(dev, caps->sprom_offset); | error = bhnd_sprom_attach(dev, caps->sprom_offset); | ||||
| BHND_CHIPC_DISABLE_SPROM(chipc); | BHND_CHIPC_DISABLE_SPROM(chipc); | ||||
| return (error); | return (error); | ||||
| } | } | ||||
| static device_method_t chipc_sprom_methods[] = { | static device_method_t chipc_sprom_methods[] = { | ||||
| /* Device interface */ | /* Device interface */ | ||||
| DEVMETHOD(device_identify, chipc_sprom_identify), | |||||
| DEVMETHOD(device_probe, chipc_sprom_probe), | DEVMETHOD(device_probe, chipc_sprom_probe), | ||||
| DEVMETHOD(device_attach, chipc_sprom_attach), | DEVMETHOD(device_attach, chipc_sprom_attach), | ||||
| DEVMETHOD_END | DEVMETHOD_END | ||||
| }; | }; | ||||
| DEFINE_CLASS_1(bhnd_nvram, chipc_sprom_driver, chipc_sprom_methods, sizeof(struct bhnd_sprom_softc), bhnd_sprom_driver); | DEFINE_CLASS_1(bhnd_nvram, chipc_sprom_driver, chipc_sprom_methods, sizeof(struct bhnd_sprom_softc), bhnd_sprom_driver); | ||||
| DRIVER_MODULE(bhnd_chipc_sprom, bhnd_chipc, chipc_sprom_driver, bhnd_nvram_devclass, NULL, NULL); | DRIVER_MODULE(bhnd_chipc_sprom, bhnd_chipc, chipc_sprom_driver, bhnd_nvram_devclass, NULL, NULL); | ||||
| MODULE_DEPEND(bhnd_chipc_sprom, bhnd, 1, 1, 1); | MODULE_DEPEND(bhnd_chipc_sprom, bhnd, 1, 1, 1); | ||||
| MODULE_DEPEND(bhnd_chipc_sprom, bhnd_chipc, 1, 1, 1); | MODULE_DEPEND(bhnd_chipc_sprom, bhnd_chipc, 1, 1, 1); | ||||
| MODULE_DEPEND(bhnd_chipc_sprom, bhnd_sprom, 1, 1, 1); | MODULE_DEPEND(bhnd_chipc_sprom, bhnd_sprom, 1, 1, 1); | ||||
| MODULE_VERSION(bhnd_chipc_sprom, 1); | MODULE_VERSION(bhnd_chipc_sprom, 1); | ||||