• Benjamin Collins's avatar
    powerpc: Add support for CTS-1000 GPIO controlled system poweroff · 5611fe48
    Benjamin Collins authored
    CTS-1000 is based on P4080. GPIO 27 is used to signal the FPGA to
    switch off power, and also associates IRQ 8 with front-panel button
    press (which we use to call orderly_poweroff()).
    
    The relevant device-tree looks like this:
    
    	gpio0: gpio@130000 {
    		compatible = "fsl,qoriq-gpio";
    		reg = <0x130000 0x1000>;
    		interrupts = <55 2 0 0>;
    		#gpio-cells = <2>;
    		gpio-controller;
    
    		/* Allows powering off the system via GPIO signal. */
    		gpio-halt@27 {
    			compatible = "sgy,gpio-halt";
    			gpios = <&gpio0 27 0>;
    			interrupts = <8 1 0 0>;
    		};
    	};
    
    Because the driver cannot match on sgy,gpio-halt (because the node is never
    processed through of_platform), it matches on fsl,qoriq-gpio and then
    checks child nodes for the matching sgy,gpio-halt. This also ensures that
    the GPIO controller is detected prior to sgy_cts1000's probe callback,
    since that node wont match via of_platform until the controller is
    registered.
    
    Also, because the GPIO handler for triggering system poweroff might sleep,
    the IRQ uses a workqueue to call orderly_poweroff().
    
    As a final note, this driver may be expanded for other features specific to
    the CTS-1000.
    Signed-off-by: default avatarBen Collins <ben.c@servergy.com>
    Cc: Jack Smith <jack.s@servergy.com>
    Cc: Vihar Rai <vihar.r@servergy.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    5611fe48
Makefile 1.22 KB