Digital read on port D always returns low

About the only thing that will kill a port is some kind of overload such as high voltage or negative voltage. If your device has a socketed ATmega328P you can buy a replacement for about $5. Be sure to get a chip with the Arduino UNO bootloader burned in if you don't already have an ISP programmer.

ATmega328 with Arduino Optiboot (Uno) - DEV-10524 - SparkFun Electronics $5.50

http://www.amazon.com/ATMEGA328P-PU-with-Arduino-Bootloader-Uno/dp/B007SH0D0A $2.95

http://store.nkcelectronics.com/arduino-uno-ready-avr-atmega328p-microcontrol328.html $6.00