Here's how I'm doing it. On an interface where the private VLAN (i.e., the PC) is on VLAN3 and the VoIP VLAN is VLAN2:
interface FastEthernet0/17
switchport trunk encapsulation dot1q
switchport mode trunk
switchport trunk native vlan 3
switchport voice vlan 2
switchport priority extend cos 0
All untagged packets will be asigned to VLAN3, but the Cisco IP phone will have its packets tagged for VLAN2.