Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ae685eff authored by Johan Hovold's avatar Johan Hovold Committed by Greg Kroah-Hartman
Browse files

USB: mos7840: fix port_probe flow



Remove temporary do-while(0) loop used to keep changes minimal.

Fixup indentation, remove some line breaks, and replace break with goto
to maintain flow.

Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 80c00750
Loading
Loading
Loading
Loading
+166 −183
Original line number Diff line number Diff line
@@ -2340,10 +2340,7 @@ static int mos7840_port_probe(struct usb_serial_port *port)

	pnum = port->number - serial->minor;

	/* FIXME: remove do-while(0) loop used to keep stable patch minimal.
	 */
	do {
		dev_dbg(&port->dev, "mos7840_startup: configuring port %d............\n", pnum);
	dev_dbg(&port->dev, "mos7840_startup: configuring port %d\n", pnum);
	mos7840_port = kzalloc(sizeof(struct moschip_port), GFP_KERNEL);
	if (mos7840_port == NULL) {
		dev_err(&port->dev, "%s - Out of memory\n", __func__);
@@ -2371,23 +2368,19 @@ static int mos7840_port_probe(struct usb_serial_port *port)
		mos7840_port->SpRegOffset = 0x0;
		mos7840_port->ControlRegOffset = 0x1;
		mos7840_port->DcrRegOffset = 0x4;
		} else if ((mos7840_port->port_num == 2)
			   && (serial->num_ports == 4)) {
	} else if ((mos7840_port->port_num == 2) && (serial->num_ports == 4)) {
		mos7840_port->SpRegOffset = 0x8;
		mos7840_port->ControlRegOffset = 0x9;
		mos7840_port->DcrRegOffset = 0x16;
		} else if ((mos7840_port->port_num == 2)
			   && (serial->num_ports == 2)) {
	} else if ((mos7840_port->port_num == 2) && (serial->num_ports == 2)) {
		mos7840_port->SpRegOffset = 0xa;
		mos7840_port->ControlRegOffset = 0xb;
		mos7840_port->DcrRegOffset = 0x19;
		} else if ((mos7840_port->port_num == 3)
			   && (serial->num_ports == 4)) {
	} else if ((mos7840_port->port_num == 3) && (serial->num_ports == 4)) {
		mos7840_port->SpRegOffset = 0xa;
		mos7840_port->ControlRegOffset = 0xb;
		mos7840_port->DcrRegOffset = 0x19;
		} else if ((mos7840_port->port_num == 4)
			   && (serial->num_ports == 4)) {
	} else if ((mos7840_port->port_num == 4) && (serial->num_ports == 4)) {
		mos7840_port->SpRegOffset = 0xc;
		mos7840_port->ControlRegOffset = 0xd;
		mos7840_port->DcrRegOffset = 0x1c;
@@ -2400,7 +2393,7 @@ static int mos7840_port_probe(struct usb_serial_port *port)
			mos7840_port->ControlRegOffset, &Data);
	if (status < 0) {
		dev_dbg(&port->dev, "Reading ControlReg failed status-0x%x\n", status);
			break;
		goto out;
	} else
		dev_dbg(&port->dev, "ControlReg Reading success val is %x, status%d\n", Data, status);
	Data |= 0x08;	/* setting driver done bit */
@@ -2412,7 +2405,7 @@ static int mos7840_port_probe(struct usb_serial_port *port)
			mos7840_port->ControlRegOffset, Data);
	if (status < 0) {
		dev_dbg(&port->dev, "Writing ControlReg failed(rx_disable) status-0x%x\n", status);
			break;
		goto out;
	} else
		dev_dbg(&port->dev, "ControlReg Writing success(rx_disable) status%d\n", status);

@@ -2423,7 +2416,7 @@ static int mos7840_port_probe(struct usb_serial_port *port)
			(__u16) (mos7840_port->DcrRegOffset + 0), Data);
	if (status < 0) {
		dev_dbg(&port->dev, "Writing DCR0 failed status-0x%x\n", status);
			break;
		goto out;
	} else
		dev_dbg(&port->dev, "DCR0 Writing success status%d\n", status);

@@ -2432,7 +2425,7 @@ static int mos7840_port_probe(struct usb_serial_port *port)
			(__u16) (mos7840_port->DcrRegOffset + 1), Data);
	if (status < 0) {
		dev_dbg(&port->dev, "Writing DCR1 failed status-0x%x\n", status);
			break;
		goto out;
	} else
		dev_dbg(&port->dev, "DCR1 Writing success status%d\n", status);

@@ -2441,23 +2434,21 @@ static int mos7840_port_probe(struct usb_serial_port *port)
			(__u16) (mos7840_port->DcrRegOffset + 2), Data);
	if (status < 0) {
		dev_dbg(&port->dev, "Writing DCR2 failed status-0x%x\n", status);
			break;
		goto out;
	} else
		dev_dbg(&port->dev, "DCR2 Writing success status%d\n", status);

	/* write values in clkstart0x0 and clkmulti 0x20 */
	Data = 0x0;
		status = mos7840_set_reg_sync(port,
					 CLK_START_VALUE_REGISTER, Data);
	status = mos7840_set_reg_sync(port, CLK_START_VALUE_REGISTER, Data);
	if (status < 0) {
		dev_dbg(&port->dev, "Writing CLK_START_VALUE_REGISTER failed status-0x%x\n", status);
			break;
		goto out;
	} else
		dev_dbg(&port->dev, "CLK_START_VALUE_REGISTER Writing success status%d\n", status);

	Data = 0x20;
		status = mos7840_set_reg_sync(port,
					CLK_MULTI_REGISTER, Data);
	status = mos7840_set_reg_sync(port, CLK_MULTI_REGISTER, Data);
	if (status < 0) {
		dev_dbg(&port->dev, "Writing CLK_MULTI_REGISTER failed status-0x%x\n", status);
		goto error;
@@ -2466,18 +2457,15 @@ static int mos7840_port_probe(struct usb_serial_port *port)

	/* write value 0x0 to scratchpad register */
	Data = 0x00;
		status = mos7840_set_uart_reg(port,
						SCRATCH_PAD_REGISTER, Data);
	status = mos7840_set_uart_reg(port, SCRATCH_PAD_REGISTER, Data);
	if (status < 0) {
		dev_dbg(&port->dev, "Writing SCRATCH_PAD_REGISTER failed status-0x%x\n", status);
			break;
		goto out;
	} else
		dev_dbg(&port->dev, "SCRATCH_PAD_REGISTER Writing success status%d\n", status);

	/* Zero Length flag register */
		if ((mos7840_port->port_num != 1)
		    && (serial->num_ports == 2)) {

	if ((mos7840_port->port_num != 1) && (serial->num_ports == 2)) {
		Data = 0xff;
		status = mos7840_set_reg_sync(port,
				(__u16) (ZLP_REG1 +
@@ -2486,7 +2474,7 @@ static int mos7840_port_probe(struct usb_serial_port *port)
				(__u16)(ZLP_REG1 + ((__u16) mos7840_port->port_num)));
		if (status < 0) {
			dev_dbg(&port->dev, "Writing ZLP_REG%d failed status-0x%x\n", pnum + 2, status);
				break;
			goto out;
		} else
			dev_dbg(&port->dev, "ZLP_REG%d Writing success status%d\n", pnum + 2, status);
	} else {
@@ -2498,7 +2486,7 @@ static int mos7840_port_probe(struct usb_serial_port *port)
				(__u16)(ZLP_REG1 + ((__u16) mos7840_port->port_num) - 0x1));
		if (status < 0) {
			dev_dbg(&port->dev, "Writing ZLP_REG%d failed status-0x%x\n", pnum + 1, status);
				break;
			goto out;
		} else
			dev_dbg(&port->dev, "ZLP_REG%d Writing success status%d\n", pnum + 1, status);

@@ -2523,25 +2511,20 @@ static int mos7840_port_probe(struct usb_serial_port *port)
		mos7840_port->led_timer1.function = mos7840_led_off;
		mos7840_port->led_timer1.expires =
			jiffies + msecs_to_jiffies(LED_ON_MS);
			mos7840_port->led_timer1.data =
						(unsigned long)mos7840_port;
		mos7840_port->led_timer1.data = (unsigned long)mos7840_port;

		init_timer(&mos7840_port->led_timer2);
			mos7840_port->led_timer2.function =
						mos7840_led_flag_off;
		mos7840_port->led_timer2.function = mos7840_led_flag_off;
		mos7840_port->led_timer2.expires =
			jiffies + msecs_to_jiffies(LED_OFF_MS);
			mos7840_port->led_timer2.data =
						(unsigned long)mos7840_port;
		mos7840_port->led_timer2.data = (unsigned long)mos7840_port;

		mos7840_port->led_flag = false;

		/* Turn off LED */
			mos7840_set_led_sync(port,
						MODEM_CONTROL_REGISTER, 0x0300);
		mos7840_set_led_sync(port, MODEM_CONTROL_REGISTER, 0x0300);
	}
	} while (0);

out:
	if (pnum == serial->num_ports - 1) {
		/* Zero Length flag enable */
		Data = 0x0f;