15
  *   ˆl–äY>”TÔD¨ 	Å�rã`S�ÿÌƒ‚k_†I|¥�+ÃÊ X    /* SPDX-License-Identifier: GPL-2.0 */
/*
 * Lochnagar internals
 *
 * Copyright (c) 2013-2018 Cirrus Logic, Inc. and
 *                         Cirrus Logic International Semiconductor Ltd.
 *
 * Author: Charles Keepax <ckeepax@opensource.cirrus.com>
 */

#include <linux/device.h>
#include <linux/mutex.h>
#include <linux/regmap.h>

#ifndef CIRRUS_LOCHNAGAR_H
#define CIRRUS_LOCHNAGAR_H

enum lochnagar_type {
	LOCHNAGAR1,
	LOCHNAGAR2,
};

/**
 * struct lochnagar - Core data for the Lochnagar audio board driver.
 *
 * @type: The type of Lochnagar device connected.
 * @dev: A pointer to the struct device for the main MFD.
 * @regmap: The devices main register map.
 * @analogue_config_lock: Lock used to protect updates in the analogue
 * configuration as these must not be changed whilst the hardware is processing
 * the last update.
 */
struct lochnagar {
	enum lochnagar_type type;
	struct device *dev;
	struct regmap *regmap;

	/* Lock to protect updates to the analogue configuration */
	struct mutex analogue_config_lock;
};

/* Register Addresses */
#define LOCHNAGAR_SOFTWARE_RESET                             0x00
#define LOCHNAGAR_FIRMWARE_ID1                               0x01
#define LOCHNAGAR_FIRMWARE_ID2                               0x02

/* (0x0000)  Software Reset */
#define LOCHNAGAR_DEVICE_ID_MASK                           0xFFFC
#define LOCHNAGAR_DEVICE_ID_SHIFT                               2
#define LOCHNAGAR_REV_ID_MASK                              0x0003
#define LOCHNAGAR_REV_ID_SHIFT                                  0

int lochnagar_update_config(struct lochnagar *lochnagar);

#endif
  d   ˆl–ß=¿Jµ5*q@½p/\*bÑ¿ÎƒiçYX‘¤~VÅ€M¾  JWltŸd—ß=¿J	Å4Ÿº‚ œPÜe›€uLZ7ÿ{“à‚Ø´3¤ýBB´­‚¢CU7ÊÇÎ 	    /**
 * @output wp-admin/js/link.js
 */

/* global postboxes, deleteUserSetting, setUserSetting, getUserSetting */

jQuery( function($) {

	var newCat, noSyncChecks = false, syncChecks, catAddAfter;

	$('#link_name').trigger( 'focus' );
	// Postboxes.
	postboxes.add_postbox_toggles('link');

	/**
	 * Adds event that opens a particular category tab.
	 *
	 * @ignore
	 *
	 * @return {boolean} Always returns false to prevent the default behavior.
	 */
	$('#category-tabs a').on( 'click keyup keydown', function( event ){
		var t = $(this).attr('href');
		if ( event.type === 'keydown' && event.key === ' ' ) {
			event.preventDefault();
		}
		if ( ( event.type === 'keyup' && event.key === ' ' ) || ( event.type === 'keydown' && event.key === 'Enter' ) || event.type === 'click' ) {
			event.preventDefault();
			$('#category-tabs a').removeAttr( 'aria-selected' ).attr( 'tabindex', '-1' );
			$(this).attr( 'aria-selected', 'true' ).removeAttr( 'tabindex' );
			$(this).parent().addClass('tabs').siblings('li').removeClass('tabs');
			$('.tabs-panel').hide();
			$(t).show();
			if ( '#categories-all' == t ) {
				deleteUserSetting('cats');
			} else {
				setUserSetting('cats','pop');
			}
			return false;
		}
		if ( event.type === 'keyup' && ( event.key === 'ArrowRight' || event.key === 'ArrowLeft' ) ) {
			$(this).attr( 'tabindex', '-1' );
			let next = $(this).parent('li').next();
			let prev = $(this).parent('li').prev();
			if ( next.length > 0 ) {
				next.find('a').removeAttr( 'tabindex');
				next.find('a').trigger( 'focus' );
			} else {
				prev.find('a').removeAttr( 'tabindex');
				prev.find('a').trigger( 'focus' );
			}
		}
	});
	if ( getUserSetting('cats') )
		$('#category-tabs a[href="#categories-pop"]').trigger( 'click' );

	// Ajax Cat.
	newCat = $('#newcat').one( 'focus', function() { $(this).val( '' ).removeClass( 'form-input-tip' ); } );

	/**
	 * After adding a new category, focus on the category add input field.
	 *
	 * @return {void}
	 */
	$('#link-category-add-submit').on( 'click', function() { newCat.focus(); } );

	/**
	 * Synchronize category checkboxes.
	 *
	 * This function makes sure that the checkboxes are synced between the all
	 * categories tab and the most used categories tab.
	 *
	 * @since 2.5.0
	 *
	 * @return {void}
	 */
	syncCh