I have a grbl board that runs on an Atmega328p. On the board I have also provided the ability to control the stepper drivers through an external control step and dir signals. The schematics are shown here. For the sake of simplicity, the Atmega328p's ISP part of the schematic is shown. Now since the datasheet for the MCU says that when its not powered, the MCU pins should not see voltages more than Vcc+0.5V and less than -0.5V. Which is why the control signals from the Atmega328p are OR'd with the external signal inputs. The limit and spindle signals are buffered through a dual buffer.
Now on another revision of the board without this added feature of being driven from an external control logic, everything works great. However, on this board, I'm not able to program the Arduino bootloader using the ISP header (using a Pocket AVR programmer). I'm was not sure if these OR chips and the buffer were interfering somehow which is why I removed them from the board and I'm still not able to program the Atmega328p with the Arduino bootloader. To eliminate a kaput programmer as the cause for the issue, I tried using the programmer on the earlier version board and everything works great there.
TL;DR, ISP programming won't work on this board and I'm not sure if the added OR and buffer chips are interfering. Any help would be appreciated.