+ const uint8_t stat_bit_WPP = (1 << 4);
carldani has preferred shorter variables in the past. we usually don't use such constants and verbose comments (although it would help newbies to understand the code).
i think anyone able to read a datasheet would prefer these inline (if not they should be macros instead). look at the other functions in at25.c for examples.
would that buy us anything if used? + /* Supports spi_at26_write_sequential too, but it's untested */
- .write = NULL /* Incompatible Page write */, + .unlock = spi_disable_blockprotect_at26f040, + /* also supports spi_chip_write_1, but nothing else */have you tested spi_chip_write_1?