(First, 起きるとき means when someone is about to get up from bed, not just when someone gets up.)
All the combinations are possible and each of them changes the meaning or the structure of the sentence.
What's important is that topic phrases and conditional clauses are independent from each other and both of them functions as topic parts in a sentence.
- 私は 朝起きるとき 鳥は いつも歌う
The structure of this sentence goes this way.
私は … （いつも歌う）
朝起きるとき … （いつも歌う）
鳥は … （いつも歌う）
Since it has too many topics, it's ambiguous who is the agent to sing or the one who gets up. For example, if 私 is the one who sings, it naturally leads to 鳥を歌う (an obscure expression, though) with 鳥 topicalised and the one who wakes up is probably the same 私. As for the reason why 鳥 is topicalized here, it may be shared information between the listener (in this case, 鳥は is often omitted) or convey contrastive nuance depending on stress in pronunciation or interpretation from context, or because of the both factors.
If 鳥 is the one who sings, it's probably conversation among pet owners. In this case, it's unsure who is the one to get up.
- 私が 朝起きるとき 鳥がいつも歌う
This time, it's like this.
私が朝起きるとき … 鳥がいつも歌う
This can only translate to "everytime I'm getting up, birds sing". When the fact that birds always sing is new information or feels unexpected, it's expressed without being topicalized. If you use 鳥は instead, the issue behind it is parallel to the above.
Edit; In reality, it should be a little more complicated because we have to consider difference between とき and ときは, and the topic-comment model shouldn't be flat.