Arnaud Ebalard | 298ff01 | 2015-02-13 14:40:35 -0800 | [diff] [blame^] | 1 | Intersil ISL12057 I2C RTC/Alarm chip |
| 2 | |
| 3 | ISL12057 is a trivial I2C device (it has simple device tree bindings, |
| 4 | consisting of a compatible field, an address and possibly an interrupt |
| 5 | line). |
| 6 | |
| 7 | Nonetheless, it also supports an option boolean property |
| 8 | ("isil,irq2-can-wakeup-machine") to handle the specific use-case found |
| 9 | on at least three in-tree users of the chip (NETGEAR ReadyNAS 102, 104 |
| 10 | and 2120 ARM-based NAS); On those devices, the IRQ#2 pin of the chip |
| 11 | (associated with the alarm supported by the driver) is not connected |
| 12 | to the SoC but to a PMIC. It allows the device to be powered up when |
| 13 | RTC alarm rings. In order to mark the device has a wakeup source and |
| 14 | get access to the 'wakealarm' sysfs entry, this specific property can |
| 15 | be set when the IRQ#2 pin of the chip is not connected to the SoC but |
| 16 | can wake up the device. |
| 17 | |
| 18 | Required properties supported by the device: |
| 19 | |
| 20 | - "compatible": must be "isil,isl12057" |
| 21 | - "reg": I2C bus address of the device |
| 22 | |
| 23 | Optional properties: |
| 24 | |
| 25 | - "isil,irq2-can-wakeup-machine": mark the chip as a wakeup source, |
| 26 | independently of the availability of an IRQ line connected to the |
| 27 | SoC. |
| 28 | |
| 29 | - "interrupt-parent", "interrupts": for passing the interrupt line |
| 30 | of the SoC connected to IRQ#2 of the RTC chip. |
| 31 | |
| 32 | |
| 33 | Example isl12057 node without IRQ#2 pin connected (no alarm support): |
| 34 | |
| 35 | isl12057: isl12057@68 { |
| 36 | compatible = "isil,isl12057"; |
| 37 | reg = <0x68>; |
| 38 | }; |
| 39 | |
| 40 | |
| 41 | Example isl12057 node with IRQ#2 pin connected to main SoC via MPP6 (note |
| 42 | that the pinctrl-related properties below are given for completeness and |
| 43 | may not be required or may be different depending on your system or |
| 44 | SoC, and the main function of the MPP used as IRQ line, i.e. |
| 45 | "interrupt-parent" and "interrupts" are usually sufficient): |
| 46 | |
| 47 | pinctrl { |
| 48 | ... |
| 49 | |
| 50 | rtc_alarm_pin: rtc_alarm_pin { |
| 51 | marvell,pins = "mpp6"; |
| 52 | marvell,function = "gpio"; |
| 53 | }; |
| 54 | |
| 55 | ... |
| 56 | |
| 57 | }; |
| 58 | |
| 59 | ... |
| 60 | |
| 61 | isl12057: isl12057@68 { |
| 62 | compatible = "isil,isl12057"; |
| 63 | reg = <0x68>; |
| 64 | pinctrl-0 = <&rtc_alarm_pin>; |
| 65 | pinctrl-names = "default"; |
| 66 | interrupt-parent = <&gpio0>; |
| 67 | interrupts = <6 IRQ_TYPE_EDGE_FALLING>; |
| 68 | }; |
| 69 | |
| 70 | |
| 71 | Example isl12057 node without IRQ#2 pin connected to the SoC but to a |
| 72 | PMIC, allowing the device to be started based on configured alarm: |
| 73 | |
| 74 | isl12057: isl12057@68 { |
| 75 | compatible = "isil,isl12057"; |
| 76 | reg = <0x68>; |
| 77 | isil,irq2-can-wakeup-machine; |
| 78 | }; |