1*c89d94adSVladimir Kondratyev /*- 2*c89d94adSVladimir Kondratyev * Copyright (c) 2022 Beckhoff Automation GmbH & Co. KG 3*c89d94adSVladimir Kondratyev * 4*c89d94adSVladimir Kondratyev * Redistribution and use in source and binary forms, with or without 5*c89d94adSVladimir Kondratyev * modification, are permitted provided that the following conditions 6*c89d94adSVladimir Kondratyev * are met: 7*c89d94adSVladimir Kondratyev * 1. Redistributions of source code must retain the above copyright 8*c89d94adSVladimir Kondratyev * notice, this list of conditions and the following disclaimer. 9*c89d94adSVladimir Kondratyev * 2. Redistributions in binary form must reproduce the above copyright 10*c89d94adSVladimir Kondratyev * notice, this list of conditions and the following disclaimer in the 11*c89d94adSVladimir Kondratyev * documentation and/or other materials provided with the distribution. 12*c89d94adSVladimir Kondratyev * 13*c89d94adSVladimir Kondratyev * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14*c89d94adSVladimir Kondratyev * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15*c89d94adSVladimir Kondratyev * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16*c89d94adSVladimir Kondratyev * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17*c89d94adSVladimir Kondratyev * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18*c89d94adSVladimir Kondratyev * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19*c89d94adSVladimir Kondratyev * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20*c89d94adSVladimir Kondratyev * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21*c89d94adSVladimir Kondratyev * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22*c89d94adSVladimir Kondratyev * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23*c89d94adSVladimir Kondratyev * SUCH DAMAGE. 24*c89d94adSVladimir Kondratyev * 25*c89d94adSVladimir Kondratyev */ 26*c89d94adSVladimir Kondratyev 27*c89d94adSVladimir Kondratyev #include <sys/param.h> 28*c89d94adSVladimir Kondratyev #include <sys/systm.h> 29*c89d94adSVladimir Kondratyev 30*c89d94adSVladimir Kondratyev #include <video/cmdline.h> 31*c89d94adSVladimir Kondratyev 32*c89d94adSVladimir Kondratyev const char * 33*c89d94adSVladimir Kondratyev video_get_options(const char *connector_name) 34*c89d94adSVladimir Kondratyev { 35*c89d94adSVladimir Kondratyev char tunable[64]; 36*c89d94adSVladimir Kondratyev const char *options; 37*c89d94adSVladimir Kondratyev 38*c89d94adSVladimir Kondratyev /* 39*c89d94adSVladimir Kondratyev * A user may use loader tunables to set a specific mode for the 40*c89d94adSVladimir Kondratyev * console. Tunables are read in the following order: 41*c89d94adSVladimir Kondratyev * 1. kern.vt.fb.modes.$connector_name 42*c89d94adSVladimir Kondratyev * 2. kern.vt.fb.default_mode 43*c89d94adSVladimir Kondratyev * 44*c89d94adSVladimir Kondratyev * Example of a mode specific to the LVDS connector: 45*c89d94adSVladimir Kondratyev * kern.vt.fb.modes.LVDS="1024x768" 46*c89d94adSVladimir Kondratyev * 47*c89d94adSVladimir Kondratyev * Example of a mode applied to all connectors not having a 48*c89d94adSVladimir Kondratyev * connector-specific mode: 49*c89d94adSVladimir Kondratyev * kern.vt.fb.default_mode="640x480" 50*c89d94adSVladimir Kondratyev */ 51*c89d94adSVladimir Kondratyev snprintf(tunable, sizeof(tunable), "kern.vt.fb.modes.%s", 52*c89d94adSVladimir Kondratyev connector_name); 53*c89d94adSVladimir Kondratyev if (bootverbose) { 54*c89d94adSVladimir Kondratyev printf("[drm] Connector %s: get mode from tunables:\n", connector_name); 55*c89d94adSVladimir Kondratyev printf("[drm] - %s\n", tunable); 56*c89d94adSVladimir Kondratyev printf("[drm] - kern.vt.fb.default_mode\n"); 57*c89d94adSVladimir Kondratyev } 58*c89d94adSVladimir Kondratyev options = kern_getenv(tunable); 59*c89d94adSVladimir Kondratyev if (options == NULL) 60*c89d94adSVladimir Kondratyev options = kern_getenv("kern.vt.fb.default_mode"); 61*c89d94adSVladimir Kondratyev 62*c89d94adSVladimir Kondratyev return (options); 63*c89d94adSVladimir Kondratyev } 64