Skip to content

Commit

Permalink
acpi_call-DKMS
Browse files Browse the repository at this point in the history
  • Loading branch information
MiMillieuh authored Aug 21, 2023
1 parent 8275f89 commit 0b81354
Show file tree
Hide file tree
Showing 77 changed files with 4,923 additions and 0 deletions.
41 changes: 41 additions & 0 deletions rpmbuild/BUILD/acpi_call-master/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
obj-m := acpi_call.o

KVER ?= $(shell uname -r)
KDIR ?= /lib/modules/$(KVER)/build
VERSION ?= $(shell cat VERSION)

default:
$(MAKE) -C $(KDIR) M=$(CURDIR) modules

clean:
$(MAKE) -C $(KDIR) M=$(CURDIR) clean

install:
$(MAKE) -C $(KDIR) M=$(CURDIR) modules_install

load:
-/sbin/rmmod acpi_call
/sbin/insmod acpi_call.ko

dkms.conf: dkms.conf.in
sed "s/@@VERSION@@/$(VERSION)/" $^ > $@

dkms-add: dkms.conf
/usr/sbin/dkms add $(CURDIR)

dkms-build: dkms.conf
/usr/sbin/dkms build acpi_call/$(VERSION)

dkms-install: dkms.conf
/usr/sbin/dkms install acpi_call/$(VERSION)

dkms-remove: dkms.conf
/usr/sbin/dkms remove acpi_call/$(VERSION) --all

modprobe-install:
modprobe acpi_call

modprobe-remove:
modprobe -r acpi_call

dev: modprobe-remove dkms-remove dkms-add dkms-build dkms-install modprobe-install
Empty file.
78 changes: 78 additions & 0 deletions rpmbuild/BUILD/acpi_call-master/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# acpi\_call
This is a fork of [acpi_call](https://github.com/mkottman/acpi_call) maintained by the NixOS community.
Patches also for non-NixOS related fixes are welcome!

A simple kernel module that allows one to call ACPI methods by writing the
method name followed by its arguments to `/proc/acpi/call`.

## Notes on dkms and Secure Boot

If that is the way you want to install this module, you can follow
[this guide](https://web.archive.org/web/20210215173902/https://gist.github.com/dop3j0e/2a9e2dddca982c4f679552fc1ebb18df) ([mirror](https://gist.github.com/s-h-a-d-o-w/53c2215e955c3326c6ec8f812a0d2f27))
to have dkms automatically sign the module after building.

## Usage

echo '<call>' | sudo tee /proc/acpi/call

You can then retrieve the result of the call by checking your dmesg or:

sudo cat /proc/acpi/call

An example to turn off the discrete graphics card in a dual graphics
environment (like NVIDIA Optimus):

# turn off discrete graphics card
echo '\_SB.PCI0.PEG1.GFX0.DOFF' > /proc/acpi/call
# turn it back on
echo '\_SB.PCI0.PEG1.GFX0.DON' > /proc/acpi/call

These work on my ASUS K52J notebook, but may not work for you. For a list of
methods to try, see http://linux-hybrid-graphics.blogspot.com/ or try running
the provided script `examples/turn_off_gpu.sh`

It SHOULD be ok to test all of the methods, until you see a drop in battery
drain rate (`grep rate /proc/acpi/battery/BAT0/state`), however it comes
with NO WARRANTY - it may hang your computer/laptop, fail to work, etc.

You can pass parameters to `acpi_call` by writing them after the method,
separated by single space. Currently, you can pass the following parameter
types:

* ACPI_INTEGER - by writing NNN or 0xNNN, where NNN is an integer/hex
* ACPI_STRING - by enclosing the string in quotes: "hello, world"
* ACPI_BUFFER - by writing bXXXX, where XXXX is a hex string without spaces,
or by writing { b1, b2, b3, b4 }, where b1-4 are integers

The status after a call can be read back from `/proc/acpi/call`:

* 'not called' - nothing to report
* 'Error: <description>' - the call failed
* '0xNN' - the call succeeded, and returned an integer
* '"..."' - the call succeeded, and returned a string
* '{0xNN, ...}' - the call succeeded, and returned a buffer
* '[...]' - the call succeeded, and returned a package which may contain the
above types (integer, string and buffer) and other package types


## GUI Alternatives

Found this too difficult? Try to use these programs provided by Marco Dalla Libera and do it via graphic interface. **Note that they is not suitable for arbitrary
APCI calls but intended for turning off discrete graphics only**.

* [acpi_call_GUI (Ubuntu and his derivates)](https://github.com/marcoDallas/acpi_call_GUI)
* [acpi_call_GUI_systemd (all linux distros that support systemd: Ubuntu 16.04+, Fedora, Arch, Mandriva etc.)](https://github.com/marcoDallas/acpi_call_GUI_systemd)

***

Copyright (c) 2010: Michal Kottman

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
1 change: 1 addition & 0 deletions rpmbuild/BUILD/acpi_call-master/VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1.2.2
22 changes: 22 additions & 0 deletions rpmbuild/BUILD/acpi_call-master/acpi_call.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/bin/sh

PACKAGE=acpi_call
ORIGPATH=$PWD

cd $SLACKTRACKSCRATCHDIR
cp -r $ORIGPATH/* .

KERNEL=${KERNEL:-"$(uname -r)"}
VERSION=3.17
chown -R root:root .
chmod -R og-w .

make clean && make && make install

mkdir -vpm755 /usr/doc/${PACKAGE}-${VERSION}
cp -favv README.md examples support /usr/doc/${PACKAGE}-${VERSION}

rm -fr /install
mkdir -vpm755 /install
cat ${ORIGPATH}/slack-desc > /install/slack-desc
sed "s%@KERNEL@%$KERNEL%" ${ORIGPATH}/doinst.sh > /install/doinst.sh
Loading

0 comments on commit 0b81354

Please sign in to comment.