This oft-misused errno, "Operation not supported by device", is supposed to mean only one thing: you are trying to perform a class of operations on a device that doesn't support that type. For instance, with cdevsw operations, some devices may have no read or write handlers, so attempted to read(2) or write(2) on one of those devices should give you an ENODEV error.

The mistake comes when a programmer gets confused about this and ENOTTY. ENOTTY is only for the error of improper ioctl(2) calls for the device, and ENODEV is only for everything but ioctl.