2000rpm seems a little high, as John has said if the IDL signal is shorted to ground the ECU should cut fuel at approx 1600rpm and then return at approx 900rpm. If the idle is a steady 2000rpm then double and triple check the TPS and wiring, short the IDL terminal at the TPS connector and at the ECU and also confirm the E2 sensor ground has no resistance to earth (check the resistance between the middle pin of the TPS connector and body ground with the ignition ON). It's worth keeping in mind both the TPS and the THW sensors (along with everything else) use E2 for a ground so a problem here could account for the code 22 your seeing.
Regarding the idle speed itself, personally I would be looking for an inlet manifold air leak. The first thing to do is remove all vacuum hoses from the inlet manifold and block the ports off (would probably be best to leave the map sensor connected, just double check the hose is in good condition). If this has no affect on the idle speed, break out the WD40 and start spraying it around and see if has any affect on the idle speed.