Module Name: src Committed By: tnn Date: Tue Oct 22 22:03:27 UTC 2019
Modified Files: src/sys/dev/ic: ssdfb.c ssdfbvar.h Log Message: allow to have a per-product init function To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/dev/ic/ssdfb.c cvs rdiff -u -r1.3 -r1.4 src/sys/dev/ic/ssdfbvar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/ic/ssdfb.c diff -u src/sys/dev/ic/ssdfb.c:1.7 src/sys/dev/ic/ssdfb.c:1.8 --- src/sys/dev/ic/ssdfb.c:1.7 Tue Oct 22 21:41:01 2019 +++ src/sys/dev/ic/ssdfb.c Tue Oct 22 22:03:27 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ssdfb.c,v 1.7 2019/10/22 21:41:01 tnn Exp $ */ +/* $NetBSD: ssdfb.c,v 1.8 2019/10/22 22:03:27 tnn Exp $ */ /* * Copyright (c) 2019 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ssdfb.c,v 1.7 2019/10/22 21:41:01 tnn Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ssdfb.c,v 1.8 2019/10/22 22:03:27 tnn Exp $"); #include "opt_ddb.h" @@ -72,7 +72,7 @@ static void ssdfb_eraserows(void *, int, static void ssdfb_cursor(void *, int, int, int); /* hardware interface */ -static int ssdfb_init(struct ssdfb_softc *); +static int ssdfb_init_ssd1306(struct ssdfb_softc *); static int ssdfb_set_contrast(struct ssdfb_softc *, uint8_t, bool); static int ssdfb_set_display_on(struct ssdfb_softc *, bool, bool); static int ssdfb_set_mode(struct ssdfb_softc *, u_int); @@ -100,7 +100,8 @@ static void ssdfb_ddb_trap_callback(int) static const char *ssdfb_controller_names[] = { [SSDFB_CONTROLLER_UNKNOWN] = "unknown", [SSDFB_CONTROLLER_SSD1306] = "Solomon Systech SSD1306", - [SSDFB_CONTROLLER_SH1106] = "Sino Wealth SH1106" + [SSDFB_CONTROLLER_SH1106] = "Sino Wealth SH1106", + [SSDFB_CONTROLLER_SSD1322] = "Solomon Systech SSD1322" }; /* @@ -124,7 +125,8 @@ static const struct ssdfb_product ssdfb_ .p_default_contrast = 0x7f, .p_multiplex_ratio = 0x3f, .p_chargepump_cmd = SSD1306_CMD_SET_CHARGE_PUMP, - .p_chargepump_arg = SSD1306_CHARGE_PUMP_ENABLE + .p_chargepump_arg = SSD1306_CHARGE_PUMP_ENABLE, + .p_init = ssdfb_init_ssd1306 }, { .p_product_id = SSDFB_PRODUCT_SH1106_GENERIC, @@ -143,7 +145,8 @@ static const struct ssdfb_product ssdfb_ .p_default_contrast = 0x80, .p_multiplex_ratio = 0x3f, .p_chargepump_cmd = SH1106_CMD_SET_CHARGE_PUMP_7V4, - .p_chargepump_arg = SSDFB_CMD_NOP + .p_chargepump_arg = SSDFB_CMD_NOP, + .p_init = ssdfb_init_ssd1306 }, { .p_product_id = SSDFB_PRODUCT_ADAFRUIT_938, @@ -161,7 +164,8 @@ static const struct ssdfb_product ssdfb_ .p_default_contrast = 0x8f, .p_multiplex_ratio = 0x3f, .p_chargepump_cmd = SSD1306_CMD_SET_CHARGE_PUMP, - .p_chargepump_arg = SSD1306_CHARGE_PUMP_ENABLE + .p_chargepump_arg = SSD1306_CHARGE_PUMP_ENABLE, + .p_init = ssdfb_init_ssd1306 }, { .p_product_id = SSDFB_PRODUCT_ADAFRUIT_931, @@ -179,7 +183,8 @@ static const struct ssdfb_product ssdfb_ .p_default_contrast = 0x8f, .p_multiplex_ratio = 0x1f, .p_chargepump_cmd = SSD1306_CMD_SET_CHARGE_PUMP, - .p_chargepump_arg = SSD1306_CHARGE_PUMP_ENABLE + .p_chargepump_arg = SSD1306_CHARGE_PUMP_ENABLE, + .p_init = ssdfb_init_ssd1306 } }; @@ -294,7 +299,7 @@ ssdfb_attach(struct ssdfb_softc *sc, int /* * Initialize hardware. */ - error = ssdfb_init(sc); + error = p->p_init(sc); if (error) goto out; @@ -581,7 +586,7 @@ ssdfb_cursor(void *cookie, int on, int r } static int -ssdfb_init(struct ssdfb_softc *sc) +ssdfb_init_ssd1306(struct ssdfb_softc *sc) { int error; uint8_t cmd[2]; Index: src/sys/dev/ic/ssdfbvar.h diff -u src/sys/dev/ic/ssdfbvar.h:1.3 src/sys/dev/ic/ssdfbvar.h:1.4 --- src/sys/dev/ic/ssdfbvar.h:1.3 Tue Oct 22 21:40:10 2019 +++ src/sys/dev/ic/ssdfbvar.h Tue Oct 22 22:03:27 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ssdfbvar.h,v 1.3 2019/10/22 21:40:10 tnn Exp $ */ +/* $NetBSD: ssdfbvar.h,v 1.4 2019/10/22 22:03:27 tnn Exp $ */ /* * Copyright (c) 2019 The NetBSD Foundation, Inc. @@ -209,6 +209,8 @@ #define SSD1322_COMMAND_UNLOCK_MAGIC 0x12 #define SSD1322_COMMAND_LOCK_MAGIC 0x16 +struct ssdfb_softc; + typedef enum { SSDFB_CONTROLLER_UNKNOWN=0, SSDFB_CONTROLLER_SSD1306=1, @@ -254,6 +256,7 @@ struct ssdfb_product { uint8_t p_multiplex_ratio; uint8_t p_chargepump_cmd; uint8_t p_chargepump_arg; + int (*p_init)(struct ssdfb_softc *); }; struct ssdfb_softc {