Skip to content

Commit

Permalink
serial: max310x: Correction of the initial setting of the MODE1 bits …
Browse files Browse the repository at this point in the history
…for various supported ICs.

The MODE1 register bits have different values for different ICs.
This patch corrects the initial setting of this register in accordance
with the datasheets, which will allow you to get the expected values
when debugging the driver.

Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Alexander Shiyan authored and Greg Kroah-Hartman committed Feb 8, 2019
1 parent 9c6a258 commit f233ea4
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions drivers/tty/serial/max310x.c
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,7 @@
struct max310x_devtype {
char name[9];
int nr;
u8 mode1;
int (*detect)(struct device *);
void (*power)(struct uart_port *, int);
};
Expand Down Expand Up @@ -410,27 +411,31 @@ static void max14830_power(struct uart_port *port, int on)
static const struct max310x_devtype max3107_devtype = {
.name = "MAX3107",
.nr = 1,
.mode1 = MAX310X_MODE1_AUTOSLEEP_BIT | MAX310X_MODE1_IRQSEL_BIT,
.detect = max3107_detect,
.power = max310x_power,
};

static const struct max310x_devtype max3108_devtype = {
.name = "MAX3108",
.nr = 1,
.mode1 = MAX310X_MODE1_AUTOSLEEP_BIT,
.detect = max3108_detect,
.power = max310x_power,
};

static const struct max310x_devtype max3109_devtype = {
.name = "MAX3109",
.nr = 2,
.mode1 = MAX310X_MODE1_AUTOSLEEP_BIT,
.detect = max3109_detect,
.power = max310x_power,
};

static const struct max310x_devtype max14830_devtype = {
.name = "MAX14830",
.nr = 4,
.mode1 = MAX310X_MODE1_IRQSEL_BIT,
.detect = max14830_detect,
.power = max14830_power,
};
Expand Down Expand Up @@ -1257,9 +1262,8 @@ static int max310x_probe(struct device *dev, struct max310x_devtype *devtype,
MAX310X_BRGDIVLSB_REG + offs, &ret);
} while (ret != 0x01);

regmap_update_bits(s->regmap, MAX310X_MODE1_REG + offs,
MAX310X_MODE1_AUTOSLEEP_BIT,
MAX310X_MODE1_AUTOSLEEP_BIT);
regmap_write(s->regmap, MAX310X_MODE1_REG + offs,
devtype->mode1);
}

uartclk = max310x_set_ref_clk(dev, s, freq, xtal);
Expand Down Expand Up @@ -1293,10 +1297,6 @@ static int max310x_probe(struct device *dev, struct max310x_devtype *devtype,
max310x_port_write(&s->p[i].port, MAX310X_IRQEN_REG, 0);
/* Clear IRQ status register */
max310x_port_read(&s->p[i].port, MAX310X_IRQSTS_REG);
/* Enable IRQ pin */
max310x_port_update(&s->p[i].port, MAX310X_MODE1_REG,
MAX310X_MODE1_IRQSEL_BIT,
MAX310X_MODE1_IRQSEL_BIT);
/* Initialize queue for start TX */
INIT_WORK(&s->p[i].tx_work, max310x_wq_proc);
/* Initialize queue for changing LOOPBACK mode */
Expand Down

0 comments on commit f233ea4

Please sign in to comment.