Loading Documentation/devicetree/bindings/sound/brcm,cygnus-audio.txt 0 → 100644 +67 −0 Original line number Diff line number Diff line BROADCOM Cygnus Audio I2S/TDM/SPDIF controller Required properties: - compatible : "brcm,cygnus-audio" - #address-cells: 32bit valued, 1 cell. - #size-cells: 32bit valued, 0 cell. - reg : Should contain audio registers location and length - reg-names: names of the registers listed in "reg" property Valid names are "aud" and "i2s_in". "aud" contains a set of DMA, I2S_OUT and SPDIF registers. "i2s_in" contains a set of I2S_IN registers. - clocks: PLL and leaf clocks used by audio ports - assigned-clocks: PLL and leaf clocks - assigned-clock-parents: parent clocks of the assigned clocks (usually the PLL) - assigned-clock-rates: List of clock frequencies of the assigned clocks - clock-names: names of 3 leaf clocks used by audio ports Valid names are "ch0_audio", "ch1_audio", "ch2_audio" - interrupts: audio DMA interrupt number SSP Subnode properties: - reg: The index of ssp port interface to use Valid value are 0, 1, 2, or 3 (for spdif) Example: cygnus_audio: audio@180ae000 { compatible = "brcm,cygnus-audio"; #address-cells = <1>; #size-cells = <0>; reg = <0x180ae000 0xafd>, <0x180aec00 0x1f8>; reg-names = "aud", "i2s_in"; clocks = <&audiopll BCM_CYGNUS_AUDIOPLL_CH0>, <&audiopll BCM_CYGNUS_AUDIOPLL_CH1>, <&audiopll BCM_CYGNUS_AUDIOPLL_CH2>; assigned-clocks = <&audiopll BCM_CYGNUS_AUDIOPLL>, <&audiopll BCM_CYGNUS_AUDIOPLL_CH0>, <&audiopll BCM_CYGNUS_AUDIOPLL_CH1>, <&audiopll BCM_CYGNUS_AUDIOPLL_CH2>; assigned-clock-parents = <&audiopll BCM_CYGNUS_AUDIOPLL>; assigned-clock-rates = <1769470191>, <0>, <0>, <0>; clock-names = "ch0_audio", "ch1_audio", "ch2_audio"; interrupts = <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>; ssp0: ssp_port@0 { reg = <0>; status = "okay"; }; ssp1: ssp_port@1 { reg = <1>; status = "disabled"; }; ssp2: ssp_port@2 { reg = <2>; status = "disabled"; }; spdif: spdif_port@3 { reg = <3>; status = "disabled"; }; }; Documentation/devicetree/bindings/sound/cs53l30.txt 0 → 100644 +44 −0 Original line number Diff line number Diff line CS53L30 audio CODEC Required properties: - compatible : "cirrus,cs53l30" - reg : the I2C address of the device - VA-supply, VP-supply : power supplies for the device, as covered in Documentation/devicetree/bindings/regulator/regulator.txt. Optional properties: - reset-gpios : a GPIO spec for the reset pin. - mute-gpios : a GPIO spec for the MUTE pin. The active state can be either GPIO_ACTIVE_HIGH or GPIO_ACTIVE_LOW, which would be handled by the driver automatically. - cirrus,micbias-lvl : Set the output voltage level on the MICBIAS Pin. 0 = Hi-Z 1 = 1.80 V 2 = 2.75 V - cirrus,use-sdout2 : This is a boolean property. If present, it indicates the hardware design connects both SDOUT1 and SDOUT2 pins to output data. Otherwise, it indicates that only SDOUT1 is connected for data output. * CS53l30 supports 4-channel data output in the same * frame using two different ways: * 1) Normal I2S mode on two data pins -- each SDOUT * carries 2-channel data in the same time. * 2) TDM mode on one signle data pin -- SDOUT1 carries * 4-channel data per frame. Example: codec: cs53l30@48 { compatible = "cirrus,cs53l30"; reg = <0x48>; reset-gpios = <&gpio 54 0>; VA-supply = <&cs53l30_va>; VP-supply = <&cs53l30_vp>; }; drivers/base/property.c +28 −0 Original line number Diff line number Diff line Loading @@ -887,6 +887,34 @@ struct fwnode_handle *device_get_next_child_node(struct device *dev, } EXPORT_SYMBOL_GPL(device_get_next_child_node); /** * device_get_named_child_node - Return first matching named child node handle * @dev: Device to find the named child node for. * @childname: String to match child node name against. */ struct fwnode_handle *device_get_named_child_node(struct device *dev, const char *childname) { struct fwnode_handle *child; /* * Find first matching named child node of this device. * For ACPI this will be a data only sub-node. */ device_for_each_child_node(dev, child) { if (is_of_node(child)) { if (!of_node_cmp(to_of_node(child)->name, childname)) return child; } else if (is_acpi_data_node(child)) { if (acpi_data_node_match(child, childname)) return child; } } return NULL; } EXPORT_SYMBOL_GPL(device_get_named_child_node); /** * fwnode_handle_put - Drop reference to a device node * @fwnode: Pointer to the device node to drop the reference to. Loading include/acpi/acpi_bus.h +7 −0 Original line number Diff line number Diff line Loading @@ -420,6 +420,13 @@ static inline struct acpi_data_node *to_acpi_data_node(struct fwnode_handle *fwn container_of(fwnode, struct acpi_data_node, fwnode) : NULL; } static inline bool acpi_data_node_match(struct fwnode_handle *fwnode, const char *name) { return is_acpi_data_node(fwnode) ? (!strcmp(to_acpi_data_node(fwnode)->name, name)) : false; } static inline struct fwnode_handle *acpi_fwnode_handle(struct acpi_device *adev) { return &adev->fwnode; Loading include/linux/acpi.h +6 −0 Original line number Diff line number Diff line Loading @@ -568,6 +568,12 @@ static inline struct acpi_data_node *to_acpi_data_node(struct fwnode_handle *fwn return NULL; } static inline bool acpi_data_node_match(struct fwnode_handle *fwnode, const char *name) { return false; } static inline struct fwnode_handle *acpi_fwnode_handle(struct acpi_device *adev) { return NULL; Loading Loading
Documentation/devicetree/bindings/sound/brcm,cygnus-audio.txt 0 → 100644 +67 −0 Original line number Diff line number Diff line BROADCOM Cygnus Audio I2S/TDM/SPDIF controller Required properties: - compatible : "brcm,cygnus-audio" - #address-cells: 32bit valued, 1 cell. - #size-cells: 32bit valued, 0 cell. - reg : Should contain audio registers location and length - reg-names: names of the registers listed in "reg" property Valid names are "aud" and "i2s_in". "aud" contains a set of DMA, I2S_OUT and SPDIF registers. "i2s_in" contains a set of I2S_IN registers. - clocks: PLL and leaf clocks used by audio ports - assigned-clocks: PLL and leaf clocks - assigned-clock-parents: parent clocks of the assigned clocks (usually the PLL) - assigned-clock-rates: List of clock frequencies of the assigned clocks - clock-names: names of 3 leaf clocks used by audio ports Valid names are "ch0_audio", "ch1_audio", "ch2_audio" - interrupts: audio DMA interrupt number SSP Subnode properties: - reg: The index of ssp port interface to use Valid value are 0, 1, 2, or 3 (for spdif) Example: cygnus_audio: audio@180ae000 { compatible = "brcm,cygnus-audio"; #address-cells = <1>; #size-cells = <0>; reg = <0x180ae000 0xafd>, <0x180aec00 0x1f8>; reg-names = "aud", "i2s_in"; clocks = <&audiopll BCM_CYGNUS_AUDIOPLL_CH0>, <&audiopll BCM_CYGNUS_AUDIOPLL_CH1>, <&audiopll BCM_CYGNUS_AUDIOPLL_CH2>; assigned-clocks = <&audiopll BCM_CYGNUS_AUDIOPLL>, <&audiopll BCM_CYGNUS_AUDIOPLL_CH0>, <&audiopll BCM_CYGNUS_AUDIOPLL_CH1>, <&audiopll BCM_CYGNUS_AUDIOPLL_CH2>; assigned-clock-parents = <&audiopll BCM_CYGNUS_AUDIOPLL>; assigned-clock-rates = <1769470191>, <0>, <0>, <0>; clock-names = "ch0_audio", "ch1_audio", "ch2_audio"; interrupts = <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>; ssp0: ssp_port@0 { reg = <0>; status = "okay"; }; ssp1: ssp_port@1 { reg = <1>; status = "disabled"; }; ssp2: ssp_port@2 { reg = <2>; status = "disabled"; }; spdif: spdif_port@3 { reg = <3>; status = "disabled"; }; };
Documentation/devicetree/bindings/sound/cs53l30.txt 0 → 100644 +44 −0 Original line number Diff line number Diff line CS53L30 audio CODEC Required properties: - compatible : "cirrus,cs53l30" - reg : the I2C address of the device - VA-supply, VP-supply : power supplies for the device, as covered in Documentation/devicetree/bindings/regulator/regulator.txt. Optional properties: - reset-gpios : a GPIO spec for the reset pin. - mute-gpios : a GPIO spec for the MUTE pin. The active state can be either GPIO_ACTIVE_HIGH or GPIO_ACTIVE_LOW, which would be handled by the driver automatically. - cirrus,micbias-lvl : Set the output voltage level on the MICBIAS Pin. 0 = Hi-Z 1 = 1.80 V 2 = 2.75 V - cirrus,use-sdout2 : This is a boolean property. If present, it indicates the hardware design connects both SDOUT1 and SDOUT2 pins to output data. Otherwise, it indicates that only SDOUT1 is connected for data output. * CS53l30 supports 4-channel data output in the same * frame using two different ways: * 1) Normal I2S mode on two data pins -- each SDOUT * carries 2-channel data in the same time. * 2) TDM mode on one signle data pin -- SDOUT1 carries * 4-channel data per frame. Example: codec: cs53l30@48 { compatible = "cirrus,cs53l30"; reg = <0x48>; reset-gpios = <&gpio 54 0>; VA-supply = <&cs53l30_va>; VP-supply = <&cs53l30_vp>; };
drivers/base/property.c +28 −0 Original line number Diff line number Diff line Loading @@ -887,6 +887,34 @@ struct fwnode_handle *device_get_next_child_node(struct device *dev, } EXPORT_SYMBOL_GPL(device_get_next_child_node); /** * device_get_named_child_node - Return first matching named child node handle * @dev: Device to find the named child node for. * @childname: String to match child node name against. */ struct fwnode_handle *device_get_named_child_node(struct device *dev, const char *childname) { struct fwnode_handle *child; /* * Find first matching named child node of this device. * For ACPI this will be a data only sub-node. */ device_for_each_child_node(dev, child) { if (is_of_node(child)) { if (!of_node_cmp(to_of_node(child)->name, childname)) return child; } else if (is_acpi_data_node(child)) { if (acpi_data_node_match(child, childname)) return child; } } return NULL; } EXPORT_SYMBOL_GPL(device_get_named_child_node); /** * fwnode_handle_put - Drop reference to a device node * @fwnode: Pointer to the device node to drop the reference to. Loading
include/acpi/acpi_bus.h +7 −0 Original line number Diff line number Diff line Loading @@ -420,6 +420,13 @@ static inline struct acpi_data_node *to_acpi_data_node(struct fwnode_handle *fwn container_of(fwnode, struct acpi_data_node, fwnode) : NULL; } static inline bool acpi_data_node_match(struct fwnode_handle *fwnode, const char *name) { return is_acpi_data_node(fwnode) ? (!strcmp(to_acpi_data_node(fwnode)->name, name)) : false; } static inline struct fwnode_handle *acpi_fwnode_handle(struct acpi_device *adev) { return &adev->fwnode; Loading
include/linux/acpi.h +6 −0 Original line number Diff line number Diff line Loading @@ -568,6 +568,12 @@ static inline struct acpi_data_node *to_acpi_data_node(struct fwnode_handle *fwn return NULL; } static inline bool acpi_data_node_match(struct fwnode_handle *fwnode, const char *name) { return false; } static inline struct fwnode_handle *acpi_fwnode_handle(struct acpi_device *adev) { return NULL; Loading