{
        struct snd_tscm *tscm = substream->rmidi->private_data;
 
+       snd_fw_async_midi_port_init(&tscm->out_ports[substream->number]);
+
        /* Initialize internal status. */
        tscm->running_status[substream->number] = 0;
        tscm->on_sysex[substream->number] = 0;
 
                        port);
 }
 
-int snd_fw_async_midi_port_init(struct snd_fw_async_midi_port *port,
-               struct fw_unit *unit)
+void snd_fw_async_midi_port_init(struct snd_fw_async_midi_port *port)
 {
-       port->parent = fw_parent_device(unit);
        port->idling = true;
-       port->next_ktime = 0;
        port->error = false;
-
-       INIT_WORK(&port->work, midi_port_work);
-
-       return 0;
 }
 
 static void handle_midi_tx(struct fw_card *card, struct fw_request *request,
                goto error;
 
        for (i = 0; i < TSCM_MIDI_OUT_PORT_MAX; i++) {
-               err = snd_fw_async_midi_port_init(
-                               &tscm->out_ports[i], tscm->unit);
-               if (err < 0)
-                       goto error;
+               tscm->out_ports[i].parent = fw_parent_device(tscm->unit);
+               tscm->out_ports[i].next_ktime = 0;
+               INIT_WORK(&tscm->out_ports[i].work, midi_port_work);
        }
 
        return err;
 
 int snd_tscm_stream_lock_try(struct snd_tscm *tscm);
 void snd_tscm_stream_lock_release(struct snd_tscm *tscm);
 
-int snd_fw_async_midi_port_init(struct snd_fw_async_midi_port *port,
-               struct fw_unit *unit);
+void snd_fw_async_midi_port_init(struct snd_fw_async_midi_port *port);
 
 static inline void
 snd_fw_async_midi_port_run(struct snd_fw_async_midi_port *port,