I have a GPL3-licensed program that supports a specific line of hardware. There is a GPL-2 program that supports a lot of hardware similar to the one I support. It was suggested to me that this other program use my code to add functionality for supporting that hardware I support. I'm open to this. How can it be done without violating either license? I don't want to dual-license my program because I don't want the potential for unscrupulous people exploiting GPL2 loopholes.
As we discuss at more length here, GPLv2 and GPLv3 are incompatible licences: that is, if you combine code under GPLv2 with code under GPLv3, there is no licence that satisfies all the requirements of both upstream licences, and the resulting work cannot be distributed without violating someone's copyright.
The easiest way to do what you want is to relicense your code under GPLv2 (if you are the sole rightsholder) or for them to relicense their project under GPLv3 (if they can). If neither of you is willing or able to do this, code from the two projects cannot be combined.
I note in passing that if their code is licensed not under GPLv2 but under GPLv2+, then the uplift to GPLv3 becomes trivial. Edit: if this route is taken, as you suggest it has been elsewhere, then we should be clear that the GPLv2+ project has had its licence uplifted, and is now GPLv3 (or GPLv3+, at their discretion) - there is no way to combine GPLv2 code and GPLv3 code, and have the result be redistributable.