On Sun, Mar 01, 2015 at 11:27:57PM +0100, Thomas Niederprüm wrote: > The SSD130X controllers are very similar from the configuration point of view. > The configuration registers for the SSD1305/6/7 are bit identical (except the > the VHCOM register and the the default values for clock setup register). This > patch unifies the init code of the controller and adds hardware specific > properties to DT that are needed to correctly initialize the device. > > The SSD130X can be wired to the OLED panel in various ways. Even for the > same controller this wiring can differ from one display module to another > and can not be probed by software. The added DT properties reflect these > hardware decisions of the display module manufacturer. > The 'com-sequential', 'com-lrremap' and 'com-invdir' values define different > possibilities for the COM signals pin configuration and readout direction > of the video memory. The 'segment-remap' allows the inversion of the memory- > to-pin mapping ultimately inverting the order of the controllers output pins. > The 'prechargepX' values need to be adapted according the capacitance of the > OLEDs pixel cells. > > So far these hardware specific bits are hard coded in the init code, making > the driver usable only for one certain wiring of the controller. This patch > makes the driver usable with all possible hardware setups, given a valid hw > description in DT. If the values are not set in DT the default values > according to the controllers datasheet are assumed. Unfortunately, this is not a reasonable thing to do, even if you fix the existing user, there's still the case where you have an older DT with a newer kernel. Keeping (and documenting) the previous defaults is the only easy way to support this. Maxime -- Maxime Ripard, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com